This is an update to an old series of jokes about computer languages being like cars. I've added some more modern languages to the list. Any suggestions are welcome!

Note: It seems that Digg/Reddit/StumbleUpon have dug/read/stumbled upon this page, with the result that I've received a ton of new suggestions. This is just an illustration of Vanier's Law: "Given enough time, any programming-related rant, no matter how inane, will eventually be posted on Reddit/Digg/StumbleUpon etc." Thanks to all who sent me their suggestions; I've sifted through them and added the ones I liked to the page. I've also added some suggestions from the comments page on digg.com below, without permission; if you are the author and object, I'll be happy to remove it. If I didn't post your suggestion, please realize that it's not personal; it's only because I'm an asshole with no sense of humor.

Also, some people speculated on my own preference in languages. I'm a functional programming weenie (some would even say a smug one), so my preferences run roughly like this: Haskell > Ocaml > Scheme/Lisp > Erlang > Python/Ruby > C. There are other languages I like (e.g. Prolog and Smalltalk), but I don't work with them to any significant degree. And there are languages I hate, which I won't talk about here in the interests of avoiding pointless flame wars (by which I mean people sending me emails telling me "YOU SUCK!"). Also, TCL fans: thanks for the suggestions, but I didn't find one that seemed funny enough and/or apt enough to include, so keep trying.

Believe it or not, this page has been translated into Russian. Thanks to Nick Gorbikoff for the translation. This article has also been translated into Arabic. I don't know the author's name, but I thank him (or her) too.

Enjoy...

Ada is a tank. A butt-ugly tank that never breaks down. People laugh uncontrollably if you tell them you drive Ada, but really, do you want to be driving a sports car in a war zone? [from Amit Dubey]

Assembly Language is a bare engine; you have to build the car yourself and manually supply it with gas while it's running, but if you're careful it can go like a bat out of hell. [From "Subterfug" off digg.com:] Assembly Language: you are the car.

Basic is a simple car useful for short drives to the local shops. Once popular with learner drivers, it has recently been stripped down to a shell and rebuilt by a major manufacturer, The new version has been refurbished for longer journeys, leaving only cosmetic similarities to the original model. [from Przemyslaw Wrzos]

C is a racing car that goes incredibly fast but breaks down every fifty miles.

Cobol is reputed to be a car, but no self-respecting driver will ever admit having driven one.

C# is a competing model of family station wagons. Once you use this, you're never allowed to use the competitors' products again.

C++ is a souped-up version of the C racing car with dozens of extra features that only breaks down every 250 miles, but when it does, nobody can figure out what went wrong.

Eiffel is a car that includes a built-in driving instructor with a French accent. He will help you quickly identify and learn from your mistakes, but don't you dare argue with him or he'll insult you and throw you out of the car. [From Daniel Prager with some embellishments]

Erlang is a fleet of cars that all cooperate to get you where you want to go. It takes practice to be able to drive with one foot in each of several cars, but once you learn how you can drive over terrain that would be very hard to navigate any other way. In addition, because you're using so many cars, it doesn't matter if a few of them break down.

Forth is a car you build yourself from a kit. Your car doesn't have to look or behave like anyone else's car. However, a Forth car will only go backwards. [By "256byteram", on a comment on Digg.com (I couldn't resist):] FORTH LOVE IF HONK THEN !

Fortran is a pretty primitive car; it'll go very quickly as long as you are only going along roads that are perfectly straight. It is believed that learning to drive a Fortran car makes it impossible to learn to drive any other model.

Java is a family station wagon. It's easy to drive, it's not too fast, and you can't hurt yourself.

Haskell is an incredibly elegantly-designed and beautiful car, which is rumored to be able to drive over extremely strange terrain. The one time you tried to drive it, it didn't actually drive along the road; instead, it made copies of itself and the road, with each successive copy of the road having the car a little further along. It's supposed to be possible to drive it in a more conventional way, but you don't know enough math to figure out how. [Monadic version:] Haskell is not really a car; it's an abstract machine in which you give a detailed description of what the process of driving would be like if you were to do it. You have to put the abstract machine inside another (concrete) machine in order to actually do any driving. You're not supposed to ask how the concrete machine works. There is also a way to take multiple abstract machines and make a single abstract machine, which you can then give to the concrete machine to make multiple trips one after another.

Lisp looks like a car, but with enough tweaking you can turn it into a pretty effective airplane or submarine. [from Paul Tanimoto:] Lisp: At first it doesn't seem to be a car at all, but now and then you spot a few people driving it around. After a point you decide to learn more about it and you realize it's actually a car that can make more cars. You tell your friends, but they all laugh and say these cars look way too weird. You still keep one in your garage, hoping one day they will take over the streets.

Mathematica is a well-designed car that borrowed a lot from the Lisp car without giving it nearly the credit it deserved. It can solve equations to determine the most efficient way to get to the destination, but it costs a fortune

Matlab is a car designed for novice drivers going on short trips over terrain similar to the terrain the Mathematica car is usually driven over. It is very comfortable when driving over this terrain, but if you go off the trail even a little the car becomes so hard to drive that more snobby drivers refuse to even acknowledge that it's a car.

Ocaml is a very sexy European car. It's not quite as fast as C, but it never breaks down, so you end up going further in less time. However, because it's French, none of the controls are in the usual places.

Perl is supposed to be a pretty cool car, but the driver's manual is incomprehensible. Also, even if you can figure out how to drive a Perl car, you won't be able to drive anyone else's.

PHP is the Oscar Mayer Wienermobile, it's bizarre and hard to handle but everybody still wants to drive it. [from "CosmicJustice" off of digg.com]

Prolog is fully automatic: you tell it what your destination looks like, and it does all the driving for you. [Addendum from Paul Graham:] However, the effort required to specify most destinations is equivalent to the effort of driving there. [I forget who suggested this one:] Prolog is a car with a unique trial-and-error GPS system. It will go down the road looking for your destination, and if it gets to the end of the street without finding it, it will back up and try the next street over and continue until you get where you need to go.

Python is a great beginner's car; you can drive it without a license. Unless you want to drive really fast or on really treacherous terrain, you may never need another car.

Ruby is a car that was formed when the Perl, Python and Smalltalk cars were involved in a three-way collision. A Japanese mechanic found the pieces and put together a car which many drivers think is better than the sum of the parts. Other drivers, however, grumble that a lot of the controls of the Ruby car have been duplicated or triplicated, with some of the duplicate controls doing slightly different things in odd circumstances, making the car harder to drive than it ought to be. A redesign is rumored to be in the works.

Smalltalk is a small car originally designed for people who were just learning to drive, but it was designed so well that even experienced drivers enjoy riding in it. It doesn't drive very fast, but you can take apart any part of it and change it to make it more like what you wanted it to be. One oddity is that you don't actually drive it; you send it a message asking it to go somewhere and it either does or tells you that it didn't understand what you were asking.