本节书摘来自异步社区出版社《程序员的呐喊》一书中的第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 ——其中不乏高一新生!

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

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

    本节书摘来自异步社区出版社<程序员的呐喊>一书中的第1章,第1.2节,作者:[美]Steve Yegge ,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.2 ...

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

    本节书摘来自异步社区出版社<程序员的呐喊>一书中的第1章,第1.6节,作者:[美]Steve Yegge ,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.6 ...

  3. 《程序员的呐喊》读书笔记

    <程序员的呐喊>是Google一位老程序员的经验总结,文中展现了他对各大语言如Java.C/C++.Lisp.Python.Ruby.Perl等的极端观点,比如大力吐槽C++,极力推崇C. ...

  4. 程序员的呐喊--读书感悟

    <程序员的呐喊>是Google一位老程序员的经验总结,文中展现了他对各大语言如Java.C/C++.Lisp.Python.Ruby.Perl等的极端观点,比如大力吐槽C++,极力推崇C. ...

  5. 吐槽java之《程序员的呐喊》读后总结

    <程序员的呐喊>读后总结 --关于java的批判 一.写在总结前面的一些废话 <程序员的呐喊>(后文简称呐喊),是一本非常有趣的散篇,全文都是作者对目前软件开发界的看法,主要翻 ...

  6. 《程序员的呐喊》读书笔记(下)

    接着<程序员的呐喊>读书笔记(上),继续分享下篇,这次干货比较多哦,有静动态类型的优缺点.强弱类型系统的对抗.设计模式.程序员的数学.编译器的重要性以及保守派自由派的较量,一时消化不了的建 ...

  7. 《程序员的呐喊》读书笔记(上)

    <程序员的呐喊>是Google一位老程序员的经验总结,文中展现了他对各大语言如Java.C/C++.Lisp.Python.Ruby.Perl等的极端观点,比如大力吐槽C++,极力推崇C. ...

  8. 程序员的用户界面设计手册1-9章(作者: Joel Spolsky 译: 梅普华 MSWord繁简转换)

    程序员的用户界面设计手册1-9章(作者: Joel Spolsky 译: 梅普华 MSWord繁简转换) http://chinesetrad.joelonsoftware.com/uibook/ch ...

  9. [ZT]程序员的用户界面设计手册1-9章(作者: Joel Spolsky 译: 梅普华 MSWord繁简转换)

    程序员的用户界面设计手册 第1章: 控制你的环境使你快乐 作者: Joel Spolsky 约耳.斯珀儿斯奇 译: 梅普华 2000年4月10日 大多数我认识的C++程序高手都厌恶写用户界面的程序. ...

最新文章

  1. 采摘工人月薪十万却无人应聘,英澳农场求助 AI
  2. NFS为lamp提供共享存储实践
  3. android view clip,Android 自定义View Clip
  4. C++中构造函数和析构函数的调用顺序
  5. hibernate oracle驱动,出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误...
  6. 牛客网【每日一题】4月28日题目精讲 美味菜肴
  7. 越老越值钱,除了程序员!
  8. 【服务器实战搭建】centos7下使用yum安装mysql
  9. C++知识整理 内存模型和命名空间
  10. ros开发增加clion常用模板及初始化配置(六)
  11. 【李宏毅机器学习】03:误差Error
  12. 5-7Linux 起源,与Unix的联系,与Windows的不同
  13. 6月读书《有效的管理者》笔记
  14. 做潮人,还是outman?
  15. 实验吧_网站综合渗透_Discuz!
  16. 共享租赁汽车,必将重新设计中国汽车产业链游戏规则
  17. Logstash的grok正则匹配自定义
  18. openlayers地图初始化
  19. CentOS7.5下安装Mycat连接MySQL8.0
  20. CentOS7服务器软件安装——Tomcat

热门文章

  1. 椭圆曲线:超级完整的椭圆曲线学习记录
  2. 记一次对微信引流网站的简单渗透测试
  3. CPU卡COS系统文件结构详解
  4. 【LeetCode】825. Friends Of Appropriate Ages 解题报告(Python)
  5. 计算机服务用什么打开,bonjour是什么软件_在win7电脑中打开itunes程序却提示bonjour服务已被禁用怎么办?...
  6. [LeetCode] 871. Minimum Number of Refueling Stops @ python
  7. 清华姚班教授: 「读博,你真的想好了吗?」与 UIUC 王鸿伟「读博,我想好了!」...
  8. 子网掩码、IP地址数、掩码长度对照表
  9. 海康iv4200支持多少_追赶极速:海康威视C2000 Pro 2T固态硬盘到手简评
  10. 【面向对象应用~.~】——项目开发团队分配管理软件