细数各种编程语言优缺点 (2)

上传人:宝路 文档编号:21463649 上传时间:2017-11-24 格式:DOC 页数:18 大小:61.82KB
返回 下载 相关 举报
细数各种编程语言优缺点 (2)_第1页
第1页 / 共18页
细数各种编程语言优缺点 (2)_第2页
第2页 / 共18页
细数各种编程语言优缺点 (2)_第3页
第3页 / 共18页
细数各种编程语言优缺点 (2)_第4页
第4页 / 共18页
细数各种编程语言优缺点 (2)_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《细数各种编程语言优缺点 (2)》由会员分享,可在线阅读,更多相关《细数各种编程语言优缺点 (2)(18页珍藏版)》请在金锄头文库上搜索。

1、这是我写的旋风式的编程语言简介 我本来为亚马逊开发者杂志本月的期刊写的,但是发现我写的东西没法见人。首先,我偶尔一不小心口出脏话,或者对上帝不恭的话,所以对很官方很正式的亚马逊上发表是不合适的; 所以我就把它塞到我的博客里了,我的博客反正没人看的。除了你以外。是的,只有你会看,你好啊。其次,这是一项进行中的工程,现在只是东打一耙西搞一下,还没有精加工过的。又一个把它写到博客里的很大的理由。不需要很好,或很完整。就是我今天想说的一些话。请随便!我的旋风式简介会讲 C,C+ ,Lisp ,Java,Perl ,( 我们在亚马逊用到的所有语言 ),Ruby (我就是喜欢) ,和 Python,把 P

2、ython 加进来是因为 好吧,你看了就知道了,现在我可不说。C你必须懂 C。为哈? 因为出于所有现实的理由,这个世界上你过去,现在,将来会用到的每一台计算机都是一台冯诺曼机器,而 C 是一种轻量级的,很有表达力的语法,能很好的展现冯诺曼机器的能力。冯诺曼架构就是你每天都用的计算机的架构的标准:一个 CPU,内存,硬盘,一条总线。多核计算机并没有带来本质上的变化。冯诺曼机是一个很方便,很便宜,上世纪五十年代的实现图灵机的技术,图灵机是执行计算的最知名的抽象模型。世 上还有其他的计算的机器。比如,Lisp 机器,是上世纪50年代对 Lisp 计算模型的实现。Lisp 模型是基于 lambda 代

3、数的一种计算语言表示法,后 者是与图灵机同构的一种模型。不像图灵机,lambda 代数能被人类读和写。但是这二者是同等能力的。它们同样精确的表示了计算机能干什么。Lisp 机现在不是很流行了,除了在跳蚤市场里。从谁更受欢迎来说,冯诺曼机器赢了。还有一些其他的计算机,比如神经网络计算机,译者也不知道怎么翻的计算机(cellular automata),但是这些都不够大众化,至少现在是这样的。所以你必须知道 C。还 有一个你必须知道 C 的原因是,Unix 是用 C 写的。巧的是, Windows 也是。基本上所有的其他操作系统都是用 C 写的。因为这些操作系统都是冯诺曼机 的操作系统,你还能用别

4、的吗? 任何跟 C 很不一样的东西都会跟硬件的实际能力相差太远而导致无法满足性能上的需要,至少对一个操作系统来说是这样 至少在上个世纪是这样,碰巧这些系统都 是上个世纪的。你还应该知道 Lisp。你不必用它来干实际工作,虽然它在很多 GNU 的软件里都会很用得着。尤其是,你应该学会 Scheme,Lisp 的一种小巧化的,纯洁的方言。GNU 的版本叫 Guile。他们在麻省理工和加州伯克利教新学生一到两个学期的 Scheme,这些学生都对他们为哈要学这么奇怪的语言抓破脑袋。实话实说,作为第一门学习的语言,这是一个很烂的选择,第二门也是很烂。你应该学会它,最终,但不是作为第一门或第二门语言。这是

5、很难的哦。这是很大的一步。学会怎么用 Lisp 写出像 C 语言的程序是不够的,那没有意义。C 和 Lisp 一个就像红外线,一个就像紫外线,它们分布在光谱的最两端。它俩一个牛逼的地方刚好是另一个了的地方。如 果说,C 是最靠近计算机是如何工作的语言模型,Lisp 就是最能反映计算(注意,这里没有了“机”字,计算机和计算是很不同的!译者注) 是如何工作的模 型。你不需要懂很多 Lisp,真的。紧咬 Scheme 就哦了,因为它是最简单最干净的。其他的 Lisp 已经发展成了很大,很复杂(很好很强大? 译者:-) 的编程环境,就像 C+和 Java,要有很多库啊,工具啊等等之类。那些,你不需要知

6、道。但是你应该能用 Scheme 写程序。如果你能够做出 The Little Schemer 和 The Seasoned Schemer 这两本书里的所有习题,你懂得就够多了,我认为。但是对于你天天要做的编程工作,你应该基于以下条款选择你的语言:库,文档,工具支持,操作系统集成,资源,和一堆其他的东西。这些条款跟计算机如何工作关系很小,但是跟人类如何工作关系甚大。人们还在用很直白的 C 语言写东西。很多东西。你应该懂 C!C+C+ 是地球上最蠢的语言,即使是从蠢这个字的真正意义上出发。C+ 很无厘头。它不知道自己是什么东西。它没有内视(面向对象里的一个概念,译者注 )。C 也没 有,但是

7、C 不是 “面向对象”的,而面向对象很大程度上是关于要让你的程序知道它自己。对象就像演员。所以面向对象语言应该有运行时的自省机制,知道自己是 个什么类的对象。C+不是这样的,真的,你不会那样用它。关于 C:写一个 C 的编译器是那么的简单,以至于你可以用 C 写一个关于 C 的工 具,用起来就像是有内省机制。而 C+呢,基本上是不可解析的,所以如果你想写一个很牛逼的工具用来 比如,告诉你你的虚函数的原型,或者帮你重构你的代 码,你将不得不依赖别人的工具集,因为你自己在除非脑子进屎的情况下是根本不会去写一个 C+的解析器的。而市面上所有的 C+的解析器都很。C+很蠢,你不能用蠢语言创造一个好系统

8、。语言决定世界,蠢语言决定蠢世界。所有的计算都基于抽象。你用低级的东西创造出高级的东西。但是你不能用分子创造出一个城市。尝试使用太低级别的抽象只会给你带来麻烦。我们就惹上麻烦了 (是指亚马逊的员工,还是所有 C+的程序员? 我也不知道,译者注)。理智的情况下,你用 C 写的最大的东东就是一个操作系统。而操作系统其实不是很大的,真的。它们看起来很大,但那是因为它们有很多应用软件,操作系统本身的内核是蛮小的。你 用 C+能写的最大的东东是 也是操作系统。好吧,或许稍微再大点儿。让我们说,再大三倍吧。或者10倍吧。但是操作系统内核最多也就,那啥,一百万行代 码? 所以我说你能用 C+写的最大的系统大

9、概也就是一千万行代码吧,再大的话就开始不行了,这玩意儿你没法控制了,就像恐怖片里的我说的一千万行是指如果你那时候还能让你的系统编译通过的话。我们(在亚马逊,译者注) 有五千万行 C+代码。不,现在还要更多了。我已经不知道有多少行了。上个圣诞节是五千万行,那是九个月前,而它以每季度八百万行的规模增长。增长率本身也增长,妈呀。我们想这个系统里干点啥好像要一万年。一个亚马逊工程师有一次这样描述我们的代码库:“一座很大的屎山,你见过的最大的山,每次你想修正一个 bug,你的工作就是爬到屎山的正中心去。 ”伙计们,那哥们可是在四年前说的这话。他现在已经到更环保绿色的牧场上去了。真是太可惜了,他可是个实实

10、在在的高手啊。这 都是 C+的错。别跟我争论。就是的。我们用的是世上最蠢的语言。这简直有点老板级的蠢,你说呢? (译者注,meta 在计算机术语里通常表示更高一个层次,比如,meta-language,比普通的 language 高一个层次,意思是关于语言的语 言。哲学里应该会经常用到这个词。我不懂哲学,但是我觉得老板们总是比我们高一级,所以 meta-dump 我就翻译成老板级的蠢喽。:-)说 了以上这些难听的话,话得说回来了。用 C+写出漂亮的代码显然是可以的,我的意思是说,这样的代码应该大部分还是 C,偶尔很有品味的,很有节制的用一点 C+。但是这种代码几乎从来不会被写出来。C+ 是个很

11、好玩的游乐场,而如果你把它玩儿得门儿清的话你会觉得自己特牛,所以你总是被诱惑把你知道的所有 的东西都用上。但是那是很难做好的,因为从一开始这个语言就太狗屎了,最终,你会弄得一塌糊涂,即使你很能干。我知道,我说的都是异端邪 说,该被钉到十字架上的。随便吧。我在大学里的时候老喜欢 C+了,因为我那时候就只知道这一门语言。当我听到我的语言教授,Craig Chambers,绝对的厌憎 C+,我想:“为啥呢? 我觉得它挺好的啊” 。而当我听到STL(标准模板库) 的发明者被采访时说他恨 OOP(面向对象编程)时,我更是认为他肯定是磕药了。怎么会有人恨 OOP 呢,而这个人竟然还是 STL 的发明者 ?

12、亲不敬,熟生厌(语出圣经,译者注)。说的是在大多数情况下,跟一件事物熟悉了之后你就失去对它的膜拜尊敬了; 在计算机语言里情况不是这样的。光对一门语言熟悉不会导致你看轻这门语言。你必须成为另一门更优秀的语言的专家(才能让你明白原来那门语言有多么多的问题)。所 以如果你不喜欢我针对 C+大放厥词,请你去学另一门语言并成为一个专家(我推荐 Lisp),只有那时你才有足够的武器与我争论。然而,那时你将不会跟我 争了。你上了我的当了。你也会跟我一样变得不喜欢 C+了,你或许会觉得我这个人很恶心,把你骗得不喜欢自己曾经的最爱了。所以或许你应该把我说的一切都 忘了。C+ 挺好的其实,真的。它就是很棒棒(译者

13、注,作者在这里用了 ducky,这是一个女性喜欢用的夸某物好的词,近来也为玻璃们喜爱)。忘了我说的 话。C+ 不错的。Lisp(我打赌这一节会让你觉得惊讶,即使你已经关注我的博客有一阵了 (译者注,作者也可能是说,即使你成为亚马逊的员工有一阵了)。)亚马逊创业之初,我们有很多明星级的工程师。我不认识他们所有人,但是我认识几个。比如? Shel Kaphan。大拿。 Greg Linden。大拿。Eric Benson。即使在他加入亚马逊之前就已经有自己响亮的名气了。也是大拿。他 们写了 Obidos 服务器。是 Obidos 让亚马逊成功的。只是后来那些生产大便很拿手的工程师,网页开发者,搞前

14、端的人 这些人因为生产大便很拿手而总 是能让经理们满意 只是在后来这些人把 Obidos 搞糟了。(他们的大便 )把整条河都堵了,打个比方说的话。但是 Obidos 是亚马逊最初的成功的一块关 键的基石。这些最早的牛人们在亚马逊神圣的代码库里只允许两种语言:C 和 Lisp。你自己去想吧。当 然,他们所有人都使用 Emacs。靠,Eric Benson 是 XEmacs 的作者之一。这个世界上所有伟大的工程师都在用 Emacs注1。那种世界因你而不同级别的伟大。不是坐在你旁边的格子里的 那哥们那种伟大。也不是 Fred,走廊尽头那哥们。我说的是我们这个行业里最伟大的软件开发者,那些能改变这个工

15、业的面貌的人。像 James Gosling 们(Java 语言设计者 ),Donald Knuth 们(这个人没有听说过的话赶紧改行吧,别搞计算机了),Paul Graham 们 注2,Jamie Zawinski 们,Eric Benson 们。真正的工程师用 Emacs。你必须很有点聪明才能把 Emacs 用好,而如果你能成为一个 Emacs 大师的话它会给你难以置信的牛力。有机 会的话你应该站到 Paul Nordstrom 的肩后看看他是怎么工作的,如果你不相信我的话。对那些一辈子都在用烂 Visual。Net 之类的集成开发环境的人来说,一定会大开眼 界的。Emacs 是那种你可以

16、用100年的编辑器。Shel,Eric,Greg,和其他像他们那样的人,我没有足够幸运能跟他们直接一起工作:他们禁止在这里使用 C+,他们禁止使用 Perl。(或者 Java,为完整起见)。他们是明白人。现在我们都在用 C+,Java 和 Perl 了,所有的代码都用这些语言。我们的前辈们已经到更环保的牧场上去了 (指没有大便的牧场,译者注)。Shel 用 C 写了 Mailman,客服部的人把它用 Lisp 封装了一下。 Emacs-Lisp。你不需要知道 Mailman 是什么东西。除非你是个 Amazon 的 老员工,或许不是搞技术的,而且你曾经不得不让客户哈皮 (只有在这种情况下你才需要知道 Mailman,译者注)。不是间接的,因为你用 C+写的一个狗屎功能跑不起来了,让客户很生气,于是你不得不去搞定它 以恢复客户的哈皮度。不,我是说直接的,意思是,你必须跟他们聊。我们可爱的,不识字的,呱呱其谈的,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号