《程序员的呐喊》一一1.1 作者手记:巴别塔
本节书摘来自异步社区出版社《程序员的呐喊》一书中的第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.2 巴别塔
本节书摘来自异步社区出版社<程序员的呐喊>一书中的第1章,第1.2节,作者:[美]Steve Yegge ,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.2 ...
- 《程序员的呐喊》一一1.6 神秘机器的笔记
本节书摘来自异步社区出版社<程序员的呐喊>一书中的第1章,第1.6节,作者:[美]Steve Yegge ,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.6 ...
- 《程序员的呐喊》读书笔记
<程序员的呐喊>是Google一位老程序员的经验总结,文中展现了他对各大语言如Java.C/C++.Lisp.Python.Ruby.Perl等的极端观点,比如大力吐槽C++,极力推崇C. ...
- 程序员的呐喊--读书感悟
<程序员的呐喊>是Google一位老程序员的经验总结,文中展现了他对各大语言如Java.C/C++.Lisp.Python.Ruby.Perl等的极端观点,比如大力吐槽C++,极力推崇C. ...
- 吐槽java之《程序员的呐喊》读后总结
<程序员的呐喊>读后总结 --关于java的批判 一.写在总结前面的一些废话 <程序员的呐喊>(后文简称呐喊),是一本非常有趣的散篇,全文都是作者对目前软件开发界的看法,主要翻 ...
- 《程序员的呐喊》读书笔记(下)
接着<程序员的呐喊>读书笔记(上),继续分享下篇,这次干货比较多哦,有静动态类型的优缺点.强弱类型系统的对抗.设计模式.程序员的数学.编译器的重要性以及保守派自由派的较量,一时消化不了的建 ...
- 《程序员的呐喊》读书笔记(上)
<程序员的呐喊>是Google一位老程序员的经验总结,文中展现了他对各大语言如Java.C/C++.Lisp.Python.Ruby.Perl等的极端观点,比如大力吐槽C++,极力推崇C. ...
- 程序员的用户界面设计手册1-9章(作者: Joel Spolsky 译: 梅普华 MSWord繁简转换)
程序员的用户界面设计手册1-9章(作者: Joel Spolsky 译: 梅普华 MSWord繁简转换) http://chinesetrad.joelonsoftware.com/uibook/ch ...
- [ZT]程序员的用户界面设计手册1-9章(作者: Joel Spolsky 译: 梅普华 MSWord繁简转换)
程序员的用户界面设计手册 第1章: 控制你的环境使你快乐 作者: Joel Spolsky 约耳.斯珀儿斯奇 译: 梅普华 2000年4月10日 大多数我认识的C++程序高手都厌恶写用户界面的程序. ...
最新文章
- 采摘工人月薪十万却无人应聘,英澳农场求助 AI
- NFS为lamp提供共享存储实践
- android view clip,Android 自定义View Clip
- C++中构造函数和析构函数的调用顺序
- hibernate oracle驱动,出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误...
- 牛客网【每日一题】4月28日题目精讲 美味菜肴
- 越老越值钱,除了程序员!
- 【服务器实战搭建】centos7下使用yum安装mysql
- C++知识整理 内存模型和命名空间
- ros开发增加clion常用模板及初始化配置(六)
- 【李宏毅机器学习】03:误差Error
- 5-7Linux 起源,与Unix的联系,与Windows的不同
- 6月读书《有效的管理者》笔记
- 做潮人,还是outman?
- 实验吧_网站综合渗透_Discuz!
- 共享租赁汽车,必将重新设计中国汽车产业链游戏规则
- Logstash的grok正则匹配自定义
- openlayers地图初始化
- CentOS7.5下安装Mycat连接MySQL8.0
- CentOS7服务器软件安装——Tomcat
热门文章
- 椭圆曲线:超级完整的椭圆曲线学习记录
- 记一次对微信引流网站的简单渗透测试
- CPU卡COS系统文件结构详解
- 【LeetCode】825. Friends Of Appropriate Ages 解题报告(Python)
- 计算机服务用什么打开,bonjour是什么软件_在win7电脑中打开itunes程序却提示bonjour服务已被禁用怎么办?...
- [LeetCode] 871. Minimum Number of Refueling Stops @ python
- 清华姚班教授: 「读博,你真的想好了吗?」与 UIUC 王鸿伟「读博,我想好了!」...
- 子网掩码、IP地址数、掩码长度对照表
- 海康iv4200支持多少_追赶极速:海康威视C2000 Pro 2T固态硬盘到手简评
- 【面向对象应用~.~】——项目开发团队分配管理软件