《UNIX编程艺术》读书总结

本书总结了Unix的哲学、历史、设计的机制与策略等方面的内容。
Unix的哲学基础更像是编程的智慧,抽象、封装、模块化和层次结构应该属于编程的范畴,而不仅仅是Unix编程的范畴,遵守这些原则更有利于代码的实现修改和维护。
作者回顾了Unix的历史,最后总结了历史教训,摘录如下。

在Unix历史中,最大的规律就是:距开源越近就越繁荣。任何将Unix专有化的企图,只能陷入停滞和衰败。
回顾过去,我们早该认识到这一点。1984年至今,我们浪费了十年时间才学到这个教训。如果我们日后不思悔改,可能还得吃大苦头。
虽然我们在软件设计这个重要但狭窄的领域比其他人聪明,但这不能使我们摆脱对技术与经济相互作用影响的茫然,而这些就发生在我们的眼皮底下。即使Unix社区中最具洞察力、最具远见卓识的思想家,他们的眼光终究有限。对今后的教训就是:过度依赖任何一种技术或者商业模式都是错误的————相反,保持软件及其设计传统的灵活性才是长存之道。

我的看法跟作者总结的教训不太一样,作者得出的结论是“保持软件及其设计传统的灵活性才是长存之道”,这句话没有上下文单独看是有道理的。但是如果联系上下文的话,我认为技术和经济应该结合起来,技术应该能够促进经济的发展,为社会创造更多的财富。经济的发展反过来投资技术,带来技术的进步。如果一项技术不能够促进经济的进步,那么它可能不会长期存在下去。

另外作者还对比了一些语言,总结了各自的优缺点,我觉得这一点很好。回想大学时期,有些老师在课堂上只说了自己所教授语言的长处,同时指出其它语言的短处,以此对比,给学生造成一种自己所教授的那种语言是更好的语言这样的印象。再联想到网上经常会有一些人比较哪种语言更好,大家在那里争论不休。其实没有十全十美的语言,每种语言都有自己擅长的地方。面对不同的问题,我们应该选择合适的语言去解决问题,让语言为我们所用,而不应该让自己为语言所累。
对个人来说,熟练掌握一门语言的同时,也应该多接触学习其它语言。我认为一个真正的程序员应该掌握好操作系统、计算机网络以及数据结构和算法这些经典的知识,有能力运用不同的语言去解决不同的问题,不要囿于一门语言,限制住自己。