每个程序员都应该阅读的最有影响力的书是什么?

Posted somenzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每个程序员都应该阅读的最有影响力的书是什么?相关的知识,希望对你有一定的参考价值。

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

这里从中挑出 10 本最经典的,推荐大家去阅读,如果需要电子版的,可以加我微信「somenzz」,回复对应的书名即可,我会在方便的时候发你电子书。

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

最后的话

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

先关注公众号「Python七号」,然后回复「送书」抽奖。

参考资料

[1]

stackoverflow: https://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read

以上是关于每个程序员都应该阅读的最有影响力的书是什么?的主要内容,如果未能解决你的问题,请参考以下文章

程序员读物推荐

每个程序员应该阅读的10本经典书籍

计算机专业除了教材,这些编程书籍你读过多少?

每个程序员应该阅读的10本书籍

一个合格的程序员应该读过哪些书

一个合格的程序员应该读过哪些书