文化行业

注册

 

发新话题 回复该主题

作为一个有理想的程序员,必读的书都有哪些 [复制链接]

1#
白癜风诚信企业 http://nb.ifeng.com/a/20180331/6472849_0.shtml

《暗时间》的作者刘未鹏曾说过:“很多时候,是否好好看完一本好书,对一个人的提升往往能达到质的区别。

其中起到关键性作用的,是“好书”二字。“就算不好好看完一本好书,只要书是真的好书,也肯定会有很大的提高。”

但是一旦读到坏书,将大大影响你的学习效率和思考方向。“读烂书浪费时间,但读好书却节省时间。”

想必在此之前大家都已经看过不少类似的书籍推荐,部分书单一次性列出太多书目,不仅让人挑花了眼,不同的人对不同书籍的评价也是众说纷纭。

所以本次答主“优中选优”,分别从技术经典、实用工具、思维进阶和职场知识四个维度精选了几本经典书籍。

看书贵精不贵多,将以下书籍全部吃透,相信可以帮助大家全方位提升。

一、技术经典

《C程序设计语言(第2版·新版)》(《TheCProgrammingLanguage》)

作者:[美]BrianW.Kernighan/[美]DennisM.Ritchie

《C程序设计语言》是提到计算机科学领域的书籍绝对绕不开的一本书,如果有人没提到,评论区的各路大神们一定也会给到补充。

《C程序设计语言》是一部介绍标准C语言及其程序设计方法的权威性经典著作,由C语言之父DennisM.Ritchie和著名计算机科学家BrianW.Kernighan合著而成。所以这本书在领域内也被称为:你永远可以相信的“K&R”!

《C程序设计语言》被奉为“C语言的圣经”,全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本概念、类型和表达式、控制流

、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口、标准库等内容。

事实上,领域内的权威人物就是我们永远的指路明灯,跟着他们可以少走很多弯路。这本书能够让你高效地打下扎实的计算机基础,而又不用把操作系统计算机结构编译原理这些书通读一遍。

若是阅读初期感觉比较深,可以用CPrimerPlus作为过渡。并且,在学习C语言时,建议能够先安装一个Linux操作系统,实践出真知,结合实操能够让你理解知识更透彻。

《深入理解计算机系统》(《ComputerSystemsAProgrammersperspective》)

作者:RandalE.Bryant/DavidOHallaron

这一本书也是老生常谈了。

这是每个程序员都不可错过的一本书籍,看不完至少也要看前三章(强烈建议读完)。因为讲述深入浅出,配合典型例证,通俗易懂,实用性强,所以也是国内外诸多名校的必修基础课程,公认的经典中的经典。

就算不用C语言,也可以作为论文写作的参考样板,学习它行文结构和思路。

与《算法导论》和《计算机程序设计艺术》合称为计算机科学的三本圣经。

《算法导论(第3版)》(《IntroductiontoAlgorithms》)作者homasH.Cormen/CharlesE.Leiserson/RonaldL.Rivest/CliffordStein

这本书深入浅出,全面地介绍了计算机算法。对每一种算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。

“计算机算法里的圣经”,阅读此书需要拿出在学校上课的状态,这本书也确实是MIT的教材。建议可以先阅读《算法》或者其他数据结构与算法的书,并结合LeetCode刷题。

二、实用工具书

《代码大全(第2版)》(《CodeComplete》)作者:[美]SteveMcConnell

一本编程圣经,所有需要写代码的人都建议读一下。

SteveMcConnell的原作《代码大全(第1版)》是公认的关于编程的最佳实践指南之一,在过去的十多年间,本书一直在帮助开发人员编写更好的软件。

现在,作者将这本经典著作完全重写,融入了最前沿的实践技术,加入了上百个崭新的代码示例,充分展示了软件构建的艺术性和科学性。

McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识,把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。无论是经验丰富的程序员、技术带头人、还是自学的程序员,不管你在怎样的开发环境中工作,也无论项目是大是小,本书都将激发你的思维并帮助你在更短的时间内,构建高品质的代码。

《代码大全(第2版)》做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与通用的概念的讨论等等。

许多人认为这本书的中文译名并没有这么准确,曾经听过“CodeComplete”还有一个译法是“代码解冻”,按照这个译法,或许原作者是在教我们如何以在经过测试之后,发布上线以前不再修改为目标去编写代码。

一本《论语》似的书。初读时你可能会觉得“浅显”甚至“离谱”,但是一边工作一边带着踩过的坑来看,会发现它为代码实践提供了重要的方法论,并且在代码、项目和人性管理上有相当的普适性。

《代码整洁之道》(《CleanCode:AHandbookofAgileSoftwareCraftsmanship》)

作者:[美]RobertC.Martin

软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。

本书提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上有保证,也为后期运维奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并提供了来自实际项目中的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

本书写了作者的经验之谈,很多都值得学习,但也不能盲目轻信,读任何书的时候都需要审慎思考。

对于刚开始工作的同学们,接触过的代码还不够多,读设计模式之类的书可能还没什么体会。但这本提供代码细节的书,却是能立竿见影,直接用到工作中去的。

《重构:改善既有代码的设计》(《Refactoring:ImprovingtheDesignofExistingCode》)

作者:MartinFowler

书中给出了70多个可行的重构示例,演示了重构的过程,并且解释了重构的原理和最佳实践方式。每个重构都介绍了一种经过验证的代码变换手法的动机和技术。

《重构:改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。

重要的不只是具体的方法,正如书中总结所说,懂这些只是入门,知道何时重构,选择哪种方法重构,何时停止重构才是需要更进一步感悟的地方。能够从此书中明白提升代码品位和行动力的重要性就是弥足珍贵的了。

觉得太长的,可只看目录和要点列表,将本书作为一个重构方法论合集的索引。

《设计模式:可复用面向对象软件的基础》(《DesignPatterns:ElementsofReusableObject-OrientedSoftware》)

作者:[美]ErichGamma/RichardHelm/RalphJohnson/JohnVlissides

本书结合设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计

中有价值的经验,并且用简洁可复用的形式表达出来。

本书分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别有用。适合大学计算机专业的学生、研究生及相关人员参考。

对本书的阅读建议是先积累一定编程经验,并且看之前先看重构和(或)代码简洁之道,最终目的都是为了复用和减少耦合。

正如书中所讲述的那样“这不是读完一遍就可以束之高阁的书”。只有在实际应用中去应用它,才能体会到设计模式带来的优势与艺术。

三、思维进阶

这一部分书籍会深入软件开发的心理层面,帮助大家在思维上有所进益。

《人月神话》(《TheMythicalMan-Mouth》)

作者:[美]FrederickP.Brooks,Jr.

弗雷德里克·布鲁克斯(FrederickP.Brooks,Jr.)是北卡罗莱纳大学Kenan-Flagler商学院的计算机科学教授,图灵奖的获奖者之一。他被认为是IBM系统之父,曾担任系统的项目经理、操作系统项目设计阶段的经理。

作者为人们管理软件工程的复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。书中的内容来自布鲁克斯在IBM公司System家族和OS中的项目管理经验。

初版的20年后,布鲁克斯重新审视了他原先的观点,增加了一些新的想法和建议。新增加的章节包括:原著中一些核心观点的精华;在经过了一个时代以后,布鲁克斯博士对原先观点新的认识;年的经典文章《没有银弹》;对年所下论断(在10年内不会出现银弹)现在的认识。

经典之所以是经典是因为其中的内容经久不衰。虽然部分内容可能已经有些过时,但是如概念完整性,人的重要性,增量式开发等实用的思想到现在仍有存在感。

即使你遇到的是与书中不同的事例,但是深究之下会发现其中的共性问题。此书能帮助大家更好地在较大的团队软件项目中进行实践,十分适合有志于向项目管理层面发展的小伙伴。

《人件集:人性化的软件开发》(《ThePeoplewarePapers》)

作者arryL.Constantine

又是一本超越了时间空间的经典书目。

“管理上的最大罪行是浪费人的时间”。本书从人的因素出发来分析和挖掘软件开发中的风险/成本/进度等方面的制约和协调艺术。对当今的项目管理仍然有宝贵的借鉴意义。

《编程珠玑》(《ProgrammingPearls》)

作者:[美]JonBentley

《编程珠玑》书如其名,是计算机科学大师JonBentley从围绕程序设计人员面对的一系列实际问题中凝结出的一篇篇不朽的编程“珠玑”。

本书的确在强调算法,但作者更多地是在表达一种算法之外,解决问题的思维方法:高效的算法没错,但是如何正确选择和高效地实现算法更重要。

本书通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。

探究问题的本质,真正的优雅地解决问题,才是本书所要传达的精神。

正如作者所说:“一天读一章足以。”这本书一天读10页绝对是囫囵吞枣!

《程序员修炼之道:从小工到专家》(《ThePragmaticProgrammer》)

作者:AndrewHunt/DavidThomas

顾名思义,“从小工到专家”意味着这本书从初学者到有经验的程序员,再到软件项目经理都适合阅读。

因为它在内容上颇为全面,由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。

在写作的趣味性上,作者利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。

本书列举了从业者在成长道路上必经的弯路,同样适合一边实践一边阅读,能够帮助你解决许多当下遇到的难题。

告诉人们如何从业者团队化和产品角度思考整体问题,并且附录提供了完整的思考指南和贴士。在行动之前,问自己“我为什么这样做?这样做值得吗?”

《素数之恋》(《PrimeObsession:BernhardRiemannandtheGreatestUnsolvedProbleminMathematics》)

作者:JohnDerbyshire

《素数之恋》是一本科普读物。围绕黎曼猜想,深入浅出地阐述了相关知识以及数学家们的趣闻轶事。目标是让非数学专业的读者可以理解这个数学中最深奥的问题,感受数学之美。

作者在序言中说道:“如果你读完我的书以后还不理解黎曼假设,那么你可以断定,你将永远理解不了它”。

《黑客与画家》(《HackersandPainters:BigIdeasfromtheComputerAge》)

作者:[美]PaulGraham

相信无论是程序员还是非程序员,对计算机领域中的的职业,都有过一个“黑客”的幻想。那么“黑客”与“画家”的碰撞,也太酷了吧!

这是一本能引发技术人思考的佳作,真正意义上的黑客精神、创业、编程语言,是这本技术散文集的三个主题。

当然,你可以对作者试图灌输给你的价值观和说教予以真诚的拒绝。

四、职场知识

《软技能:代码之外的生存指南》(《SoftSkillshesoftwaredeveloperslifemanual》)

作者:[美]JohnZ.Sonmez

为了未来更好的发展,我们都在努力地把技能点点满。但步入了工作岗位朋友们应该都知道,技能还分硬技能和软技能。

对于程序员来说,硬技能就是上述书籍中我们提到的技术相关的知识。软技能则是除了自身工作岗位必备的知识和使用工具的能力外,围绕着工作和生活的方方面面产生的相关能力。在相似的技术水平下,软技能能够成为你在职场上获得差异化竞争力的关键!

计算机科学的知识世界浩如烟海,不像K&R和CSAPP等绝大部分书籍

分享 转发
TOP
发新话题 回复该主题