If programming languages were cars... (经典程序员幽默好帖)

发布于 2011/06/27 18:17
字数 1606
阅读 153
收藏 1

If programming languages were cars...

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 intoArabic. I don't know the author's name, but I thank him (or her) too.


The list

  • 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):]


  • 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.

  • Visual Basic   is a car that drives you. [from "yivkX360" on digg.com, no doubt channeling Yakov Smirnov]

Go back to my home page. Last updated May 29, 2011

Mike Vanier ( mvanier@cs.caltech.edu)


上一篇: 共产和社区
粉丝 16
博文 54
码字总数 24118
作品 0
私信 提问

1)If programming languages were cars... 编程语言和车进行类比的老笑话了,不过作者加入了最新的一些语言,如Ruby等 2)If Architects Had To Work Like Web Designers 给架构师们好好上一...


本文与大家分享一些Python编程语言的入门书籍,其中不乏经典。有关书籍的介绍,大部分截取自官方介绍。 Python基础教程(Begining Python) 《Python基础教程(第2版·修订版)》是经典的Pyt...


今天也在国外程序员 Senthil Kumar 的博客看到了他最喜欢的10条编程语录。其中大部分已经分享过,现再次综合分享给大家。 (提示:正如广为流传的经典段子,有些经典语录有多个版本,作者署名...

Ruby 作者松本行弘锁定移动计算

Ruby编程语言作者松本行弘受访Infoworld时,谈论了流行语言的过去、现在和未来,指出移动是未来的方向。 松本行弘说他的目标是让程序员快乐编程,现在他想帮助嵌入式领域和高性能计算领域的程...


下边是小编整理的程序员最喜欢的图灵套装书,都是火爆畅销的技术书。一定会有你需要的~ “计算机程序设计艺术”系列——计算机科学领域的瑰宝 http://item.jd.com/11848569.html(京东:卷1...





【TencentOS tiny】深度源码分析(4)——消息队列

消息队列 在前一篇文章中【TencentOS tiny学习】源码分析(3)——队列 我们描述了TencentOS tiny的队列实现,同时也点出了TencentOS tiny的队列是依赖于消息队列的,那么我们今天来看看消息...


这就是那个 JAVA 类 package cn.itcast.bigdata;import java.util.HashMap;import org.apache.hadoop.hive.ql.exec.UDF;public class PhoneNbrToArea extends UDF{privat......


SpringBoot学习,第二天 目录:1、Springboot整合Listener 2、Springboot访问静态资源 3、异常处理 4、热部署 一、SpringBoot整合Listener 两种方式完成组件的注册 1、通过注解扫描完成组件的...

BeginnersBook Perl 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...


阿里面经 阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推。 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。 然后我...