趣闻:如果编程语言是汽车……
现在,我们来YY一下编程语言,如果编程语言是汽车,又会怎么样?Ada 这是一辆坦克。一个很厚重但很丑的坦克,从不会崩溃。如果你告诉别人你正在驾驶Ada,别人会狂笑不已。但是,你会开着一辆跑车去打战吗? 汇编语言 只是一个祼露在外的引擎。你不得不自己去造车,并向其提供汽油,但你在驾车时要小心,因为他会像一只从地狱放出来的蝙蝠一样。其实,对于汇编语言,你自己才是车。 Basic 是一辆很简单的车,对于一些短途的交通比如去一些超市商店,他是很有用的。以前这是一个对初学者很流行的车,然而,近来它蜕变成脚本,而更新的车型被抛光以应对长途旅程,但那也只是新瓶装旧酒。 C 是一辆赛车,它的速度是令人难以想象的快,可惜的是它每50公里就会损毁一次。 Cobol 号称是一辆车,但是,没有哪个“有自尊的司机”会承认以前驾驶过它。 C# 是一个竞争性的家庭旅行车。一旦你开始使用,你就别想再使用别的竞争者的产品了。 C++ 是一个加大马力的C赛车,其有一堆新增的功能,而且,它只会每250公里损毁一次。可是,一旦它有故障,没人会知道故障发生在哪里。
Eiffel 是一个车,其包括了一个法国口音的内建的驾驶讲师。他会帮你很快的识别你的错误,但是你不能和他争,不然,他会凌辱你后毫不迟疑地把你扔到窗外。 Erlang 是一个汽车车队,你想去哪它都会非常合作。你只需要用一只脚就可以开动好几辆车。但是,一旦你学会了如何在它给你设计的地形上驾驶,你就会很难在别的地形上驾驶了。另外,由于你一次驾驶好几辆车,所以,就算是其中几车损毁了也无关紧要。 Forth 是一辆你通过一些工具可以自己造出来的车。你的这个车不需要像别的车。然后,一辆Forth 车只有倒档。 Fortran 是一个非常漂亮的老爷车。它可以走得很快,但条件是那是一条很直的路,而且路上只有你自己。我们相信,学习去驾驶一辆Fortran车,你就可能去学习别的车型。 Java 也是一个家用旅行车,很容易驾驶,但不是很快,而且这是一个你无法伤害自己的车。 Haskell 是一个令人难以想象的超完美设计的相当漂亮的车,有谣言说,这是一辆要可以行驶在极端怪异地形上的车。有一天,你尝试着要去开它,但你发现它并不是顺着路行驶,而是,它把自己和道路都复制了很多份,每一个道路的复制品上都有一辆车,而这些车的位置都比前一个要往前一些。按理来说,我们可以更便捷地驾驶它,但你却对数据不是很懂,所以,你不知道怎么做。
[Monadic 版:]Haskell 并不是一个真正的车。这是一个抽象机器,你需要给足你是怎么去驾驶汽车的流程描述。你不得不把这些抽象机器放到某一个真实的机器中,这样它才能真正的行驶。你并不需要知道,那个真实的机器是怎么工作的。而且,我们还可以把多个抽象机器作成一个抽象机器,这样,当你把其放进真实机器中时,你就能去很多地方了。 Lisp 看上去像一辆车,但你只需要调整,你可把它变成一个飞机或是一个潜水艇。 首先,这看起来并不像一辆车,但是你会发现还是有人在开他四处走。在你决定去学习驾驶它后,你会意识到这是一辆你可以制造更多的车的车。你告诉你的朋友,但你的朋友们嘲笑你说这个车看起来太怪异了。但就算是这样,你还是始终在你的车库中放着一辆Lisp,并希望有一天你的朋友会开关他到街上。 Mathematica 是一个设置精良的车,其从Lisp借鉴了很多但却没有得到应得的声望。它可以知道什么才是到达目的地最有效的道路,但是那需要运气。 Matlab 是一辆设计给新手司机使用的车,它过可用作一些短途用途,而且,适合它的地形也不多,和是那些“数学车”适合的地形差不多。在这种地面上,驾驶它是非常舒服的,但是一旦你离开适合它的地形,就算是一小辆Matlab的车也会变得很难驾驶。而很多专业的司机都拒绝承认这是一辆车。 Ocaml 是一个很性感的欧洲车。它并不像 C 一样的快,但他永远不会被损毁。然后,这是法国式的,所有的控制装置都不在正常的位置。 Perl 本来应该是一个很酷的车,但是它的驾驶员手册相当的难以理解。另外,即使你能搞懂如何驾驶Perl车,你也不能去驾驶别的车。 Prolog 是一个完全自动化的车:你只要告诉它目的地是什么样的,它就可以带着你去那。然而,说明目的地的工作量和你自己开车到那里的工作时是一样的。[另一个版本] Prolog 这个车有一个独一无二的GPS装置。它会去为你寻找你要到的目的地,如果到了路的尽头还没有找到,那么,他会回来然后再去试另一条路,直到找到你的目的地为止。 Python 是一个相当不错的入门者的车。你没有驾照也可以驾驶它。除非,你真的想把它开得很快,或是在很BT的地形上驾驶。有了它,你可能不再需要别的车。 Ruby 是一个把Perl, Python和Smalltalk三辆车混合起来的一辆拼装车。一个日本的技师找到了Perl, Python和Smalltalk一些碎片并把这些碎片拼成成了一辆车。很多司机认为这个拼装车比其它三个全部加起来都好。而其它一些司机却喃喃道,这个车提供了很多重复的功能,甚至是三重一样的功能,这些重复的功能在不固定的环境下却又有一些细小的不同,这些重复的功能让这个车更难驾驶。有谣言说Ruby这个车要重新设计。 Smalltalk 只是一个小型车,其原来的目的只是为了让大家学习驾驶。但是,这个车设计的太好了,就算是很有经验的老手也很喜欢驾驶它。它开起来并不是很快,但是你可以把这个车的各个部件全部解开,并且换上你像要的部件,或是组装成你喜欢的样子。你可以给他发一个短信告诉它你要去哪,它会带着你去那,或是告诉你它听不懂你在说什么。很人性化的一辆车。 Visual Basic 这是一辆驾驭你的车。
[Monadic 版:]Haskell 并不是一个真正的车。这是一个抽象机器,你需要给足你是怎么去驾驶汽车的流程描述。你不得不把这些抽象机器放到某一个真实的机器中,这样它才能真正的行驶。你并不需要知道,那个真实的机器是怎么工作的。而且,我们还可以把多个抽象机器作成一个抽象机器,这样,当你把其放进真实机器中时,你就能去很多地方了。
PHP 是一个 Oscar Mayer Wienermobile(见右侧的图片),它是一个很怪异的车,但是还是有很多的人喜欢去驾驶它。
转自:http://www.kuqin.com/humor/20091125/74103.html