If programming languages were cars…

  • C   is a racing car that goes incredibly fast but breaks down every fifty miles.
  • C++   is a souped-up 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.
  • Java   is a family station wagon. It’s easy to drive, it’s not too fast, and you can’t hurt yourself.
  • C#   is a competing model of family station wagons. Once you use this, you’re never allowed to use the competitors’ products again.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 people think was better than the sum of the parts.
  • 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.
  • 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.
  • Cobol   is reputed to be a car, but no self-respecting driver will ever admit having driven one.
  • 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.
  • 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.
  • 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]
  • 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. The designer of the car is rumored to be self-similar to a part of his own anatomy.



Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: