《程序员的呐喊》一一1.1 作者手记:巴别塔

1.1 作者手记:巴别塔

程序员的呐喊
这篇是本书最老的文章,写于2004年9月,当时我已经在亚马逊干了差不多6年了。当时亚马逊正饱受其庞大代码库的困扰,我曾经一度认为它的代码库规模失控是因为语言问题,后来才意识到企业文化是主因。

首当其冲的是,亚马逊的主流语言里有两门非常啰嗦的语言C++和Java,外加一门精练的语言Perl。但是Perl正受到排挤,渐渐退出主流。我觉得这是因为Perl程序员能用更少的人力完成和Java/C++程序员同样的工作量,所以要是比人多的话,他们注定是赢不了的。根据我们的估算,亚马逊的代码量比它的功能数量膨胀得更快。

第二个因素是,亚马逊的很多技术问题完全可以用自定义领域语言(DSL)的方式来解决。比如大规模的查询、分布式计算、产品配置等,他们写了太多不必要的代码了。我后来跳到 Google,发现他们为这些完全一样的问题专门编写了强大的自定义DSL。这证实了我心中的疑虑,亚马逊的工程师在这些问题上和无头苍蝇没什么两样。我敢说这句话误伤的概率极低。

最后一点就是,和绝大多数公司一样,亚马逊非常抗拒用新语言来解决问题。他们会避免使用表达能力更强的通用语言,比如Ruby或Erlang。他们也几乎从来不会想到自己去写DSL。

结果就是,我知道他们的问题在哪里,也知道怎么解决这些问题,但是我的主管和经理们完全不买我的账。除了少数例外,大多数人都抱着非礼勿视,非礼勿听的态度:任何问题都可以用C++来解决。要是你喜欢Java的话,也同样照此办理。其他的办法都不在考虑之列。他们连听一听的意愿都没有。

终于有一天我忍无可忍,决定彻底发泄一下对这些亚马逊同事的不满。

这大概是我第一篇认认真真写的博客。在这篇名为“牢骚”的文章里我承认自己有点失控,花了整整一半的篇幅来发牢骚。当时肯定是没人读的啦。但是这些年来,很多人都跑来跟我说,正是因为读了这篇文章,他们才决定花毕生精力去掌握Emacs和Lisp ——其中不乏高一新生!

时间: 2024-08-30 13:59:57

《程序员的呐喊》一一1.1 作者手记:巴别塔的相关文章

《程序员的呐喊》一一1.11 作者手记:弱类型机制够不够强

1.11 作者手记:弱类型机制够不够强 程序员的呐喊 这是本书最老的文章之一.我在亚马逊时代写了差不多50篇博客,其中只有两篇被收录到本书中,这是一篇,另一篇是<巴别塔>. 这篇博客写于我离职亚马逊的前一个月.我在尽量保证公平公正的情况下,准确地总结了亚马逊在核心理念上的不同.我观察了这些理念上的差异在团队里的Perl和Java阵营之间,不同的数据建模风格,以及其他很多地方所产生的冲突. 当时我关注的焦点主要是和(编程语言的)类型安全以及(关系型数据库设计的)结构安全.后来我将这个问题进一步提

《程序员的呐喊》一一1.12 作者手记:弱类型机制够不够强

1.12 作者手记:弱类型机制够不够强 程序员的呐喊 这是本书最老的文章之一.我在亚马逊时代写了差不多50篇博客,其中只有两篇被收录到本书中,这是一篇,另一篇是<巴别塔>. 这篇博客写于我离职亚马逊的前一个月.我在尽量保证公平公正的情况下,准确地总结了亚马逊在核心理念上的不同.我观察了这些理念上的差异在团队里的Perl和Java阵营之间,不同的数据建模风格,以及其他很多地方所产生的冲突. 当时我关注的焦点主要是和(编程语言的)类型安全以及(关系型数据库设计的)结构安全.后来我将这个问题进一步提

《程序员的呐喊》一一1.9 作者手记:变换

1.9 作者手记:变换 程序员的呐喊 这篇是我为奥莱利的Ruby博客而写的文章,我原来是那里的客座博主,后来觉得厌烦就退出了.当然我还是写了三四篇东西的. 事实上回想起来,我退出的主要原因是稍后不久我就不怎么写Ruby了.不是因为我讨厌Ruby(正相反,我非常喜欢它),而是因为它在Google流行不起来.所以日常工作中除了写点自己的小脚本,用到它的机会真的很少.超过这个规模就会招致怀疑的目光. (尽管我在<巴别塔>那篇文章里说Google比亚马逊在语言方面更擅长,比如在适当的时候采用强大的DS

《程序员的呐喊》一一1.3 作者手记:名词王国里的执行

1.3 作者手记:名词王国里的执行 程序员的呐喊这是我第一篇比较出名的牢骚,所以印象很深.2005年年中的时候,我离开亚马逊加入Google,顺便把一些内部分享的旧文章转到了公共博客上.12月的时候,这些文章通过reddit和Hacker News的推荐慢慢获得了一些关注--一下子我贴的每篇博客都吸引了几千人的阅读量. 与此同时,当时我在Google做一个很讨厌的Java项目.这块代码我就是看不对眼.之前做过的几个Java项目都还可以忍受,但这个实在是设计过头了.在这里我就不点名了.不过代码真的

《程序员的呐喊》一一1.7 作者手记:摩尔定律就是胡扯

1.7 作者手记:摩尔定律就是胡扯 程序员的呐喊这篇文章剖析语言演化的角度略有不同,主要关注的是并行计算,因此它有很强的个人色彩,而且这也是我最爱的话题之一.这里有太多八卦可以聊了. 我注意到这篇文章发表的时间是"名词王国里的执行"发表的前6天.看来那个月我的心情肯定不太好. Google一直在慢慢解决困扰我的问题,进展不快但一步一个脚印.C++还是用得太多,更不用说Java了.不过这些年来,他们越来越擅长用更多的机器和更少的代码来工作.按照这个速度,或许不远的将来真的有一天会出现一些

《程序员的呐喊》一一1.2 巴别塔

1.2 巴别塔 程序员的呐喊 我在这篇文章里会大致谈一谈对各种语言的看法--本来是想给这个月的亚马逊开发者期刊投稿的,后来却发现改来改去都难以示人. 一方面是因为,我时不时地就用上一些粗鲁的字眼,说出一些得罪人的话来,实在是不适合在亚马逊的官方刊物上发表.所以我还是把它贴在博客上,反正也没人会看.除了你.没错,就是你.你好! 另一个原因是,我还没写完呢,通篇都是东一榔头西一棒子的片段,完全没有经过润色打磨.这也是把它放在博客里的又一个理由,不用去考虑漂亮和完整性的问题,可以想到哪儿就写到哪儿.爱

《程序员的呐喊》一一1.6 神秘机器的笔记

1.6 神秘机器的笔记 程序员的呐喊过去8年来(2004年6月起至今)我一直在写各种各样的牢骚,主要是一些和软件工程有关联的问题. 之所以这样愤青是因为我真的被一些"诡异"的世界观给搞糊涂了,持这些观点的人(在我看来)差不多占了所有我遇到过的程序员的一半,包括网上碰到的和现实里认识的人. 就在上个星期,我终于想明白了这个困扰了我快10年的问题,现在我知道它到底是怎么回事了. 今天这篇文章就是要以全新的理念来展示软件工程.这些东西其实一点就通.等你看到的时候肯定想抽自己一嘴巴,怎么早没想

《程序员的呐喊》一一1.4 名词王国里的执行

1.4 名词王国里的执行 程序员的呐喊 "他们中有些家伙的脾气可大了--特别是动词,最傲气的就是他们--形容词可以随便捏,但动词就不行--不过他们都得听我调遣!不可捉摸!我就说这么多啦!" --矮胖子 1 大家好!今天要讲的是邪恶的Java国王和他满世界消灭动词的故事.(首先要干掉的动词就是"消灭"(to stamp out),取而代之的是VerbEliminatorFactory.create VerbEliminator(currentContext).oper

《程序员的呐喊》一一1.10 变换

1.10 变换 程序员的呐喊 我经常听到有人说Ruby没有自动化的重构工具,所以根本没法用.虽然Ruby将来会具备一些重构功能,但是总会有一些是Java已经自动化,而Ruby没有的.他们说,这是必不可少的功能啊. 对此我表示怀疑. 到底什么是重构?字典里根本就没有这个词. 福勒告诉我们所谓重构,就是通过迭代,将恶心的代码变成优质代码的艺术和科学,是能妆点代码却不会在操作过程中产生破坏的算法,而且正确性都是能证明的. 他的剖析非常出色.他专为Java程序员呈现了一些很不错的技术,有些是早已为大家熟