16. 《修改代码的艺术》
作者: MichaelFeathers
我们都知道,即使是最训练有素的开发团队,也不能保证始终编写出清晰高效的代码。如果不积极地修改、挽救,随着时间流逝,所有软件都会不可避免地渐渐变得复杂、难以理解,最终腐化、变质。因此,理解并修改已经编写好的代码,是每一位程序员每天都要面对的工作,也是开发程序新特性的基础。然而,与开发新代码相比,修改代码更加令人生畏,而且长期以来缺乏文献和资料可供参考。
本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等),与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。
17.《编码:隐匿在计算机软硬件背后的语言》
作者: [美] 佩措尔德(Charles Petzold)
本书讲述的是计算机工作原理。作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。更重要的是,你会因此而获得对计算机工作原理较深刻的理解。这种理解不是抽象层面上的,而是具有一定深度的。
18. 《禅与摩托车维修艺术 /Zen and the Art of Motorcycle Maintenance》
作者: (美)罗伯特·M.波西格
在一个炎热的夏天,父子两人和约翰夫妇骑摩托车从明尼苏达到加州,跨越美国大陆,旅行的过程与一个青年斐德洛研修科学技术与西方经典,寻求自我的解脱,以及探寻生命的意义的过程相互穿插。一路上父亲以一场哲学肖陶扩的形式,将见到的自然景色,野外露营的经历,夜晚旅店的谈话,机车修护技术等等日常生活与西方从苏格拉底以来的理性哲学的深入浅出的阐述与评论相结合,进行了对形而上学传统的主客体二元论的反思,以及对科学与艺术,知识与价值,古典主义与浪漫主义,精神与物质,机械论与神秘主义,西方与东方等西方二分法划分下的事物间的关系的思考。并潜入自己的过去,探寻在现代文明下自己精神的分裂的起源,完成了一次自我心灵与人类文明的探索。
19. 《Peopleware /人件集:人性化的软件开发》
作者: Larry L.Constantine
《人件集:人性化的软件开发》是人件领域中的经典著作,以专题的形式探讨了软件开发中的人的因素。本书共分九个部分:第一部分介绍团队如何开展工作以及如何为开发更好的软件而更好地工作;第二部分涉及软件开发人员的不同观点;第三部分探讨团队组织和开发的问题;第四部分探讨开发者与其使用的工具之间的关系;第五部分针对提高软件质量提出了建议;第六部分着眼于软件可用性和用户界面设计问题;第七部分解释在用户界面设计和软件可用性方面的相同之处;第八部分探讨软件在沟通中涉及的一些话题;第九部分论述软件开发中的组织文化。
本书的许多内容收自作者在多本知名计算机杂志的人件专栏文章。本书适合所有开发并使用软件的设计人员、开发人员和管理人员阅读。
20. 《Coders atWork / 编程人生》
作者: Peter Seibel
界顶尖的程序员是怎么走上编程道路的?
他们的编程工作创造和改变了人类历史,在这一过程中都有哪些经验和教训?
他们对计算机软件行业的过去、现在和未来有什么独到的看法和见解?
他们对培养、发现、选拔、面试优秀的程序员有什么建议?
放下手头的工作,听听这些软件先驱们的故事和建议,眼界可以更开阔,思路可以更清晰,方向可以更明确,人生可以更精彩。
作者PeterSeibel采访了下面这15位世界级编程大师,本书是他在近80个小时的访谈录音基础上整理汇编而成的。
· JamieZawinski:Lisp程序员,XEmacs开发者,Netscape浏览器和Mozilla核心开发者。
· BradFitzpatrick:书中唯一的80后,LiveJournal和memcached开发者。现效力于Google。
· DouglasCrockford:JavaScript权威,JSON之父。现任Yahoo架构师。
· BrendanEich:JavaScript之父。Mozilla公司CTO。
· JoshuaBloch:如果说Gosling是Java之父,那Bloch就是使Java真正成熟的教父,Java 2到5的核心架构师。现为Google首席Java架构师。
· JoeArmstrong:Erlang和OTP(开放电信平台)框架之父。
· Simon PeytonJones:Haskell先驱。ACM会士。现为微软剑桥研究院研究员。
· PeterNorvig:Google研发总监。ACM会士。
· GuySteele:精通多门语言,Common Lisp和Scheme开发者之一,Java语言规范作者之一,CommonLisp、Fortran、C、ECMAScript和Scheme等语言标准化委员会成员。高性能科学计算的语言Fortress设计者。ACM会士,美国工程院院士。Sun公司院士。
· DanIngalls:与Alan Kay合作开发了Smalltalk,是该语言的真正实现者。现为Sun公司杰出工程师。
· L. PeterDeutsch:JIT(即时)编译技术发明者之一,PostScript文件浏览器GhostScript的作者。ACM会士。Sun公司院士。
· KenThompson:图灵奖得主。Unix之父。UTF-8 Unicode编码设计者。
· FranAllen:图灵奖第一位女得主。编译技术公认权威。IEEE院士,ACM会士,美国工程院院士。IBM院士。
· BernieCosell:Internet奠基人,ARPANET最早的路由计算机IMP设计者之一。
· DonaldKnuth:多卷本经典巨著《计算机程序设计艺术》的作者,排版软件TeX的作者,图灵奖得主。
21. 《Surely You’reJoking, Mr. Feynman! / 别闹了,费曼先生!》
作者: RichardFeynman
费曼得过诺贝尔奖,是现代最伟大的理论物理学家之一。但他同时也可能是历史上唯一被按摩院请去画裸体画、偷偷打开放着原子弹机密文件的保险箱,在巴西桑巴乐团担任鼓手的科学家。他曾跟爱因斯坦和波尔等大师讨论物理问题,也曾在赌城跟职业赌徒研究输赢机率。
22. 《EffectiveJava 中文版》
作者: (美)JoshuaBloch
本书介绍了在Java编程中57条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮的高效的代码。
本书中的每条规则都以简短、独立的小文章形式出现,这些小文章包含了详细而精确的建议,以及对语言中许多细微之处的深入分析,并通过例子代码加以进一步说明。贯穿全书的是通用的语言用法的设计模式,以及一些具有启发意义的技巧的技术。
23. 《Patterns ofEnterprise Application Architecture / 企业应用架构模式》
作者: Martin Fowler
《企业应用架构模式》作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。《企业应用架构模式》获得了2003年度美国软件开发杂志图书类的生产效率奖和读者选择奖。《企业应用架构模式》分为两大部分。第一部分是关于如何开发企业应用的简单介绍。第二部分是《企业应用架构模式》的主体,是关于模式的详细参考手册,每个模式都给出使用方法和实现信息,并配以详细的Java代码或C#代码示例。此外,整《企业应用架构模式》中还用了大量UML图来进一步阐明有关概念。
《企业应用架构模式》是为致力于设计和构建企业应用的软件架构师、设计人员和编程人员而写的,同时也可作为高等院校计算机专业及软件学院相关课程的参考教材。
24. 《The LittleSchemer》和《The Seasoned Schemer》nmiranda(尚无中文版)
作者: Daniel P.Friedman / Matthias Felleisen
This delightfulbook leads you through the basic elements of programming in Scheme (a Lispdialect) via a series of dialogues with well-chosen questions and exercises.Besides teaching Scheme, The Little Schemer teaches the reader how to thinkabout computation. The authors focus on ten essential concepts of thinkingabout how to compute and demonstrate how to apply these concepts in inventiveways. The Little Schemer is an excellent book both for the beginner and for theseasoned programmer.
作者: Daniel P.Friedman / Matthias Felleisen
drawings byDuane Bibbyforeword and afterword by Guy L. Steele Jr.The notion that"thinking about computing is one of the most exciting things the humanmind can do" sets both The Little Schemer (formerly known as The LittleLISPer) and its new companion volume, The Seasoned Schemer, apart from otherbooks on LISP. The authors' enthusiasm for their subject is compelling as theypresent abstract concepts in a humorous and easy-to-grasp fashion. Together,these books will open new doors of thought to anyone who wants to find out whatcomputing is really about. The Little Schemer introduces computing as anextension of arithmetic and algebra;things that everyone studies in gradeschool and high school. It introduces programs as recursive functions andbriefly discusses the limits of what computers can do. The authors use theprogramming language Scheme, and interesting foods to illustrate these abstractideas. The Seasoned Schemer informs the reader about additional dimensions ofcomputing: functions as values, change of state, and exceptional cases. TheLittle LISPer has been a popular introduction to LISP for many years. It hadappeared in French and Japanese. The Little Schemer and The SeasonedSchemer areworthy successors and will prove equally popular as textbooks for Schemecourses as well as companion texts for any complete introductory course inComputer Science.
25. 《交互设计之路》(TheInmates Are Running The Asylum: Why High Tech Products Drive Us Crazy andHow to Restore the Sanity》)
作者:Alan Cooper
本书是基于众多商务案例,讲述如何创建更好的、高客户忠诚度的软件产品和基于软件的高科技产品的书。本书列举了很多真实可信的实际例子,说明目前在软件产品和基于软件的高科技产品中,普遍存在着“难用”的问题。作者认为,“难用”问题是由这些产品中存在着的高度“认知摩擦”引起的,而产生这个问题的根源在于现今软件开发过程中欠缺了一个为用户利益着想的前期“交互设计”阶段。“难用”的产品不仅损害了用户的利益,最终也将导致企业的失败。本书通过一些生动的实例,让人信服地讲述了由作者倡导的“目标导向”交互设计方法在解决“难用”问题方面的有效性,证实了只有改变现有观念,才能有效地在开发过程中引入交互设计,将产品的设计引向成功。
本书虽然是一本面向商务人员而编写的书,但也适合于所有参与软件产品和基于软件的高科技产品开发的专业人士,以及关心软件行业和高科技行业现状与发展的人士阅读。
26. 《Why’s(Poignant) Guide to Ruby 》
作者:why the lucky stiff
The book isunusual among programming books in that it includes quite a lot of strangehumour and narrative side tracks which are sometimes completely unrelated tothe topic. Many motifs have become inside jokes in the Ruby community, such asreferences to the words "chunky bacon". The book includes manycharacters which have become popular as well, particularly the cartoon foxesand Trady Blix, a large black feline friend of why's, who acts as a guide tothe foxes (and occasionally teaches them some Ruby).
27.《Unix编程艺术》
作者: Eric S.Raymond
本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一EricS.Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。本书内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。
28. 《Practices ofan Agile Developer / 高效程序员的45个习惯:敏捷开发修炼之道》
作者: VenkatSubramaniam / Andy Hunt
“书中‘切身感受’的内容非常有价值——通过它我们可以做到学有所思,思有所悟,悟有所行。”
——Nathaniel T.Schutta,《Ajax基础教程》作者
“此书通过常理和经验,阐述了为什么你应该在项目中使用敏捷方法。最难得的是,这些行之有效的实战经验,竟然从一本书中得到了。”
——MatthewJohnson,软件工程师
十年来,软件行业发生了翻天覆地的变化。敏捷方法大行其道,测试和测试驱动开发在很多开发人员的工作中扮演着重要的角色。作为一名程序员,你应该培养怎样的素质,方能对多变的环境应对自如,始终立于不败之地?
本书简明实用、见解深刻,总结了高效程序员在开发过程中的45个个人习惯、思想观念和方法,有助于开发人员在开发进程、编码工作、开发者态度、项目和团队管理,以及持续学习等5个方面积极修炼。通过学习这些内容,养成这些好的习惯,你可以极大地提升自己的编程实力,更快速、更可靠地交付更高质量的软件,从而成为真正的高效程序员。
29. 《Test-DrivenDevelopment by Example. / 测试驱动开发》
作者: Kent Beck
《测试驱动开发》(中文版)设想把编程看成是转动曲柄从井里提一桶水上来的过程。如果水桶比较小,那么仅需一个能自由转动的曲柄就可以了。如果水桶比较大而且装满水,那么还没等水桶全部被提上来你就会很累了。你需要一个防倒转的装置,以保证每转一次可以休息一会儿。水桶越重,防倒转的棘齿相距越近。测试驱动开发中的测试程序就是防倒转装置上的棘齿。一旦我们的某个测试程序能工作了,你就知道,它从现在开始并且以后永远都可以工作了。相比于测试程序没有通过,你距离让所有的测试程序都工作又近了一步。现在我们的工作是让下一个测试程序工作,然后再下一个,就这样一直进行。分析表明,要编程解决的问题越难,每次测试所覆盖的范围就应该越小。
30. 《Don’t Make MeThink / 点石成金:访客至上的网页设计秘笈》
作者: [美]史蒂夫·克鲁克
可用性设计是Web设计中最重要也是最困难的一项任务。《点石成金》的作者根据自己多年从业的经验,剖析用户的心理,在用户使用的模式、为浏览进行设计、导航设计、主页布局、可用性测试等方面提出了许多独特的观点,并给出了大量简单、易行的可用性设计的建议。这本书短小精悍,语言轻松诙谐,书中穿插大量色彩丰富的屏幕截图、趣味丛生的卡通插图以及包含大量信息的图表,使枯燥的设计原理变得平易近人。
此书适合从事Web设计和Web开发的技术人员阅读,特别适合为如何留住访问者而苦恼的网站/网页设计人员阅读。
小编公众号「码农之屋」(id: Spider1818) ,欢迎大家关注,关注后回复“资料”,可免费获取上百本计算机类电子书,快来关注哦~~~