目前状态已经关闭,排名第一的答案获得了 1745 的投票,给出的书单非常的经典,供 94 本,虽然是英文,但是你很容易知道是哪本书。


1.《代码大全2》,作者:史蒂夫·麦康奈尔

自从有了《代码大全2》,程序员就分两种:一种是看过《代码大全2》的,一种是没有看过的。犹如蒙娜丽莎的微笑,本书从语言基础到创建高质量代码,到变量、语句、代码优化、系统考量和软件工艺,全方面涵盖关于软件构建的种种细节,细节是决定卓越与平庸的分水岭,不管是卢浮宫琥珀色的古老建筑与钻石般夺目的玻璃金字塔,还是卓有成效的程序员。

这本书很经典,公众号回复「送书」抽奖包邮送一本。

2.《程序员修练之道》

本书适合各层次软件开发人员阅读,也适合高等院校计算机专业学生和教师阅读。本书之所以在全球范围内广泛传播,被一代代开发者奉为圭臬,盖因它可以创造出真正的价值:或编写出更好的软件,或探究出编程的本质,而所有收获均不依赖于特定语言、框架和方法。时隔20年的新版,经过全面的重新选材、组织和编写,覆盖哲学、方法、工具、设计、解耦、并发、重构、需求、团队等务实话题的最佳实践及重大陷阱,以及易于改造、复用的架构技术。本书极具洞察力与趣味性,适合从初学者到架构师的各阶层读者潜心研读或增广见闻。

3.《计算机的构造和解释》

《计算机程序的构造和解释》成型于美国麻省理工学院(MIT)多年使用的一本教材,1984年出版,1996年修订为第二版。在过去的二十多年里,该书对于计算机科学的教育计划产生了深刻的影响。

在第二版中,大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。

经典中的经典,必读。

4.《算法导论》

美国的本科生教材,这本书应该也是中国计算机学生的教材。

在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。

全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。

5.《设计模式》

这本书是面向对象设计的经典书籍,结合设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。书中分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别有用。此书适合大学计算机专业的学生、研究生及相关人员参考。

书中涉及的设计模式并不描述新的或未经证实的设计,只收录了那些在不同系统中多次使用过的成功设计。

6.《重构》

书中清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少了开发过程中的风险。

7.《人月神话》

在软件领域,很少能有像《人月神话》一样具有深远影响力和畅销不衰的著作。Brooks博士为人们管理复杂项目提供了最具洞察力的见解,既有很多发人深省的观点,又有大量软件工程的实践。本书内容来自Brooks博士在IBM公司SYSTEM/360家族和OS/360中的项目管理经验,该项目堪称软件开发项目管理的典范。该书英文原版一经面世,即引起业内人士的强烈反响,后又译为德、法、日、俄、中、韩等多种文字,全球销售数百万册。确立了其在行业内的经典地位。

8.《代码整洁之道》

软件质量,不但依赖架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。本书提出一种观点:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自实际项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

9.《Effective C++》/《More Effective C++》

C++ 中两本经典得不能再经典的书。也许你觉得 C++ 复杂,但这两本书中带来对代码稳定性的探索方式让人受益,因为这种思维方式同样可以用在其它地方。以至于各种模仿者,比如《Effective Java》也是一本经典书。

10. 《Unix 编程艺术》、《Unix 高级环境编程》

也是经典。

以下是原书单,序号不代表优先次序:


  1. Code Complete (2nd edition) by Steve McConnell
  2. The Pragmatic Programmer
  3. Structure and Interpretation of Computer Programs
  4. The C Programming Language by Kernighan and Ritchie
  5. Introduction to Algorithms by Cormen, Leiserson, Rivest & Stein
  6. Design Patterns by the Gang of Four
  7. Refactoring: Improving the Design of Existing Code
  8. The Mythical Man Month
  9. The Art of Computer Programming by Donald Knuth
  10. Compilers: Principles, Techniques and Tools by Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman
  11. Gödel, Escher, Bach by Douglas Hofstadter
  12. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
  13. Effective C++
  14. More Effective C++
  15. CODE by Charles Petzold
  16. Programming Pearls by Jon Bentley
  17. Working Effectively with Legacy Code by Michael C. Feathers
  18. Peopleware by Demarco and Lister
  19. Coders at Work by Peter Seibel
  20. Surely You're Joking, Mr. Feynman!
  21. Effective Java 2nd edition
  22. Patterns of Enterprise Application Architecture by Martin Fowler
  23. The Little Schemer
  24. The Seasoned Schemer
  25. Why's (Poignant) Guide to Ruby
  26. The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity
  27. The Art of Unix Programming
  28. Test-Driven Development: By Example by Kent Beck
  29. Practices of an Agile Developer
  30. Don't Make Me Think
  31. Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin
  32. Domain Driven Designs by Eric Evans
  33. The Design of Everyday Things by Donald Norman
  34. Modern C++ Design by Andrei Alexandrescu
  35. Best Software Writing I by Joel Spolsky
  36. The Practice of Programming by Kernighan and Pike
  37. Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt
  38. Software Estimation: Demystifying the Black Art by Steve McConnel
  39. The Passionate Programmer (My Job Went To India) by Chad Fowler
  40. Hackers: Heroes of the Computer Revolution
  41. Algorithms + Data Structures = Programs
  42. Writing Solid Code
  43. JavaScript. The Good Parts
  44. Getting Real by 37 Signals
  45. Foundations of Programming by Karl Seguin
  46. Computer Graphics: Principles and Practice in C (2nd Edition)
  47. Thinking in Java by Bruce Eckel
  48. The Elements of Computing Systems
  49. Refactoring to Patterns by Joshua Kerievsky
  50. Modern Operating Systems by Andrew S. Tanenbaum
  51. The Annotated Turing
  52. Things That Make Us Smart by Donald Norman
  53. The Timeless Way of Building by Christopher Alexander
  54. The Deadline: A Novel About Project Management by Tom DeMarco
  55. The C++ Programming Language (3rd edition) by Stroustrup
  56. Patterns of Enterprise Application Architecture
  57. Computer Systems. A Programmer's Perspective
  58. Agile Principles, Patterns, and Practices in C# by Robert C. Martin
  59. Growing Object-Oriented Software, Guided by Tests
  60. Framework Design Guidelines by Brad Abrams
  61. Object Thinking by Dr. David West
  62. Advanced Programming in the UNIX Environment by W. Richard Stevens
  63. Hackers and Painters: Big Ideas from the Computer Age
  64. The Soul of a New Machine by Tracy Kidder
  65. CLR via C# by Jeffrey Richter
  66. The Timeless Way of Building by Christopher Alexander
  67. Design Patterns in C# by Steve Metsker
  68. Alice in Wonderland by Lewis Carol
  69. Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig
  70. About Face. The Essentials of Interaction Design
  71. Here Comes Everybody: The Power of Organizing Without Organizations by Clay Shirky
  72. The Tao of Programming
  73. Computational Beauty of Nature
  74. Writing Solid Code by Steve Maguire
  75. Philip and Alex's Guide to Web Publishing
  76. Object-Oriented Analysis and Design with Applications by Grady Booch
  77. Effective Java by Joshua Bloch
  78. Computability by N. J. Cutland
  79. Masterminds of Programming
  80. The Tao Te Ching
  81. The Productive Programmer
  82. The Art of Deception by Kevin Mitnick
  83. The Career Programmer: Guerilla Tactics for an Imperfect World by Christopher Duncan
  84. Paradigms of Artificial Intelligence Programming: Case studies in Common Lisp
  85. Masters of Doom
  86. Pragmatic Unit Testing in C# with NUnit by Andy Hunt and Dave Thomas with Matt Hargett
  87. How To Solve It by George Polya
  88. The Alchemist by Paulo Coelho
  89. Smalltalk-80: The Language and its Implementation
  90. Writing Secure Code (2nd Edition) by Michael Howard
  91. Introduction to Functional Programming by Philip Wadler and Richard Bird
  92. No Bugs! by David Thielen
  93. Rework by Jason Freid and DHH
  94. JUnit in Action

最后的话

书这么多,这辈子估计都看不完,不过,时间挤一挤总是有的,可以先列一个代读清单,排排优先级,然后一个一个划掉,随着时间的流逝,书中的知识也被我们吸收。