我这一辈子,从不知道哪位智者是根本不读书的——没有,没有一个人。
-- 投资大师芒格
前言
自从开始自学编程以来,就一直希望有人指点该如何逐步的打牢基础,该读哪些书籍来加深对计算机科学的理解。最近,我在网上看到有人整理了一些知名程序员推荐的书籍,他们或是接受采访,或是在自己的博客上,向大家推荐了自己认为最有价值的编程书籍。觉得应该都是不错的选择,所以翻译过来与大家分享。
为什么要读书?
当今,我们时刻被笔记本电脑和iPhone包围,导致忽视了人类历史上最重要的技术之一:默默无闻的书籍。我不确定是不是我的圈子太小,但是我的程序员朋友中,平常读书的人确实很少。恕我直言,真是有点暴殄天物,因为书中提供了让你大幅提升技能的难得机会。
如果有人问你,“你是否愿意付5000美元,请世界上一名最伟大的程序员当你三个月的导师?”你会怎么回答?很可能是“那太好啦!”。但是如果给你同样的选择,只是这次变成支付50美元,但是你必须读书,你还会愿意吗?
阅读一本伟大的书籍,就像被一位伟大的导师呵护教导一样。许多拥有丰富经验的伟大程序员,选择将他们的智慧凝聚到书本这种尽管不太防水,但是可携带性强的载体中,就是为了给你提供阅读的乐趣。你为什么不好好享用这场汇聚集体知识的盛筵呢?
下面是这个领域中一些顶级程序员的建议。请注意,其中一些书籍被反复提及。已添加购买链接。
Joel Spolsky
Joel Spolsky毕业于耶鲁大学计算机系,目前是Fog Creek软件公司的CEO。他的网络日志"Joel谈软件"(Joel on Software)非常有名,读者人数可以排进全世界前100名。
他向大家推荐5本书,分别是:
- Peopleware: Productive Projects and Teams (人件)
- Rapid Development: Taming Wild Software Schedules (好像还没有中文版)
- Code Complete: A Practical Handbook of Software Construction , 2nd Edition(代码大全2)
- The Pragmatic Programmer: From Journeyman to Master (程序员修炼之道:从小工到专家)
- The Mythical Man-Month: Essays on Software Engineering (人月神话)
Steve Yegge
Steve Yegge是Amazon的前员工,目前在Google工作,是《程序员的呐喊》一书的作者。
他推荐下面这些书:
- The Pragmatic Programmer: From Journeyman to Master (程序员修炼之道:从小工到专家)
- Refactoring: Improving the Design of Existing Code (重构:改善既有代码的设计)
- Design Patterns: Elements of Reusable Object-Oriented Software (设计模式:可复用面向对象软件的基础)
- Concurrent Programming in Java: Design Principles and Patterns (好像没有中文版)
- Mastering Regular Expressions (精通正则表达式(第3版))
- The Algorithm Design Manual (算法设计手册(第2版))
- The C Programming Language (C程序设计语言)
- The Little Schemer (关于Lisp语言的书,没有中文版)
- Compilers: Principles, Techniques, and Tools (编译原理)
Scott Hanselman
知名黑客。每年都会在自己的博客上,整理推荐Windows平台的软件,博文很受人们推崇。他还运营着一个自己的播客。
他推荐了这些书:
- Code Complete: A Practical Handbook of Software Construction , 2nd Edition(代码大全2)
- The Pragmatic Programmer: From Journeyman to Master (程序员修炼之道:从小工到专家)
- Programming Pearls (编程珠玑)
- Refactoring: Improving the Design of Existing Code (重构:改善既有代码的设计)
- The Design of the UNIX Operating System (UNIX操作系统设计)
- Design Patterns: Elements of Reusable Object-Oriented Software (设计模式:可复用面向对象软件的基础)
Stack Overflow问答社区上的推荐
- Code Complete: A Practical Handbook of Software Construction , 2nd Edition(代码大全2)
- The Pragmatic Programmer: From Journeyman to Master (程序员修炼之道:从小工到专家)
- Structure and Interpretation of Computer Programs (计算机程序的构造和解释)
- The C Programming Language (C程序设计语言)
- Introduction to Algorithms (算法导论)
- Design Patterns: Elements of Reusable Object-Oriented Software (设计模式:可复用面向对象软件的基础)
- Refactoring: Improving the Design of Existing Code (重构:改善既有代码的设计)
- The Mythical Man-Month: Essays on Software Engineering (人月神话)
你会购买哪位导师的书呢?
显然,光读书不会让你成为大师级程序员。要提升技能,你需要的是练习,并且是大量的练习。但是,书籍仍是学习“你不知道你不知道的内容”的最好方式之一。