计算机及相关经典书籍收集

1.Java程序设计教程实验手册(翻译版)

目前为止,《Java程序设计教程实验手册(翻译版) 》这本书是我见过的最好的编程书。从第一章到第十章,里面的所有习题都做一遍。当你做完了这些,你就对编程有了相当的掌握了。

2.代码大全,CodeComplete

SteveMcConnell的这本书是软件开发领域里的《烹饪的乐趣》。如果你对这本书感兴趣,说明你热爱你现在的工作,你对你正在做的事情是认真的,并且你想不断地提升自己。Steve在这本书里指出,普通程序员每年所读的技术书籍不足一本。仅仅只需阅读这本书,你就有可能超越身边90%的程序员。这绝对是个好主意!

3.人月神话,TheMythical Man-Month

毫无疑问,这是我们领域里惟一的一本经典图书。如果你还没读过,你应该觉得丢脸!

4.点石成金:访客至上的网页设计秘笈,Don'tMake Me Think

这是我曾读过的、在“可用性”方面讲得最好的一本书。尽管这本书的副标题说的是“Web可用性”,但你不要被它迷惑了。SteveKrug在这本书里谈到了“可用性”所有的重要概念,而且入木三分。这本书读起来很有乐趣。如果“可用性”方面的书你只打算读一本,那就选这本吧!

5.快速软件开发,RapidDevelopment

在我们的领域里,“惟一不变的就是变化”。这样的领域是不多的,而我们很不幸就身处其中。因此,我们惟一能做的就是拥抱变化,并且尝试各种不同的“快速”开发技巧。但不要走极端!我们不能假设:“自1970年以来发生的变化是如此之大,以致于跟我们最新、最热门的技术比起来,所有的传统软件开发经验都已经过时、毫无用处了。”还是那个说法:计算机已经变了,但人没有变。在你开始做任何事之前,至少了解一下什么是行得通的、什么是行不通的。拿SteveMcConnell的话来说,“在开始刷漆之前要先读一读油漆罐上的说明。”这听起来似乎是理所当然的,但在读了这本书之后你就会发现,我们领域里真正那样做的人简直就是凤毛麟角。

6.人件,Peopleware

如果你曾经亲眼目睹一支全明星运动队在一个糟糕教练的带领下表现平平,你一定会喜欢这本书。不管你有多少“编程高手”,如果他们相互之间没有沟通,或者互不认同,结果你还是会失败。这本书还指出,不管开发人员多么有天赋,如果他们持续不断地受到各种干扰(哪怕干扰很细微),没有人能在这种情况下有效地开展工作。说白了,开发人员在人际技能方面并不见长,但具有讽刺意味的是:项目成功与否常常取决于人际的问题。如果你渴望成为真正的“团队领导”(而不是徒有虚名),你必须好好地读一读这本书。

7.设计心理学,TheDesign of Everyday Things

开发软件可能给人带来难以置信的挫折感,因为过程中有太多的陷阱。我们所做的事中很多都是带有预防性质的:在一件事情还没出错之前,先试想它将会出错。这能使人心智衰弱,而且最终可能以一些负面的方式让人“心想事成”。在向不懂技术的人解释的时候,我有时候会说:这就像制造一块有1000个零件组成的手表一样,在哪怕最轻微的震动之下,任何一个零件都可能随机出错。这真是一份“好差事”啊!

8.AboutFace 3:交互设计精髓,AboutFace 3: The Essentials of Interaction Design

在展现风格一致的图形用户界面方面,这本书和《GUI设计禁忌》一起被认为是具有教育性质的规则手册。但这本书满满地记录了更为通用的指导原则。在用来做范例的GUI问题中(很多都是古老的Windows95界面),评判一下哪些已经基本被解决了(使用可视化的方式来展示对话框选择的效果)以及哪些还没有被解决(白痴的模态对话框让程序中止运行),这其实挺有趣的!

9.交互设计之路——让高科技产品回归人性,TheInmates Are Running the Asylum: Why High Tech Products Drive UsCrazyand How To Restore The Sanity

AlanCooper就是从这本书开始给大家推介了“人物角色”这个概念:与其把用户想象成抽象的、难以描述的、琢磨不透的一群人,还不如用“人物角色”来促使我们谈论一些具体的用户,他们有名字、有个性、有需求、也有目标。我们的用户想要一个打印预览的功能吗?谁知道呢?但如果作为客户经理的GerryManheim必须每周打印他的费用报告(这是他工作的一部分),你最好相信打印预览功能是必需的。其实没什么神奇的;像以前一样,归根结底你还是要知道你的用户是谁,以及他们真正想要的是什么——“人物角色”这个方法用来达到那个目的是再适合不过的了。

10.GUI设计禁忌,GUIBloopers

遥想微软的Windows95和苹果的System7流行之时,那时候还真有一些关于GUI(图形用户界面)的设计准则。这本书就收录了这些核心准则,包括菜单上的省略号、对话框上按钮和文字的对齐方式等等。但有多少用户能真正理解这些准则呢?这是有争议的。不过,如果你遵循这些准则,你至少可以期望A程序的用户界面会跟B程序的表现得很相似。现如今,网络内容的表现形式鱼龙混杂,特别是每天都会有一些Flash设计新手另起炉灶,标新立异地自创一套GUI。因此,温故一下这门“经典的”关于GUI设计准则的课程还是很有好处的。

11.编程珠玑,ProgrammingPearls

对于是否要推荐这本书,我曾经犹豫过,因为它包含了一些非常底层的编码技术。但这本书里同时也蕴藏了相当多的软件工艺方面的“珍珠”,这使得它仍然值得所有开发者都去读一读。任何包含下面这种图片的图书都是很有价值的宝书。它就用来展示TRS-80DECAlpha之间48nn3的算法复杂度差异吗?兄弟,拜托……没有比那更好的了!如果你不能幸运地跟一位大师级的程序员并肩而坐,并且在一起工作大约一年的时间,那么买一本《编程珠玑》就是退而求其次的最佳选择了。这本书是集体智慧的结晶,凝聚了很多技能娴熟的程序员的贡献,并最终汇编成了一个个精粹而容易被人理解的专题栏目。

我不想骗你!其实,这本书的很多章节你都可以忽略。比如说,像第111314章谈到的排序、堆或者哈希算法,当今有很多成熟的库早已实现了这些基本技术,我想不出任何理由你需要去把它们重新实现一遍。但对于每一个枯燥的课本练习,这本书的确给出了一些实用的建议。你尽可以快速翻阅这本书,碰到有代码的部分就跳过去……听我的准没错!第7章“封底计算”是要点,那也许是我曾见过的在“估算”这个专题上最好的论述。它还用很大的篇幅去解释了那些疯狂的面试问题,而一些公司往往热衷于用那些问题来考验我们……

如果你还在犹豫,建议你到网上去读一读这本书的样章。最近,我把从“珍珠字符串”那一章学到的东西付诸实践,我在生成合成数据填入一个空数据库的时候使用了马尔科夫链——这也证明了在“封底计算”那一章谈到的性能估算技术。

12.程序员修炼之道:从小工到专家,ThePragmatic Programmer: From Journeyman to Master

这本书让我想起了《编程珠玑》里的很多内容,但它事实上比《编程珠玑》更好,因为它不再拘泥于代码。作者摆脱了代码的束缚,转而专注于真实世界里已经被证明切实可行的方法,并把它们统统都收录进了这本书。严格来说,不是所有的事情都跟编程有关系。比如,自问“我为什么要做这件事?它究竟值得去做吗?”并不算是创意性思维,你恰恰应该每天都这么问问自己,以使你和你的同事始终保持清醒的头脑。这也正是这本书的可贵之处!

13.Web可用性设计,DesigningWeb Usability

JakobNielsen因为创办了关于“可用性”的网站(http://www.nngroup.com)而名噪一时。自从他在1989年出版了第一本书以来,他便开始了可用性专家的职业生涯。这是一本不折不扣的关于Web可用性设计的初级读本,因此跟AlanCooper专注于GUI的图书还是有些不一样的。

14.精通正则表达式,MasteringRegular Expressions

15.软件开发者路线图ApprenticeshipPatterns: Guidance for the Aspiring Software Craftsman

现在的互联发达了,我们真的要放弃人带人的“落后”文明传承方式了么。这本书不但彻底否定了上述命题,还告诉我们如何去寻觅导师,如何向导师学习。说真的,我对作者说的每一个字都非常赞同。现在互联网是发达了,但是那种发自内心的交流欲望是谁也不能授予的。资源再多,不去利用,不会利用,到头来也是虚无。这又是一本Thoughtworks系的书。为什么说又呢?哈,市面上的Thoughtworks的书籍我基本上都看过,质量非常高。

16.深入理解计算机系统(原书第2版),ComputerSystems: A Programmer's Perspective

豆瓣评分9.7

CMU是全美以至全球公认的CS最猛的大学之一,没办法,作为CS的发源地,再加上三位神一样的人先后在此任教:AlanPerlisCS它祖宗+第一届Turing奖获得者)、AllenNewellAI缔造者+Turing奖获得者)和HerbertSimonAI缔造者+Turing奖获得者+Nobel经济学奖获得者,当代的Leibniz,偶佩服到死的一个天神下凡级的人物,他的自传Modelsof mylife偶特意珍藏了两本),三位巨头培养出一大摊小神级别的人物,这一大摊小神级的人物又培养出一大坨天才级人物(其中就有跳槽猥琐男开复哥)。 
     
偶估计那个钢铁猥琐男和银行经管男在投资时肯定不会想到,这个以他们名字命名的破烂学院在未来会如此NB,尤其还是在CS这个上如此NB。 
     
NB
学校,自然用NB教材,更何况是CS里非常重要的计算机导论,而CMU的计算机导论教材就是CMU计算机系主任的作品:CSAPP。 

17.C程序设计语言,TheC Programming Language

这是一本programmer写给programmer看的书。世界真是不公平,与这本书的简洁和实用相比,我们可以看到多少技术作者。或醉心于细节不能自拔,或缺少实际经验而只能纸上谈兵。他们的一切殚精竭虑和呕心沥血,也只能毁人无数而已。

本书的习题集相当强大,令人受益匪浅。

18.Linux内核设计与实现,LinuxKernel Development

LDK很适合在你系统地学习了OS理论之后,直接看代码详解又觉得暂且还不够功力的学习者,它可以带你由理论学习阶段逐渐过渡到实践阶段。对于这样一部书,要是太厚就有点骗钱的嫌疑,要是太深入又会让人觉得作者故意显摆自己的学识。LDK算得上是恰到好处。

19.深入理解Linux内核,Understandingthe Linux Kernel

为了彻底理解是什么使得Linux能正常运行以及其为何能在各种不同的系统中运行良好,你需要深入研究内核最本质的部分。内核处理CPU与外界间的所有交互,并且决定哪些程序将以什么顺序共享处理器时间。它如此有效地管理有限的内存,以至成百上千的进程能高效地共享系统。它熟练地统筹数据传输,这样CPU不用为等待速度相对较慢的硬盘而消耗比正常耗时更长的时间。

20.LINUX设备驱动程序,LinuxDevice Drivers

内核的这个版本针对常见任务完成了合理化设计及相应的简化,如即插即用、利用sysfs文件系统和用户空间交互,以及标准总线上的多设备管理等等。要阅读并理解本书,您不必首先成为内核黑客;只要您理解C语言并具有Unix系统调用的一些背景知识即可。

21.算法:C语言实现,Algorithms in C

比起学习算法分析,学习算法实现的相关知识要来得更有用和更实用。 然而,不幸的是,市面上销售的大部分算法书籍,以及人们推荐得最多的算法书籍,基本都是以算法分析为主,在这类算法书中,一个个优美的算法被分解成支离破碎的数学研究对象,在这些书里面,你会看见严谨的数学论证,完整的数学分析和(数学家写算法书赚外快时最喜欢用的难看的)伪代码,但是却看不见从低效算法逐步向高效算法推进的求精过程,看不见不同算法/数据结构之间的相似性和差异性,因为它们都被小心地隔离开来了。 

22.数据结构与算法分析:C语言描述,Data Structure & Algorithm Analysis in C

这种程度的书确实很少能见到了。 它不在简单的地方无谓的浪费笔墨,恰到好处的把初学者带入算法和数据结构的世界。 它基本上涉及了数据结构基础的“方方面面”。很难想象这书的厚度,居然能讲这么多内容(你看看算法导论有多厚就知道我在说什么了)。 

23.具体数学:计算机科学基础Concrete Mathematics A Foundation for Computer Science

令人兴奋的就是这本书的主要作者正是泰斗Donald.E.Knuth以及他的同事Ronald L.Graham.书稿是他们在1970年的时候在计算机系教授研究生本门课程的基础上整理出来的教材.内容上是Knuth的巨著TAOCP第一部的扩展,有些比TAOCP中谈及地又深入了许多.重点放在高级计算机程序设计话题以及算法分析上,涉及了计算机科学领域内几乎所有可能遇到的数学知识.具体数学是离散数学和连续数学的综合,书中这点做得极为出色,介绍的内容涉及到书中许多经典问题的解答比目前广泛流传的解法更易懂.对于提高大家的计算数学修养有很大帮助.之所以TAOCP有的时候读者们读不懂就是因为计算数学基础不是十分扎实,但以我个人经验,若能对本书中内容有一个比较好的理解,会给你阅读如TAOCP这样的旷世巨著带来很大的方便.

以下非计算机类:

1.商业秀

Scott MaKain就是《商业秀》一书的作者,其实我觉得这本书的英文名字更好、更直接一些:“All Business Is SHOW Business”,即所有的行业都是娱乐业。他认为所有的行业都应该向娱乐业一样,最重要的不是销售产品,而是销售用户体验。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值