读《程序员的呐喊》
忘记了这本书是由于什么原因进入了我的想读列表,这次为了凑单就把它买了。作者 Steve Yegge 是从业 20 载的知名程序员,曾供职于亚马逊、Google,经常边喝酒边写吐槽博客,写完发表后就伏案大睡,以致把本打算发表到内网的吐槽不小心发到了外网,从而引起了 Google PR 部门的问候,也算是一朵奇葩了。
这本书总体我给三星(总共五星),里面有不少作者对各种编程语言的看法,我本人没用过那么多也就看看热闹,关于 Google 那一章没有特别打动我的地方也略过,下面摘录一些对我有用的内容:
编程语言里的宗教
软件工程有自己的政治轴心,一端是保守派,另一端是自由派。他们的价值观、看中的东西、核心理念,乃至动机都是完全对立的。
一个人的软件政治观主要受两股力量支配:
之前的编程经历
他们的老师、教授、导师、榜样,还有同事所拥有的软件政治观
保守派通常具有清晰统一的价值观,而自由派则比较散漫,仅仅是为了对抗保守主义才联合在一起。
保守和谨慎、厌恶风险是同义词。本质上,保守主义就是风险管理。
自由派的观点常常和年轻、理想主义、天真无邪联系在一起。在软件行业,自由主义主要是为了以最快的速度开发出新功能,同时保证系统的灵活性。当然,保守派也是以此为目标,只不过做法很保守,灵活性和生产力仍然是动机,但不再是主要动机,安全、性能才是最重要的考量。
两派的根本分歧在于:到底在安全上下多大功夫。
保守派更看重:
软件发布之前硬尽量修复所有 bug
程序员应回避错误
程序员回避新语法
代码必须通过编译器的安全检查
数据必须遵循事先定义好的格式
公共接口必须严格建模
不允许存在危险和有风险的后门
如果一个组件存在安全疑虑,那它不能发布
代码性能要好
自由派:
有 bug 没什么大不了,bug 无法避免
为了避免菜鸟犯错就立下一堆规矩,完全是头痛医头 脚痛医脚的做法
没必要让程序员远离新语法,只要有文档,有时间,自然能学会
代码要简练,检测工具无法理解不是把代码写的又臭又长的原因,而是要把检测工具做的更聪明
严格的数据定义会妨碍灵活性,数据未动,代码先行才是正确的做法
公共接口应尽可能简单
系统的灵活性决定了客户是否选择你,至于安全隐患,可以通过日志、监控、审核等手段缓解
企业要敢于冒险
过早优化是万恶之源
一支和谐的团队最好由单一人群组成,免得双方不停发生理念冲突。这就像每个地方的驾驶风格都不同,霸道点没关系,大家都一样就行。
注:我和作者都属于自由派
软件需要哲学家
编程语言都是宗教。任何宗教都会有一位教皇,他是精神领袖,神的代言人,通常是语言设计者。
有权力的宗教组织会分权力层级,编程语言也不例外。离权力中心越近,等级越高。你觉得自己可以通过贡献技术和文档升级,实际这完全只取决于你有多少信徒和粉丝,你的言论有多少人听到而已。
要敢于挑战自己的信仰,质疑是好事。
TL;DR
TL;DR 是 Too Long; Didn't Read 的缩写,意为太长、懒得读。最后附上作者自己写的 TL;DR:
软件开发的方式多种多样,不存在谁好谁坏。但是它们都互相看不起
好程序员之所以出色是因为熟能生巧
只要你愿意,随时可以学习新语言
如果你想要当经理,那你很可能不会是个好经理
Lisp 很难掌握,但它是唯一能让我继续快乐的语言
Emacs 很难掌握,但却是受益终生的投资
离开舒适区,时不时学点新东西
为自己写点东西,只有这样你才知道那是不是对的
多笑一点,这很健康,也让人感觉良好
记得自嘲,不过不要在公开场合大声自嘲,也不要忘了解释
出自:http://www.99css.com/a-programmers-rantings-review/