软件人员推荐书目(一)大师篇—好的软件人员一生必看的六十本书龙湘明(Dragon)2005/5/9北京邮电大学网络与交换国家重点实验室/计算机学院交换与智能控制研究中心北京正方兴网络技术有限公司(:)xmlong@263.netxmlong@mt2.com.cn自序QQ:9550898本文推荐的这些书目是给那些真正的软件实践者和思考者使用的。按照传统一点的说法,就是那些站在“软件生产第一线”的人,他们可能是项目经理、质量经理、测试经理、软件架构师、软件工程师、测试工程师等等。他们会在软件这个行业待上5年甚至一生。他们希望在这个领域有所进步和发展。所以,如果你仅仅是一名软件开发的普通爱好者,偶尔会对软件感到好奇,那么,除了“科学哲学”和“管理哲学”中推荐的书目外,其他的对你可能就没有多大用处了。然而,对于那些“真正的”软件人员和技术管理人员,所有这些书都值得花一生的时间去反复阅读。我始终认为,“实践”和“书本学习”是并重的,并且是相辅相成的。这里所说的“书本学习”,绝不是中学或者大学课堂上为了应付考试的那种学习,而是为了更好的充实你自己而进行的学习,是为了更出色的完成实际工作而进行的学习,是为了从方法、理论、思想上提升你自己而进行的学习。诚然,“只学不用”的人只是一个书呆子而已,在实际中毫无用处;而“只用不学”的人也必然只会在原地踏步,他们可能会有不少经验的积累,但难有实质性的提高。只有不断的实践、学习;学习、实践,你才可能真正提高,最后成为一名大师也不无可能。但是,计算机的书籍实在太多了,汗牛充栋,良莠不齐。读“差”的书不仅没有裨益,反而浪费时间,甚至误人子弟。相反,好书让人受益匪浅,事半功倍。一本好的书,经得起时间的考验,可以反复的揣摩、玩味和鉴赏。据说,毛泽东一生曾阅读“资治通鉴”50余遍,历时40余载,连外出视察都带在身边,从不离手。这就是一本“好书”的魅力,历经千年岁月,光辉丝毫不减。同样,本文推荐的这些书目,虽然不是用来治国治家的,但在软件领域,绝对是可以日日摆在你案头、陪你度过一生的好书。这些书目,有些是某个领域的入门之书,有些是提高进阶之书,更多的是“宝典”甚至“圣经”式的书,还有不少是具备相当的思想深度、理论深度和哲学高度的书。这些书的作者,大都是计算机领域最顶尖的人物,他们或者单独开创了某个领域,或者是某个领域的集大成者。他们可能是计算机界最杰出的思想家、科学家、教育家,也可能是软件公司的最好的架构师、CTO。用流行的话说,他们是“大师级”的人物。这些大师,有的获得了计算机界最高荣誉-美国计算机协会“图灵奖”,有的入选美国计算机博物馆的“计算机名人堂“,他们是计算机界无可争议的真正的大师。而这些大师的书,也很多都获得了计算机图书界最高的“震撼大奖”(JoltAward),也有获得世界企业学会最高荣誉的“开拓者奖”。其它的倒不是因为不能获奖,在我看来,而是奖项本身与这些名著相比,已经显得黯然失色。而且你会发现,这里甚至有堪称与牛顿的“自然科学的数学原理”和爱因斯坦的“相对论”相媲美的计算机领域的史诗般的巨著。这些书很多都一版再版,历久不衰。读大师的书,无论从心灵、思想和技术上,你都能获得一种醍醐灌顶式的震撼、拍案叫绝式的享受。当然,从我本人来讲,并不建议你用“彻底崇拜”式的态度阅读这些书,尽管它们的作者是大师,但人无完人,由此产生的思想和技术也是如此。更何况计算机和软件领域本来就是一个发展很快的领域。当然,我更不希望你用“王朔”式的“见人就咬”的“彻底否定”的态度阅读这些书,因为那实在是对大师们的亵渎,连我都会为大师们鸣不平。我建议你用一种“健康的怀疑精神”(C++之父Stroustrup语)阅读这些书。你应该明白为什么要在“怀疑”前加上“健康”二字,那是提醒你带着一种崇敬和肃穆之情去冷静的接受、质疑和否定大师们的观点,在“否定之否定”基础上让你自己得到真正的提升。唯有这样,那些书本上的东西才能真正成为你自己思想和灵魂深处的东西;否则,它们永远只是书本上的他人的东西而已。今天是5月9日,这是一个令人激动同时也是沉重的日子,因为它是苏联伟大卫国战争胜利60周年纪念日。在这样一个日子里,我同样也怀着非常激动的心情诚挚的向大家推荐这些书,就是希望这些书能被更多的国人所传阅。我们的先辈们用鲜血为我们换来了和平,我们有什么理由不珍惜这宝贵时光?在举世共同纪念世界反法西斯胜利的今天,我们却有一个令人憎恶的邻国不思悔改,反而虎视眈眈、欲卷土重来,我们还有什么理由不奋发图强?令我唯一感到遗憾的是,这些书的作者中没有一个是中国人。我们仅仅只能做这些书的翻译者。有趣的是,许多人甚至因为是这些书的译者便享誉业界。这虽然从另外一个侧面反映了这些书的影响和原作者本人的威望,但多少有点令我辈心酸,尤其在这个特殊的日子里。好了,不管怎样,科学是没有国界的。就让我们开始进入大师们的世界吧。致谢本文部分内容来自实验室同仁温嘉佳和互动出版网、华储网、当当网,以及许多无名英雄,在此谨表谢意。谨以此书献给世界反法西斯战争暨中国抗日战争胜利60周年!目录软件人员推荐书目(一)大师篇.........................................................................................—好的软件人员一生必看的六十本书....................................................................................自序...........................................................................................................................................1致谢...........................................................................................................................................3前言...........................................................................................................................................7一、科学哲学和管理哲学.............................................................................................13【1】“程序开发心理学”(ThePsychologyofComputerProgramming:SilverAnniversaryEdition)....................................................................................................13【2】“系统化思维导论”(AnIntroductiontoSystemsThinking,SilverAnniversaryEdition)14【3】“系统设计的一般原理”(GeneralPrinciplesofSystemsDesign)............15【4】“质量·软件·管理(第1卷)——系统思维”(QualitySoftwareManagement:SystemsThinking)........................................................................................................16【5】“成为技术领导者——解决问题的有机方法”(BecomingATechnicalLeader:AnOrganicProblem-SolvingApproach)..............................................................................16【6】“你的灯亮着吗?-发现问题的真正所在”(AreYourLightsOn?HowtoFigureOutWhattheProblemReallyIs).................................................................................18【7】“程序员修炼之道”(ThePragmaticProgrammer).....................................20【8】“与熊共舞:软件项目风险管理”(WaltzingWithBears:ManagingRiskonSoftwareProjects)...........................................................................................................23【9】“第五项修炼:学习型组织的艺术与实务”(TheFifthDiscipline)............24二、计算机科学基础.....................................................................................................26【10】“计算机程序设计艺术”(TheArtofComputerProgramming)......................26【11】“深入理解计算机系统”(ComputerSystemsAProgrammer'sPerspective)..29【12】“算法导论”(IntroductiontoAlgorithms,SecondEdition)....................30【13】“数据结构与算法分析——C语言描述(原书第2版)”(DataStructure&AlgorithmAnalysisinC,SecondEdition)......................................................................31【14】“自动机理论、语言和计算导论(第2版)”(IntroductiontoAutomataTheory,Languages,andComputation(SecondEdition))...................................................32【15】“离散数学及其应用(原书第四版)”(DiscreteMathematicsandItsApplications,FourthEdition)................................................................................................................33【16】“编译原理”(Compilers:Principles,TechniquesandTools)..............34【17】“现代操作系统”(ModernOperatingSystem)................................................35【18】“计算机网络(第4版)”(ComputerNetwor