转载自网文。
程序员就好比是一名工匠,我们边走边学,从我们接触到的代码中,从我们读到的书籍中,从我们身边的同事那学习
我读过很多编程相关的书籍,是它们塑造了我的编程思维,它们包括SICP、人月神话、编程珠玑、算法大全、C程序设计语言等这些经典书籍,还有其他针对不同时期看的书,比如Danny Hillis的 论文给了我新的方向,Mitchel Resnick像我描述了如何考虑大规模的并发
最近,以为朋友问我有什么书籍推荐给他,除了上面的这些众所周知的经典书籍,我还喜欢一些不太知名的但却值得你花时间阅读的书籍
1、《The Implementation of Functional Programming Languages》
这是一本关于高级函数语言、lambda演算和图形简化的书,本书极具技术性,文笔极好,而且从某种意义上来说,他们是我知道的最好的书籍之一,作者从理论开始,一步步带你深入到现实系统实践
《Implementing Lazy Functional Languages on Stock Hardware: The Spineless Tagless G-machine》基于最后一章撰写的,描述了用于生成高效代码的函数式语言的编译器。这两本书技术性
2、《The Art of the Metaobject Protocol》
第一次阅读这本书的时候,我只觉得它很有趣,但是并没有真正理解它,多年后,重读此书,才开始深入了解,这本书同样是关于如何通过计算机科学理论构建实际编程工具,作者首先介绍了Lisp程序员常用的面向对象的语言特性,然后应用计算机科学的几个分支理论来设计一个元系统,该系统抽象了常见的特性,并使“语言设计”的变得可参数化。
本书所有代码都是使用Lisp,如果你对Lisp有一定的经验,你对于书中的源码会更容易理解,不过我们使用何种语言并不是最重要的,更重要的是我们通过何种编程语言思考的。
3、《Modern C++ Design 》
Alexandrescu在本书中首创并推广的许多功能都进入了C++标准。Alexandrescu的方法在某种程度上是Peyton Jones的完美补充,Peyton Jones从理论开始并构建了Haskell编程语言, Alexandrescu从C++开始,然后再回到理论,最终落实到有用的实践应用中去
Alexandrescu剖析了C++标准,从根本上展示了generic patterns(泛型模式)或pattern templates(模式模板),为C++打开了全新视野,而且不仅仅在编程方面,还在于软件设计本身;对软件分析和软件体系结构来说,它也具有丰富的内涵。
4、《Purely Functional Data Structures》
我记得的那些最能拓展思维的书中,绝大部分都是关于函数式编程的,我不认为这是偶然的。函数式编程思想功能强大,是计算机科学的基础。
中立的说,从事学术研究的人往往对具备垃圾回收特性的一流编程语言持怀疑态度,而放眼今天,大量的生产代码甚至可以说大多数的生产代码都是用这些编程语言创建的,如JavaScript、Python、Ruby等。
本书是关于不可变数据结构的标准参考和教程,这本书自出版以来,就备受好评,强烈建议可以读一读
5、《Synthesis: An Esocient Implementation of Fundamental Operating System Services》
现在来看一些完全不同的东西:Alexia Massalin 1992年的博士论文,描述了系统合成操作,如果你对操作系统、编译器、并发性、数据结构、实时编程、基准测试或优化感兴趣,这本书出版25年后,仍然提供了大量的灵感和具体的素材参考。作者的写作风格十分清晰,可以说是一个时代的缩影。