且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-30 10:54:42

本节书摘来自异步社区出版社《程序员的呐喊》一书中的第1章,第1.1节,作者:【美】Steve Yegge ,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 作者手记:巴别塔

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

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

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

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

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

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

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