我在这里推荐的书并不完全是技术类的,读这些书,与其说是为了学习某种特定技术,可能不如说是为了提高计算机方面的整体水平和发展潜力。这些书深度各异,但不包含面向特定技术的书籍和更广泛的阅读材料。这里说到的书虽不见得读后能立即转化为生产力,但确有价值,值得推荐。不过我并未精研书中所有内容,彻底学懂需要花费相当的精力,甚至可能是以年计的长期工程。还有许多著作,名气和水平不逊于这里所列。但我没看过,所以不知如何推荐。希望大家也能分享自己的阅读经验。 语言: 1:《C程序设计语言》,Brian W. Kernighan,Dennis M. Ritchie,机械工业出版社。这本书是C语言的设计者写的标准教科书。通过反复查阅和实践,可以体会C语言为什么这么设计。一门语言想达成一定的功能,可以有多种设计方案。而C的设计是很成功的。体会到怎样设计才是成功的,才能学会地道的语言。这和学英语也有点类似。 2:《C++程序设计语言》,Bjarne Stroustrup,机械工业出版社。 这本书是C++的设计者写的权威教科书。且不说对语言的细细体会,只说其中对标准库以及各种应用技术的详细介绍就够你看的了。篇幅巨大,难度也不小,但看完以后对处理C++相关问题的能力必然能上一个新台阶。 编程: 3:《程序设计实践》,Brian W. Kernighan,Rob Pike,机械工业出版社。从初学者到精通编程者看这本书都会有相应的收获。书中的内容简单实际,而又思想深刻。高超的编程技术,基本都是在贯彻其精髓思想。 项目管理: 4:《人月神话》,弗雷德里克·布鲁克斯,清华大学出版社。这本书讲了许多项目实践中的基本道理,而且不是罗列条款,而是以实例和让人理解的方式展现出来的。虽然项目管理的经验不能在任何场合都生搬硬套,但这本书无疑值得去看。 系统与底层: 5:《深入理解计算机系统》,Randal E.Bryant,David O'Hallaron,机械工业出版社。这是理解计算机系统结构、编译、操控系统底层的经典著作。中文版有少许编辑和翻译的问题,第二版据说改进了许多。它完整清晰地讲了操作系统的工作原理、编译器的工作原理,以及代码在计算机内部到底以怎样的方式去运行。本书实用价值甚大。作为计算机的专业从业人员,只会在上层搭积木是远远不够的,一定需要对底层有清楚的理解。 6:《编码》,Charles Petzold,电子工业出版社。这本书主要在讲解计算机工作的基本原理,底层的编码究竟如何体现出来高层次的信息。是我看过的微机原理和计算机体系结构的最引人入胜的入门书籍。 算法: 5:《数据结构与算法分析:C语言描述》,Weiss,机械工业出版社。这本书以C语言为平台,讲了基本的数据结构以及基础算法。讲解清晰,例证详细。其简练与清楚的程度是不多见的。还有同名的,用C++语言描述的一本书,好像是同一个作者写的,我没看过。可依据自己熟悉的平台来选择。 6:《算法导论》,Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest,Clifford Stein,高等教育出版社。这本书在计算机界有很大名气,以作者名来简称为CLRS。对基础算法讲解详尽,严格遵循规范,但相当繁琐。以此来作为教科书估计太费时间,可以查阅专题的方式来学习。 7:《计算机程序设计艺术》D. E. Knuth,国防工业出版社。这部书是算法书里最深刻的经典著作之一,本质上这就是一部数学书。篇幅宏大,讲解深入,当然研读起来也有一定难度。本书由计算机界大名人Knuth所著,此人因此而获图灵奖。本书计划分七卷,自1968年至今尚未出完。目前前三卷有中文翻译,但如果能,最好看英文。第四卷将分册出版,已出五个分册,也有影印版。不适合初学者看,当你对算法已经有了一定程度的了解以后再看,更能有选择地掌握书中精要。 数学: 8:《具体数学》,Ronald L. Graham, Donald E. Knuth, Oren Patashnik,机械工业出版社。这本书着力于讲解与算法相关的数学基础,以离散数学为主。书里讲解了丰富的技巧,注重培养思考方法。部分论题在深入时也牵涉到较深的数学知识,彻底掌握需要花相当精力。看看作者都是谁?