“假设能光阴倒流,回到过往,做为一个开发人员,你能够告诉本身在职业生活生计初期应该读一本,你会抉择哪本书呢?我期看那个书单列表内容丰富,能够涵盖良多工具。”
良多法式员响应,他们在选举时也写下本身的评语。以前就有国内网友介绍那个法式员书单,不外都是选举数 Top 10 的书。其实除了前 10 本之外,选举数前 30 摆布的册本都算典范,伯乐在线整理编译那个问答贴,同时摘译部门选举人的评语。下面就根据各本书的选举数摆列。
1. 《代码大全》 史蒂夫·迈克康奈尔
选举数:1684“优良的编程理论的百科全书,《代码大全》重视小我手艺,此中所有工具加起来,就是我们本能所说的“编写整洁的代码”。那本书有 50 页在议论代码规划。” —— Joel Spolsky
关于新手来说,那本书中的看念有点高阶了。到你筹办阅读此书时,你应该已经晓得并理论过书中 99% 的看念。– esac
2. 《法式员修炼之道》
选举数:1504关于那些已经进修过编程机造的法式员来说,那是一本卓著的书。或许他们仍是在校生,但对要本身做什么,还觉得不是很平安。就像草图和架构之间的区别。固然你在学校课堂上学到的是画图,你也能够画的很标致,但假设你觉得你不太晓得从哪儿下手,假设某人要你单独画一个 P2P 的音乐交换收集图,那那本书就合适你了。—— Joel
3. 《计算机法式的构造和阐明》
选举数:916
就小我而言,那本书目前为行对我影响醒倒的一本编程书。
《代码大全》、《重构》和《设想形式》那些典范书会教给你高效的工做习惯和交易细节。其他像《人件集》、《计算机编程心理学》和《人月神话》那些书会深进软件开发的心理层面。其他册本则处置算法。那些书都有本身所属的位置。
然而《计算机法式的构造和阐明》与那些差别。那是一本会启发你的书,它会燃起你编写超卓法式的热情;它还将教会你熟悉并赏识美;它会让你有种敬畏,让你难以按捺地期看进修更多的工具。其他书或许会让你成为一位更超卓的法式员,但此书将必然会让你成为一名法式员。
同时,你将会学到其他工具,函数式编程(第三章)、惰性计算、元编程、虚拟机、阐明器和编译器。
一些人认为此书不合适新手。小我认为,固然我其实不完全认同要有一些编程体味才气读此书,但我仍是必然选举给初学者。事实那本书是写给闻名的6.001,是麻省理工学院的进门编程课程。此书或许需要多做勤奋(出格你在做操练的时候,你也应当如斯),但那个价是对得起那本书的。
你还不确信么?那就读读第一版的媒介或序言。网上有免费的电子版。 - Antti Syk?ri
4. 《C法式设想语言》
选举数:774那本书简洁易读,会教给你三件事:C 编程语言;若何像法式员一样根究;底层计算模子。(那对理解“底层”十分重要)—— Nathan
5. 《算法导论》
选举数:671
《代码大全》教你若何准确编程;《人月神话》教你若何准确治理;《设想形式》教你若何准确设想……
在我看来,代码只是一个东西,并不是精华。开发软件的次要部门是创建新算法或从头实现现有算法。其他部门则像从头组拆乐高砖块或创建“治理”层。我照旧梦想如许的工做,我的大部门时间(50%)是在写算法,其他“治理”细节则留给其别人…… —— Ran Biron
6. 《重构:改进既有代码的设想》
选举数:617
我想我不能不选举《重构》:改进现有代码的设想。—— Martin
我必需认可,我最喜欢的编程语录是出自那本书:任何一个傻瓜都能写出计算机能理解的法式,而优良的法式员却能写出他人能读得懂的法式。—— Martin Fowler
7. 《设想形式》
选举数:617
就我而言,我认为四人帮编著的《设想形式》是一本极为有用的书。固然此书其实不像其他定见一样有关“元”编程,但它强调封拆诸如形式一类的优良编程手艺,因而鼓舞其别人提出新形式和反形式(antipatterns),并运用于编程对话中。—— Chris Jester-Young
8. 《人月神话》
选举数:588
9. 《计算机法式设想艺术》
选举数:542
那是高德纳倾泻心血写的一本书。—— Peter Coulton
10. 《编译原理》(龙书)
选举数:462
我很希罕,竟然没人提到龙书。(或许已有选举,我没有看到)。我从没忘过此书的第一版封面。此书让我晓得了编译器是多么地神异绝妙。- DB
11. 《深进浅出设想形式》
选举数:445
我晓得四人帮的《设想形式》是一本原则书,但倒不如先看看那部大部头,此书更为简易。一旦你领会领会了根本原则,能够往看四人帮的那本圣经了。- Calanus
12. 《哥德尔、艾舍尔、巴赫书:集异璧之大成》
选举数:437
假设下昂实正深进阅读,我选举道格拉斯·侯世达(Douglas Hofstadter)的《哥德尔、艾舍尔、巴赫书》。他极为深进研究了法式员每日都要面临的问题:递回、验证、证明和布尔代数。那是一本很超卓的读物,难度不大,偶尔有挑战,一旦你要酣战到底,将长短常值得的。 – Jonik
13. 《代码整洁之道》
选举数:329
固然《代码整洁之道》和《代码大全》有良多配合之处,但它有更为简洁更为现实的清晰例子。 – Craig P. Motlin
14. 《Effective C++》和《More Effective C++》
选举数:297
在我职业生活生计早期,Scott Meyer 的《Effective C++》和后续的《More Effective C++》都对我的编程才能有着间接影响。正如其时的一位伴侣所说,那些书缩短你培育提拔编程技巧的过程,而其别人可能要破费数年。
往年对我影响更大的一本书是《大教堂与市集》,该书教会我很有关开源开发过程若何运做,和若何处置我代码中的 Bug。 – John Channing
15. 《编程珠玑》
选举数:282
虽然我不能不羞愧地认可,书中一半的工具我都没有理解,但我实的选举《编程珠玑》,书中有些令人惊异的工具。 – Matt Warren
16. 《修改代码的艺术》by Michael Feathers
我认为没有任何一本书能向那本书一样影响了我的编程看点。它明白地告诉你若何处置其别人的代码,委婉地教会你制止哪些(以及为什么要制止)。- Wolfbyte
附和。良多开发人员议论用清洁的石板来编写软件。但我想几乎所有开发人员的某些时候是在食其他开发人员的狗食。– Bernard Dy
17. 《编码:隐匿在计算机软硬件背后的语言》
我选举 Charles Petzold 的《编码》。在那个充满东西和 IDE 的年代,良多冗杂度已经从法式员那“抽取”走了,那本书一本开眼之做。 – hemil
18. 《禅与摩托车维修艺术 / Zen and the Art of Motorcycle Maintenance》
对我影响更大的那本书是 Robert Pirsig 的《禅与摩托车维修艺术》。不管你做什么事,老是要力图完美,彻底领会你手中的东西和使命,更为重要的是,要有乐趣(因为假设你干事有乐趣,一切将自觉引向更好的成果)。 – akr
(编注:关于那本书,也能够看看阮一峰的读后感。)
19. 《Peopleware / 人件集:人道化的软件开发》
Demarco 和 Lister 表白,软件开发中的首要问题是人,并不是手艺。他们的谜底其实不简单,只是令人难以置信的胜利。第二版新增加了八章内容。 – Eduardo Molteni
20. 《Coders at Work / 编程人生》
一本十分有影响力的书,能够从中学到一些业界顶级人士的体味,领会他们若何根究并工做。 – Jahanzeb Farooq
21. 《Surely You’re Joking, Mr. Feynman! / 别闹了,费曼先生!》
固然那本书可能有点偏题,但不管你信不信,那本书曾在计算机科学专业课程的阅读列表之上。一个优良的角色模子,一本有关猎奇心的优良册本。 – mike511
22. 《Effective Java 中文版》
此书第二版教你若何编写标致并高效的代码,固然那是一本 Java 书,但此中有良多跨语言的理念。 – Marcio Aguiar
23. 《Patterns of Enterprise Application Architecture / 企业利用架构形式》
很希罕,还没人选举 Martin Fowler 的《企业利用架构形式》- levi rosol
24. 《The Little Schemer》和《The Seasoned Schemer》 nmiranda
那两本是 LISP 的英文书,尚无中文版。美国东北大学网站上也有电子版。
25. 《交互设想之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity》
该书做者:Alan Cooper,人称 Visual Basic 之父,交互设想之父。
本书是基于浩瀚商务案例,讲述若何创建更好的、高客户忠实度的软件产物和基于软件的高科技产物的书。本书列举了良多实在可信的现实例子,阐明目前在软件产物和基于软件的高科技产物中,普及存在着“难用”的问题。做者认为,“难用”问题是由那些产物中存在着的高度“认知摩擦”引起的,而产生那个问题的根源在于现今软件开发过程中欠缺了一个为用户利益着想的前期“交互设想”()阶段。“难用”的产物不只损害了用户的利益,最末也将招致企业的失败。本书通过一些生动的实例,让人心服地讲述了由做者倡导的“目标导向”交互设想办法在处理“难用”问题方面的有效性,证明了只要改动现有看念,才气有效地在开发过程中引进交互设想,将产物的设想引向胜利。
本书固然是一本面向商务人员而编写的书,但也合适于所有参与软件产物和基于软件的高科技产物开发的专业人士,以及关心软件行业和高科技行业现状与开展的人士阅读。
他还有另一本中文版著做:《About Face 3 交互设想精华》
26. 《Why’s (Poignant) Guide to Ruby 》
假设你不是法式员,阅读此书可能会很有趣,但假设你已经是个法式员,可能会有点乏味。
27. 《Unix 编程艺术》
It is useful regardless operating system you use. – J.F. Sebastian
不管你利用什么操做系统,那本书都很有用。 – J.F. Sebastian
28. 《Practices of an Agile Developer / 高效法式员的 45 个习惯:灵敏开发修炼之道》
45个习惯,分为 7 个方面:工做立场、进修、软件交付、反应、编码、调试和协做。
每一个详细的习惯里,一起头提出一个谬论,然后展开阐发,之后有正队性地提出准确的做法,并设身处地地讲出了准确做法给你小我的“亲身感触感染”,最初列出几条重视事项,搀扶帮助你批改本身的做法(“平稳的艺术”)。
29. 《Test-Driven Development by Example. / 测试驱动开发》
前面已经提到的良多书都启发了我,并影响了我,但那本书每位法式员都应该读。它向我展现了单位测试和 TDD 的重要性,并让我很快上手。 – Curro
我不关心你的代码有多好或高雅。假设你没有测试,你或许就好像没有编写代码。那本书得到的选举数应该更高些。人们议论编写用户喜欢的软件,或既设想超卓并强健的高效代码,但假设你的软件有一堆 bug,议论那些工具毫无意义。– Adam Gent
30. 《Don’t Make Me Think / 点石成金:访客至上的网页设想秘籍》
取决于你所逃求的目标。我喜欢《代码大全》是因纯编程,《点石成金》是一本有关 UI 设想的卓著册本。 – Justin Standard
后语
除那个书单之外,曾经也有微博网友选举《一些典范的计算机册本》,大约在 50 本。