【推荐】程序员必读的三十本经典巨作
在浏览博客的时候无意间发现的这篇文章,感觉每本书都是经典的巨作啊。所以想推荐给大家看一下。希望大家共同学习
本文转载于:http://iteye.blog.163.com/blog/static/186308096201271931628953/
很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 10的书。
其实除了前10本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。
下面就按照各本书的推荐数排列。
1、《代码大全》 史蒂夫·迈克康奈尔
“优秀的编程实践的百科全书,《代码大全》注重个人技术,其中所有东西加起来, 就是我们本能所说的“编写整洁的代码”。这本书有50页在谈论代码布局。” —— Joel Spolsky
对于新手来说,这本书中的观念有点高阶了。到你准备阅读此书时,你应该已经知道并实践过书中99%的观念。– esac
Steve McConnell的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一, 在过去的十多年间,本书一直在帮助开发人员编写更好的软件。
现在,作者将这本经典著作全新演绎,融入了最前沿的实践技术,加入了上百个崭新的代码示例, 充分展示了软件构建的艺术性和科学性。 McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识, 把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。
无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小, 本书都将激发您的思维并帮助您构建高品质的代码。
《代码大全(第2版))》做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与方法论的讨论等等。
2、《程序员修炼之道》
对于那些已经学习过编程机制的程序员来说,这是一本卓越的书。 或许他们还是在校生,但对要自己做什么,还感觉不是很安全。
就像草图和架构之间的差别。虽然你在学校课堂上学到的是画图,你也可以画的很漂亮, 但如果你觉得你不太知道从哪儿下手,如果某人要你独自画一个P2P的音乐交换网络图,那这本书就适合你了。—— Joel
《程序员修炼之道:从小工到专家》内容简介:《程序员修炼之道》由一系列独立的部分组成, 涵盖的主题从个人责任、职业发展,知道用于使代码保持灵活、并且易于改编和复用的各种架构技术, 利用许多富有娱乐性的奇闻轶事、有思想性的例子及有趣的类比, 全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。
无论你是初学者,是有经验的程序员,还是软件项目经理,《程序员修炼之道:从小工到专家》都适合你阅读。
3、《计算机程序的构造和解释》
就个人而言,这本书目前为止对我影响醉倒的一本编程书。
《代码大全》、《重构》和《设计模式》这些经典书会教给你高效的工作习惯和交易细节。 其他像《人件集》、《计算机编程心理学》和《人月神话》这些书会深入软件开发的心理层面。 其他书籍则处理算法。这些书都有自己所属的位置。
然而《计算机程序的构造和解释》与这些不同。 这是一本会启发你的书,它会燃起你编写出色程序的热情; 它还将教会你认识并欣赏美; 它会让你有种敬畏,让你难以抑制地渴望学习更多的东西。
其他书或许会让你成为一位更出色的程序员,但此书将一定会让你成为一名程序员。
同时,你将会学到其他东西,函数式编程(第三章)、惰性计算、元编程、虚拟机、解释器和编译器。
一些人认为此书不适合新手。 个人认为,虽然我并不完全认同要有一些编程经验才能读此书,但我还是一定推荐给初学者。 毕竟这本书是写给著名的6.001,是麻省理工学院的入门编程课程。 此书或许需要多做努力(尤其你在做练习的时候,你也应当如此),但这个价是对得起这本书的。
4、《C程序设计语言》
这本书简洁易读,会教给你三件事:C 编程语言;如何像程序员一样思考;底层计算模型。 (这对理解“底层”非常重要)—— Nathan
《C程序设计语言》(第2版新版)讲述深入浅出,配合典型例证,通俗易懂,实用性强, 适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。
《C程序设计语言》(第2版新版)原著即为C语言的设计者之一Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的 一本介绍C语言的权威经典著作。 我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。 原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。
人们熟知的“hello,world”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课。
5、《算法导论》
《代码大全》教你如何正确编程; 《人月神话》教你如何正确管理; 《设计模式》教你如何正确设计……
在我看来,代码只是一个工具,并非精髓。 开发软件的主要部分是创建新算法或重新实现现有算法。 其他部分则像重新组装乐高砖块或创建“管理”层。
我依然梦想这样的工作,我的大部分时间(>50%)是在写算法,其他“管理”细节则留给其他人…… —— Ran Biron
- 经典的算法书,被亚马逊网,《程序员》等评选为2006年最受读者喜爱的十大IT图书之一。
- 算法领域的标准教材,全球多所知名大学选用
- MIT名师联手铸就,被誉为“计算机算法的圣经”
- 编写上采用了“五个一”,即一章介绍一个算法、一种设计技术、一个应用领域和一个相关话题。
6、《重构:改善既有代码的设计》
《重构:改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。
《重构:改善既有代码的设计》适合软件开发人员、项目管理人员等阅读, 也可作为高等院校计算机及相关专业师生的参考读物。
我想我不得不推荐《重构》:改进现有代码的设计。—— Martin
我必须承认,我最喜欢的编程语录是出自这本书:任何一个傻瓜都能写出计算机能理解的程序, 而优秀的程序员却能写出别人能读得懂的程序。—— Martin Fowler
7、《设计模式》
自1995年出版以来,本书一直名列Amazon和各大书店销售榜前列。 近10年后,本书仍是Addison-Wesley公司2003年最畅销的图书之一。 中文版销售逾4万册。
就我而言,我认为四人帮编著的《设计模式》是一本极为有用的书。 虽然此书并不像其他建议一样有关“元”编程,但它强调封装诸如模式一类的优秀编程技术, 因而鼓励其他人提出新模式和反模式(antipatterns),并运用于编程对话中。—— Chris Jester-Young
8、《人月神话》
在软件领域,很少能有像《人月神话》一样具有深远影响力并且畅销不衰的著作。
该书英文原版一经面世,即引起业内人士的强烈反响,后又译为德、法、日、俄中等多种语言,全球销量数百万册。 确立了其在行业内的经典地位。
9、《计算机程序设计艺术》
《计算机程序设计艺术》系列著作对计算机领域产生了深远的影响。 这一系列堪称一项浩大的工程,自1962年开始编写,计划出版7卷,目前已经出版了4卷。
《美国科学家》杂志曾将这套书与爱因斯坦的《相对论》等书并列称为20世纪最重要的12本物理学著作。 目前Knuth正将毕生精力投入到这部史诗性著作的撰写中。
这是高德纳倾注心血写的一本书。—— Peter Coulton
10、《编译原理》(龙书)
我很奇怪,居然没人提到龙书。(或许已有推荐,我没有看到)。 我从没忘过此书的第一版封面。 此书让我知道了编译器是多么地神奇绝妙。- DB
11、《深入浅出设计模式》
- 《Head First设计模式》(中文版) 作者Eric Freeman;
- ElElisabeth Freeman是作家、讲师和技术顾问。
- Eric拥有耶鲁大学的计算机科学博士学位,E1isabath拥有耶鲁大学的计算机科学硕士学位。
- Kathy Sierra(javaranch.com的创始人)FHBert Bates是畅销的HeadFirst系列书籍的创立者,也是Sun公司Java开发员认证考试的开发者。
本书的产品设计应用神经生物学、认知科学,以及学习理论,这使得这本书能够将这些知识深深地印在你的脑海里, 不容易被遗忘。
本书的编写方式采用引导式教学,不直接告诉你该怎么做,而是利用故事当作引子,带领读者思考并想办法解决问题。 解决问题的过程中又会产生一些新的问题,再继续思考、继续解决问题,这样可以加深体会。
作者以大量的生活化故事当背景,例如第1章是鸭子,第2章是气象站,第3章是咖啡店, 书中搭配大量的插图(几乎每一页都有图),所以阅读起来生动有趣,不会感觉到昏昏欲睡。
我知道四人帮的《设计模式》是一本标准书,但倒不如先看看这部大部头,此书更为简易。 一旦你了解了解了基本原则,可以去看四人帮的那本圣经了。- Calanus
12、《哥德尔、艾舍尔、巴赫书:集异璧之大成》
13、《代码整洁之道》
尽管糟糕的代码也能运行,但如果代码不整洁,会使整个开发团队泥足深陷, 写得不好的代码每年都要耗费难以计数的时间和资源。 然而这种情况并非无法避免。
- 好代码和糟糕的代码之间的区别;
- 如何编写好代码,如何将糟糕的代码转化为好代码;
- 如何创建好名称、好函数、好对象和好类;
- 如何格式化代码以实现其可读性的最大化;
- 如何在不妨碍代码逻辑的前提下充分实现错误处理;
- 如何进行单元测试和测试驱动开发。
虽然《代码整洁之道》和《代码大全》有很多共同之处,但它有更为简洁更为实际的清晰例子。 – Craig P. Motlin
14、《Effective C++》和《More Effective C++》
去年对我影响最大的一本书是《大教堂与市集》,该书教会我很有关开源开发过程如何运作,和如何处理我代码中的Bug。 – John Channing
15、《编程珠玑》
本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。
尽管我不得不羞愧地承认,书中一半的东西我都没有理解,但我真的推荐《编程珠玑》,书中有些令人惊奇的东西。 – 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、《高效程序员的45个习惯:敏捷开发修炼之道》
45个习惯,分为7个方面:工作态度、学习、软件交付、反馈、编码、调试和协作。
每一个具体的习惯里,一开始提出一个谬论,然后展开分析,之后有正队性地提出正确的做法,并设身处地地讲出了正确做法给你个人的“切身感受”,最后列出几条注意事项,帮助你修正自己的做法(“平衡的艺术”)。
29、《测试驱动开发》
前面已经提到的很多书都启发了我,并影响了我,但这本书每位程序员都应该读。 它向我展示了单元测试和TDD的重要性,并让我很快上手。 – Curro
我不关心你的代码有多好或优雅。 如果你没有测试,你或许就如同没有编写代码。 这本书得到的推荐数应该更高些。 人们讨论编写用户喜欢的软件,或既设计出色并健壮的高效代码,但如果你的软件有一堆bug,谈论那些东西毫无意义。– Adam Gent
30、《点石成金:访客至上的网页设计秘笈》
本书短小精炼,语言轻松诙谐,书中穿插大量色彩丰富的屏幕截图、趣味丛生的卡通插图以及包含大量信息的图表, 使枯燥的设计原理变得平易近人。
本书适合从事Web设计和Web开发的技术人员阅读,特别适合为如何留住访问者而苦恼的网站/网页设计人员阅读。 这是一本关于Web设计原则而不是Web设计技术的书。
本书作者是Web设计专家,具有丰富的实践经验。 他用幽默的语言为你揭示Web设计中重要但却容易被忽视的问题,只需几个小时, 你便能对照书中讲授的设计原则找到网站设计的症结所在,令你的网站焕然一新。
取决于你所追求的目标。 我喜欢《代码大全》是因纯编程,《点石成金》是一本有关UI设计的卓越书籍。 – Justin Standard
【推荐】程序员必读的三十本经典巨作相关推荐
- 在北上广的程序员们,三十岁以后你们会回老家做什么
在北上广的程序员们,三十岁以后你们会回老家吗?我们这些 程序员年纪越来越大了,大家有没有想过以后怎么办?大城市的房价太高根本就买不起,你们手上都存了多少钱了?三十岁以后程序员回老家以后,特别是老家是县 ...
- Jeff Atwood倾情推荐——程序员必读之书
英文版:<Code Complete 2> 中文版:<代码大全(第二版)> 作者:Steve McConnell 译者:金戈 汤凌 陈硕 张菲 出版社:电子工业出版社 出 ...
- 40岁的程序员还能找到工作吗_如果程序员已经到三十岁了,那他还能找到满意的工作吗?...
作为已经快奔四的老程序员,看到话题就想吐槽两句,三十岁的程序员正好是黄金时期,无论从编程经验还是身体状态,都处于一个极佳的状态,虽然程序员喜欢通过互联网的方式吐糟自己,特别是大家都在吐槽程序员都是吃青 ...
- 我的2016——程序员年到三十,工作第四年
看到CSDN<"我的2016"主题征文活动>已经是1月6号,而截止时间是1月8号,对比去年的总结是在闲等活动开始,今年在时间上真的是天差地别.但是,一年到头,还是需要花 ...
- 程序员——伤不起的三十岁
原文地址:http://blog.csdn.net/dean19900504/article/details/9566673 程序员干到30岁,好不容易从码奴混到了白领,却再也干不动了,还时时面临失业 ...
- 程序员年近三十,如何抉择,我打个样!
这是一个程序员放弃所有来北京的故事 1 为什么来北京 2 来北京面试全过程 3 对以后的展望及计划 选择解答 1 为什么来北京 我之前一直在一个三线城市工作生活,从大学没毕业就开始在一家哈尔滨企业实习 ...
- 站在31岁,理解程序员年过三十这道坎
2006年:25岁本科毕业,非计算机专业,因在学校自学ASP并做了几个网站,顺利应聘进了一家公司做公司网站,这边感谢下王总,他没有因为我不是计算机专业而不录用我: 2007年:换了一家公司,给企业建站 ...
- GO编程程序员修炼秘籍:十本经典书单
随着BAT.今日头条.京东.抖音等大型互联网公司对Go语言的大范围应用,带动更多互联网企业采取技术跟随战略,Go语言发展前景一片大好. 5月20日工业和信息化部信息中心发布<2018中国区块链产 ...
- 逻辑思维 代码人生 程序员必看的十大经典电影~!
不同的行业领域中很多时候都分享着共同的思想和理念.比如,大量的计算机编程中涉及到的概念都被运用到了电影里.有些概念出现在电影里后变得如此之 酷,甚至反过来能帮助我们程序员更好的理解这些概念.下面就是今 ...
最新文章
- 【从零开始的ROS四轴机械臂控制】(一)- 实际模型制作、Solidworks文件转urdf与rviz仿真
- python的des和3des加解密
- SAP UI5 Extension getCustomProperties
- cordova 人脸识别_html5与EmguCV前后端实现——人脸识别篇(一)
- ubuntu8.04安装java+eclipse+J2ME+wtk
- 终于解决H3C交换机reset saved-configuration后不能启动的问题
- linux显卡内核修改,如何为新内核添加老内核的显卡模块(私有驱动)
- 【东师软工】第二次成绩排行榜
- 树莓派安装OpenCV - 亲测可用
- 指付通盗刷信用卡维权连载--9月2日维权纪实
- Python爬取句子迷-莎士比亚语录
- 台式计算机驱动程序未被安装,Win7 提示未能成功安装设备驱动程序,无法安装USB驱动程序的解决方法!...
- Word中的图片保存后变模糊(失真)的问题的有效解决方案
- 指令,机器指令,指令周期,机器周期的辨析
- [2]十道算法题【Java实现】
- 【WLAN】【测试】WLAN相关测试软件一览
- 用深度学习构造聊天机器人简介
- 我的开源项目从0到1024的过程
- error C1083:无法打开文件stddef.h或crtd bg.h
- 下列python语句正确的是min_下列Python语句错误的是? 答案:min = x if x y else ymax = x y ? x : yif (x y) print x...
热门文章
- excel数据分类与自动填充
- 片上总线Wishbone 学习(十)总线周期之单写读操作
- 使用Excel连接WINCC生成报表的实现方法
- MIT 18.01 Single Variable Calculus(单变量微积分)课堂笔记【3】——求导四则运算和三角函数求导
- Solidworks二次开发平台 --- RyS.SwWorks [2015-09-18更新]
- 一个基于OpenDDS的股票报价Stock Quote和交易exchange 的完整用例介绍
- python提取一段字符串中的ip地址
- PMP - 活动持续时间估算题
- Pandas合并表格的方法总结
- python 绘制q-q图代码