2020年程序员/工程师必看的三本编程书籍( 四 )
第二本书是 《The Art of Unix Programming》 , 也有在线版本:http://www.catb.org/~esr/writings/taoup/html/ 。 Unix 有很多设计的智慧 。 其中我印象最深刻松耦合(loss coupling)—— 是 SICP 中强调的抽象(abstraction)和构造(composition)的具体做法 —— (de)compose 时 components 之间的耦合要送 , abstraction是要保证界面(interface)窄(简洁) 。
Windows 用户用 Word 的时候 , 可以在文档里嵌入 Excel 点子表格 , 用的 OLE、COM 这类插件技术 。 如果 Excel 的 COM 组件有 bug , 运行的时候出错 , 那么 Word 也会 crash 。 这是一个紧耦合导致系统稳定性下降的例子 。 人非圣贤 , 总会写bug , 系统设计要限制 bug 导致的糟糕结果的扩散 。
在 Unix 的世界里 , 每个程序都只专注做一件很小很具体的事情 , 比如 ls、sed、awk;同时提供很多机制(shell、shell script、pipes、environment variables) , 把这些程序组织起来 —— 组织方式灵活又宽松 。 用这些简单的基础单元 , 大家很容易组合(compose)出很复杂的系统 。
我在做 code review 的时候 , 经常看到的一个问题是一大段程序同时解决好几件事情 。 或者发一个修改了很多文件的修改(pull request) , 修复好几个问题 。 其实都是属于没有认真解构(decompose)得到基本单元 , 然后以松耦合的方式组合(compose)的例子 。
推荐阅读
- 网游|颠覆你认知的网游土豪,程序员加班为他改游戏,还送专属服务器
- fnc战队|2020年宝马宣布赞助5家LOL顶级战队,S11过后,4家进入重建
- 网易|永劫无间诡异宕机事件:网易机房过热,程序员竟然祭出了干冰?
- 布隆|欧美再现银河战舰?阿P密谋凑齐2020年LEC最佳阵容?
- 坦克大战|FC游戏埋藏了三十年的秘密,《坦克大战》隐藏着一封程序员的血书
- 梦幻西游|梦幻西游:程序员修复显示BUG用力过猛,现在武器亮的有点晃眼
- 塞尔达传说|Switch下载超200万,程序员才3人,这游戏真能比塞尔达还好玩?
- 手机游戏|2020年吸金能力前10手游,第一王者荣耀,网易游戏没进前三?
- fate grand order|FGO玛修语音要改吗?永远停在2020年,又要请高桥李依重录?
- 穿越火线|CF:套装渐成流行 2020年和我们相遇的英雄级武器(下)