The most unscientific survey ever
There are a number of good software blogs that I read but there are two that always catch my attention when I see an update scroll through on the RSS feed.
Steve Yegge from Google.
Wil Shipley from Delicious Monster.
They really can’t be more different professionally. Steve works at a mega giant software company while Wil is more or less a one man show who works from a coffee house. Where they are similar though is that they have no fear whatsoever to say anything, no matter how controversial.
Oh, and they are pretty darn funny too. Well, as funny as software guys can be.
Steve’s latest post about the “Next Big Language” did have a laugh out section. I’ll quote for those not wanting to read the whole thing…
Back when I was in the Navy, just out of boot camp, an otherwise entirely forgettable petty officer first class instructor of ours offered us, unasked and free of charge, his sage advice on how to pick up women at a bar: “Go ugly early.” With this declaration, he had made it clear that he and I thought rather differently about certain things in life. But I had to hand it to him: here was a man of conviction. He didn’t care what other people thought of him, or for that matter, what he thought of himself. He had defined his philosophy and he was sticking with it.
And in a sense, he taught me a valuable lesson, although it’s not the one he probably thought he was teaching me. I’ll pass it on to you, unasked and free of charge. If you want to spare yourself a lot of angst in deciding which programming language to use, then I recommend this simple rule: Go ugly early. C++ will go out with you in a heartbeat.
Tee hee hee.
*Sigh*
It’s funny because it’s true.
That then lead me to have a discussion with a couple of different people and we came up with a quick two question survey. I’d be curious to get everyone’s answers to it and rather than muck around with WordPress to get a little button widget thingie just leave your answers as a comment.
1. On a scale of one to five, with one being “Bjarne is the greatest human to have ever lived, well second greatest if you count the guy that invented the burrito” (i.e. I like it) and five being “It’s teh suck,” (i.e. I hate it) how would you rate how much you like C++?
2. What programming language would like to learn more about/use more?
I’ll even start it off.
Question 1: I’d say 3, although I have 4 type leanings.
Question 2: I find Ruby on Rails kind of interesting so I’ll probably go with that.
I’ve also never used Lisp and I hear its great but I’m a little worried it will end up like Guinness.
That’s going to require some explanation.
When I was in college I drank beer. A number of my friends were huge Guinness fans but try as I might to like it I simply hated it. Maybe there’s some weird chemical reaction between me and the beer or it’s some kind of cruel cosmic joke but I just can’t stand the stuff. I’m kinda concerned that I would take to Lisp the same way. (i.e. I’d find it so distasteful that I’d have a Perl chaser. Ugh. I know no good would come from that.)
So there we go, now answer away. It doesn’t hurt and we’ve sterilized the commenting section so the risk of infection is pretty low.

#1 - 4. I can do just about anything I want in C++, and it suits me fine.
#2 - Lisp. If Paul Graham is to be believed, Lisp can do ANYTHING. Even rewrite itself.
And I like Guiness. Staight up. Very cold.
Comment by Mitch Oliver — February 13, 2007 @ 10:14 am
Yeah… I can’t read or write… #1 should have been 2.
Comment by Mitch Oliver — February 13, 2007 @ 10:17 am
Grant asked me to leave a comment. It’s not enough that I’m a loyal reader and gain him enough unique page hits to keep his blog (and his job), he has to solicit me to leave comments. Whatever, I’ll play his games.
What do I think of C++? I rate it a -1. I really wanted to rate it an eleventy-billion, but since Grant’s rating scale is so goofy, that would actually be a bad score. I could go with a negative eleventy-billion, but it just doesn’t sound as cool.
What language do I want to learn more about? I’m going to have to go with Assembly. There’s nothing like a good quality PUSH and POP.
Comment by Jonathan — February 13, 2007 @ 10:18 am
Wait, so 1 is good and 5 is bad? I’ll have to give C++ a 2 then. The language is flexible, which both keeps it from being a 3, but also from being a 1.
It’s not a 3 in my book because it’s flexible enough to almost always do what I need it to. Using C#, sometimes there’s things that are “too” low-level for it to do, so you need to link in a C++ component.
It misses a #1 spot partially due to that flexibility. You want to print a line? Oh, just printf(”stuff”). -er wait, that’s C, but still supported. Maybe you meant cout
Comment by Pete — February 13, 2007 @ 11:45 am
Grrr… WordPress just stops at the brackets. Continuing, with curly replacements:
Maybe you meant cout {{ “stuff”. Well, Windows might prefer Console::Write(”stuff”). Qt land might like QTextStream out(stdout) {{ “stuff” instead. Hmmm… And that’s just printing a simple line.
For upcoming languages, I like to get usable output as quickly as possible. C++ may be flexible, but it’s slow. PHP remains my favorite fastest-to-usable language. C# is what I’ve been toying with now and have been mostly impressed by it.
Anyway, I too was going to run some polls on the Seapine bloggy thing, I’ll have to see if I can find a WordPress poll module of sorts and make Tim install it. I hear we can do that sort of thing.
Comment by Pete — February 13, 2007 @ 11:47 am
I’d have to give it 1, only because it’s the only language (aside from assembly) that I’m able to do anything in. Including some truly painful things that should never be done.
Python is a language I’ve done a little work in, and I’d like to do more. Its Perl designed without the aid of illegal pharmaceuticals.
Comment by Jeff Amfahr — February 13, 2007 @ 1:24 pm
What I find amusing is that Steve has standards that are higher than his POFC. If he really wanted to “go ugly early”, he would have picked C, not C++. Sticking with the ugly woman at the bar metaphor, C++ is the woman at the bar that you give a Colt 45 to lower her objections, because as Billy Dee Williams says “Colt 45. It works every time”. C is when you have to drink the Colt 45 to lower your objections. Kids today, they probably don’t remember that reference.
Now, to answer your questions.
#1. I would rate C++ a 2. I can do just about anything with it, it suits me well, and it runs fast. The only downside is that sometimes it takes you a while to get there, unlike Colt 45. (For the youngsters, one of their other slogans was “Colt 45 Malt Liquor - It gets you there quicker”). $0.99 for a double-deuce and you are off to Shangri-la.
#2. I am split between Lisp and Ruby (with/without Rails). I’ve never been exposed to Lisp other than seeing some code snippets on the net, but it looks very cool and I am left with the impression that there is something special just beyond my edge of understanding, that once I took the next step, I would reach programming Nirvana.
For Ruby, it looks like a very quick-to-implement language that does OO in a way that suits my brain. For example, to find an absolute value of a number, in java you would have
Math.abs(number)
and in Ruby, you would have
number.abs
This just feels more intuitive to me.
The downside to Ruby is that while you might be able to crank out functionality quickly (unlike C++), the performance is poor (unlike C++).
Going back to your initial premise of the “Next Big Language” - if a language existed that felt like Ruby, but had the performance of compiled C++, I would be a happy camper.
Comment by Michael — February 14, 2007 @ 11:17 am
1) C++ is a solid 2. The only way they could make it better, is to go back to C.
Yeah, you heard me right.
You’re the programmer… write the code! Make this machine do what you want and need it to do! BEND IT TO YOUR WILL!
2) Language I’d like to learn? Javascript. Actually, it’s not javascript, per se, but ECMAScript.
Comment by John — February 14, 2007 @ 12:02 pm
1) c++ - is that what you build desktop apps with? Oh it’s been about 4 years since I had to do that crap, I’ll say 4.
2)I use Ruby all the time with WATIR, so I would go with Python - thats what all the Googlers rave about
Comment by Tim — February 14, 2007 @ 12:18 pm
1) I’d say C++ is a good, solid number 2. (Is anyone going to follow that joke?) It isn’t my favorite language but it is one wicked sharp tool.
Like others I appreciate the fact that it will let you do practically anything (for instance, I’ve recently learned about “Placement of Objects” (10.4.11 for those of you following along in Stroustrup’s C++ Programming Language book).) The negative side of the C++ is that it forces you to be very careful with both design and implementation. (When you stand up and declare “I’m in charge here” you best be ready to deal with _everything_.)
I think I’d enjoy working on ‘greenfield’ C++ code on a project that was going to use the STL wisely and had a _great_ architect leading the project.
Objective-C++ (a mix of Objective-C and C++) appears to work nicely though I haven’t done much of it. Need a C++ object in your Obj-C method? Do a new on it right in the obj-C method. Want some Obj-C object in your C++ code? Do a [[Class alloc] init]. Mix and match.
To a certain degree, lately I’ve been less interested in the language itself and more interested in what libraries and development facilities (IDEs, etc.) are available for the language… this doesn’t mean I’m only seeking out the mainstream stuff.
2) I’d really like to be able to work on a project big enough to really learn more about SmallTalk — that doesn’t seem likely, though. And, from what I’ve heard, it doesn’t seem like SmallTalk solutions are very easy to deploy.
On the scripting side of the world, Lua seems very interesting. I’d like to do more with it. (I toyed with some sample scripts when reading through one of the introductory Lua books a while back.)
Comment by Jeff — February 15, 2007 @ 10:53 am
I have worked with many different languages over the years; 6502 assembly, 68000 assembly, Basic, Fortran, LISP, Pascal, C, C++, Objective C, PostScript, Cobol (yes I said Cobol), Visual Basic, PowerBuilder, C#, Java, Perl, JavaScript, XSLT, long forgotten ScriptX, and many others that I have experimented with.
All in all I have found things about each that I have liked and things that I have disliked. And with any language the end result really relies on the programmers mastery of the language. A programmer has to truly understand the strengths and weaknesses of the language they are using and the proper way to code around both.
Although I prefer coding directly to the hardware using assembly, not having to rely on the operating system’s view of how things should be done, I don’t prever having to write my own windowing, menuing, etc. systems each time.
I prefer C++ because it gives you the power when you need it and there are adequate libraries available. I would rate C++ a 2 on Grant’s scale because there are some things that I miss from some of the other languages. The most notable being nested procedures from Pascal.
Dylan, Python, and Ruby are a few of the langauges that are currently of interest to me.
Comment by Mark — February 21, 2007 @ 9:49 am