“
一提到有关编程方面的册本 ,你就会想起江湖中传说的“每个程序员必读的12本盘算 机科学册本 ” ,然而,这份清单并没有什么实用性 。由于 ……
原文参考了Dan Luu的博客,经作者授权 ,由InfoQ编译、整理并分享。
https://danluu.com/programming-books/
一提到有关编程方面的册本 ,你就会想起江湖中传说的“每个程序员必读的12本盘算 机科学册本 ”,然而 ,这份清单并没有什么实用性。由于 ,盘算 机科学范畴 非常宽泛,险些 全部 程序员都可以阅读任何主题,就算某个主题很紧张 ,但由于读者的学习偏好天 悬地隔,因此对全部 读者而言,某个主题并不存在所谓“最好的”册本 。
本文是我已经阅读过的主题和册本 的清单。这些都是我很认识 的主题 ,大概 你可以在此文中,相识 关于该主题更多的环境 ,并阅读其他相干 册本 。换而言之 ,就是说你为什么必要 阅读另一本书 。
算法 、数据布局 、复杂性
为什么要关默算 法、数据布局 和复杂性? 好吧,有一个实用的结论:在工作中,纵然 你从来没有效 到这些东西 ,但是,大多数一流的付出 公司在口试 中会测试这些内容。我决不瞎扯,算法真的很有效 ,就像我发现数学很有效 一样。任何特定算法实用 于任何特定题目 的概率很低,但从总体上阐明 什么范例 的题目 怎样 办理 ,什么样的题目 难以处理 惩罚 ,通常当近似有效 时就有效 了。
《Cracking the Coding Interview》
作者:McDowell
出书 社:CareerCup; 6th edition (July 1, 2015)
中文版:《程序员口试 金典》
译者:李琳骁 、漆犇
出书 社:人民邮电出书 社 ,第五版
《程序员口试 金典》的作者McDowell,是原Google资深口试 官的履历 之作,层层紧扣了程序员口试 的每一个环节 ,全面细致 先容 了程序员应当怎样 应对口试 才华 脱颖而出 。
该书涉及到口试 流程分析 、口试 官的幕后决定 及大概 提出的题目 、口试 前的预备 工作 、对口试 结果 的处理 惩罚 等内容,还涵盖了数据布局 、概念与算法、知识类题目 和附加口试 题四个方面,为读者提供了来自Google、Facebook 、Microsoft等多家着名 公司的编程口试 题 ,并为每一道口试 题分别给出了具体 的办理 方案。
我会向那些并没有真正把握 算法、但又想通过口试 的程序员保举 这本书。这本书读起来尚可,不外 并不能真正教会你知识,假如 想真正把握 算法和数据布局 ,那么继承 往下看 。
《Algorithms》
作者:Dasgupta、Papadimitriou 、Vazirani
出书 社:McGraw-Hill Education
中文版:《算法概论》
译者: 王沛、唐扬斌、刘齐军
出书 社:清华大学出书 社
《算法概论》是一本得当 入门的读物,但却不失深度以及广度,读来让人爱好 盎然。我以为 ,认真读完这本书,而且 思考 每章背面 的习题,会对算法有一个很好的大局观。固然 要把握 算法,只靠这一本书是不敷 的 ,不外 算作最佳入门是当之无愧的 。
该书全面先容 了算法的根本 知识,将算法分成类(比方 分治法 、,或贪婪 算法) ,在表达每一种技能 时,夸大 每个算法背后的数学头脑 ,让你把握 怎样 判定 应该利用 什么样的算法来办理 特定的题目 。
该书公道 挑选主题 ,厘清了一条算法这门学问的线索,对布局 的经心 安排,对题目 的数学布局 的分析 ,从而推出一个算法的过程的讲授 。长度适宜 ,仅有三百多页,可以利用 几个周末举行 阅读 。
不外 ,我知道有些读者不会喜好 这本书,由于 它包罗 了太多的数学头脑 。假如 是你,我猜你大概 喜好 Skiena著的那本书。
《The Algorithm Design Manual》
作者:Skiena
出书 社:Springer; 2nd edition (July 26, 2008)
《The Algorithm Design Manual》要比Dasgupta所著的那本《Algorithms》更长,更全面 ,也更实用,而且涉及到的数学也更少 。它差不多就是试图教你怎样 辨认 题目 并利用 精确 的算法来办理 题目 、以及给出一个清楚 的算法表明 的那本书。
该书内容丰富,各个主题险些 无不涉及 ,从常见的各种数据布局 到算法战略 、可盘算 性。假如 想当做教科书,该书每章末了 都有很多 练习 ,值得保举 。这本书布满 了豪情 的“战役 故事” ,表现 了算法在实际 天下 编程的影响 。
《Introduction to Algorithms》
作者:Cormen 、Leiserson、Rivest、Stein(CLRS)
出书 社:The MIT Press; 3rd edition (July 31, 2009)
中文版:《算法导论》
译者:殷建平 、徐云、王刚、刘晓光、苏明 、邹恒明、王宏志
出书 社:机器 工业出书 社; 第1版 (2013年1月1日)
在江湖中传播 的各种版本“全部 程序员必读之书 ”的清单中,《算法导论》就占据了半壁江山 。这本书将严谨性和全面性融为一体,深入讨论了各种算法。实际 上 ,险些 没有读者会读完备 本书 。不外 ,全书各章自成体系,可以作为独立的学习单位 。它是环球 读者最多的算法圣经。
该书的特点是选材经典、内容翔实 、布局 公道 、逻辑清楚 。每章前半部分 先容 了讲授 和学习算法的有效 方法 ,后半部分 为更专业的读者和求知欲强的门生 提供了更引人入胜的资料来讨论这个迷人范畴 的各种大概 性和挑衅 ,对本科生的数据布局 课程和研究生的算法课程而言黑白 常棒的教科书。
比如 说,有整整一章是关于Van Emde Boas树,写得很工整 ,这有点奇怪 ,像的均衡 树布局 的插入、删除 、就像查找、继承 一样好,大概 从前 的册本 大概 云云 ,但它是第一个没有包罗 Van Emde Boas树的算法导论。
《Algorithm Design》
作者:Kleinberg、Tardos
出书 社:PEARSON EDUCATION; 1 edition (2013)
《Algorithm Design》广受好评,堪比CLRS所著《Introduction to Algorithms》,被保举 为关于算法计划 和分析的一本不可多得的良好 入门书 。我发现 ,这本书与CLRS所著的书相比,该书将直观性与严谨性美满 连合 起来。覆盖面比力 宽广 ,凡属串行算法的经典论题 ,都有所涉猎。
《Advanced Data Structures》
作者:Demaine
《Advanced Data Structures》是一套讲稿和条记 ,而非一本书 。假如 你想要一套条理清楚 但不难综合的数据布局 的学习资料,在大多本科课程中 ,你不大大概 看到,因此这套讲课 和条记 ,功德无量。
这些条记 没有出单行本的筹划 ,以是 假如 您尚未看过这些资料 ,就必须观看讲授 视频。
《Purely Functional Data Structures》
作者:Okasaki
Cambridge University Press (June 13, 1999)
出书 社: Cambridge University Press
《Purely Functional Data Structures》读起来很风趣 ,但差别 于其他算法和数据布局 的读物的是,我从这本书中 ,还没能得到真正办理 实际 题目 的紧张 本领 。
在我读完这本书后过了几年,有人告诉我,推理出纯函数冗余数据布局 的性能并不难 。我就向他们讨教 这本书中把我难倒的证明 部分 ,我并不是在讨论那些晦涩 难懂 的超难习题,而是说这本书的重要 内容,作者有太多过于显着 的表明 性的东西。但是并没有人表明 。这种东西的推理比各人 说的还要难 。
《Higher Order Perl》
作者:Dominus
出书 社: Morgan Kaufmann Publishers
中文版:《华章程序员书库:高阶Perl》
译者:滕家海
出书 社:机器 工业出书 社
《高阶Perl》在Perl范畴 深入探究 了各种最新的主题 ,如递归 、迭代器、过滤器、分别 、数值方法、高阶函数、惰性求值等内容,并将这些转换成实际 变成 工作中强有力的实用工具:HTML处理 惩罚 、数据库访问 、网页抓取、家庭理财等等。
该书恰本地 先容 了利用 Perl的函数式编程。通过这本书的学习,你大概 像Python或Ruby那样很轻易 举行 工作 。
不外 ,假如 你跟得上潮流 ,你会发现这本书大概 有点过期 ,由于 讲授 的是2005年的Perl 5,而如今 是2015年12月25日发行的Perl 6。不外 ,这本书提到的头脑 ,如今 已成主流。
《Algorithms》
作者:Levitin
出书 社:Pearson; 3 edition (October 9, 2011)
“强化学习的其他特点,包罗 :章节择要 ,习题提示 。这是一本具体 的办理 方案手册。”、“门生 通过习题提示和章节择要 进一步支持学习。”此中 一个广告乃至 印在书上 。
当我看到这两个广告后,就在亚马逊下了订单购买《Algorithms》。但在我拿到这本书后,我唯一的自学资源却是在雅虎问答(Yahoo Answers)里的一些帖子 ,在那边 你能找到提示大概 解答。
末了 ,我拿起了Dasgupta的著作来代替 了这本书,由于 他的网站资源可以免费利用 。
《Probability and Computing: Randomized Algorithms and Probabilistic Analysis》
作者:Mitzenmacher 、Upfal
出书 社: Cambridge University Press (January 31, 2005)
我得到 的算法知识大概 比其他任何算法册本 报告 的都多 。很多 随机算法移植到其他应用程序固然 很噜苏 ,但却可以简化很多 事变 。
《Probability and Computing: Randomized Algorithms and Probabilistic Analysis》有关概率学的先容 部分 很翔实,就算读者不具备任何概率学的配景 也能轻松入门。别的 ,的内容(比方 ,)对很多 盘算 机科学理论的证明 很有效 ,这些在我所阅读到的概率学先容 内容中都没有提到 。
《Introduction to the Theory of Computation》
作者:Sipser
出书 社:Cengage Learning; 3 edition (June 27, 2012)
中文版:《盘算 理论导引》
译者:段磊、唐常杰
出书 社:机器 工业出书 社,第一版
《盘算 理论导引》以独特的视角,体系 先容 了盘算 理论的三大板块:主动 机与语言、可盘算 性理论 、盘算 复杂性理论。报告 了宽泛的数学原理 ,没有拘泥于某些低条理 的细节。
在证明 之前,都有直观的“证明 思绪 ”,资助 读者明白 数学情势 下蕴涵的概念 。很多 紧张 的结果 ,如定理,都被作为练习 题。以是 你真的必要 做这些关键练习 题。但是,大多数关键练习 题没有提供答案 ,因此你也无法知道你解答是否精确 。
假如 想选择更为当代 的主题,也答应 以阅读Aurora和Barak的著作。
《Computation》
作者:Bernhardt
《Computation》这部讲授 影片涵盖了一些盘算 机理论的重点部分 。影片讲授 令人愉悦,为了观看Bernhardt讲授 的内容 ,这个影片我已经观看不止一次了 。该影片的受众是那些没有盘算 机科学配景 的一样平常 程序员。
《An Introduction to Computational Learning Theory》
作者:Kearns Vazirani
出书 社:The MIT Press (August 15, 1994)
《An Introduction to Computational Learning Theory》是一本非常经典的读物。但是这本书已颠末 期 (InfoQ注:该书1994年出书 ,距今已经22年了),而且弊端 百出 ,没有勘误。我终极 从几门课程拼集 了一些条记 ,一个是Klivans的著作,另一个是Blum的著作 。
操纵 体系
为什么要关心操纵 体系 ?由于 ,把握 一些关于操纵 体系 的知识 ,可以让你节流 几天或一周的调试时间。 这是Julia Evans博客上常常 提到的话题,我发现,就我个人履历 来说 ,确实云云 。
那些创建 可行的体系 并相识 一些操纵 体系 知识的人,却没有发觉假如 有操纵 体系 知识的话会很节流 时间,这点我很难想象 。
但是 ,读过操纵 体系 册本 的人每每 有私见 ——正是做这方面的相干 人士,假如 你是骨灰级玩家,除非阅读这些 ,你大概 得不到同样的结果 。
《Operating System Concepts》
作者:Silberchatz、Galvin、Gagne
出书 社:Wiley; 9 edition (December 17, 2012)
中文版:《操纵 体系 概念》(第七版)(翻译版)
译者:郑扣根
出书 社:高等教诲 出书 社; 第1版 (2010年1月1日)
好吧,这是Comet Book成为标准 之前,我们在Wisconsin就用过的一本书。
《操纵 体系 概念》涵盖了高阶概念并击中要点 ,但是在技能 条理 的深度稍显不敷 ,没有具体 叙述 事变 是怎样 工作的,也没有清楚 列出更高级的主题 。
趁便 说一下,我听说了关于Comet册本 的好消息 ,但是我不敢妄言,毕竟 我还没有阅读过。
《xv6》
作者:Cox 、Kasshoek、Morris
这本《xv6》真的太棒了!它表明 了你怎样 可以或许 在真实体系 上有效 运作,你可以假想 本身 实现一个可实行 的操纵 体系 。按照本誊写 作的计划 ,作者倾向于简单 的实现而非优化的实现,因此,书中利用 的算法、数据布局 寂静 常的生产体系 完全差别 。
这本书与先容 当代 操纵 体系 怎样 工作的册本 共同 阅读 ,比如 Love著的《Linux Kernel Development》大概 Russinovich著的《Windows Internals》,学习结果 会更好。
《Linux Kernel Development》
作者:Love
出书 社:Addison-Wesley Professional; 3 edition (July 2, 2010)
《Linux Kernel Development》的书名大概 有误导之嫌,这不是关于Linux内核开辟 的读物 ,根本 上是一本叙述 Linux内核怎样 工作的册本 :事物是怎样 契合的,利用 了什么算法和数据布局 等等。我阅读的是第二版,如今 已经完全过期 了 。
第三版内容有所更新 ,但是也引进了一些错误和抵牾 之处。而且,这一版本仍旧 过期 ,这本书2010年出书 ,讲的是内核2.6.34。固然 云云 ,该书仍旧 不啻一本良好 的先容 当代 操纵 体系 原理的读物。
该书尚有 一个缺点,在作者拿Linux和Windows举行 比力 时,有失客观 ,根本 上就是每次比力 的时间 ,就宣扬Linux是明白 无疑的精确 选择,Windows总是干蠢事 。总体来说 ,Linux和Windows我都喜好 ,在有些范畴 ,Windows做得更好。而且在有些地区 ,Windows已经领先很多 年了。但在这本书中,你甭想看到雷同 这些评价 。
《Windows Internals》
作者:Russinovich 、Solomon、Ionescu
出书 社:Microsoft Press; 6 edition (March 25, 2012)
中文版:《深入分析 Windows操纵 体系 :第6版(上册)》
译者:潘爱民、范德成
出书 社:出书 社: 电子工业出书 社; 第1版 (2014年4月1日)
《深入分析 Windows操纵 体系 》是叙述 当代 操纵 体系 怎样 工作最全面的一本书,只不外 可巧 这本书是关于微软Windows。作为从*nix走过来的人 ,看到Windows和*nix差别 的差别 ,如许 的阅读非常风趣 。
然而,该书并非简单 的入门书,在阅读本书之前你必须把握 一些操纵 体系 知识 。
假如 想买这本书 ,你要比及 2017年初发行的第七版。
《The Little Book of Semaphores》
作者:Downey
《The Little Book of Semaphores》是一本如许 的读物:列出一个主题,通常从操纵 体系 的教科书中抽取一两个章节,然后拼集 成为本身 长达300页的书。
这本书是一系列的习题 ,有点像小型提要 ,但更多的是叙述 。它起首 表明 了什么是信号量,然后给出构建高并发原语知识的一系列习题。
在我开始编写并发线程代码时 ,这本书提供了很大的资助 。我订阅了Butler Lampson学院关于并发的资料,我喜好 把并发相干 代码塞到别人写的黑盒 。但是偶然 间 你对峙 本身 写黑盒的话,假如 是如许 ,这本书有很好的导论,要求思考 方式才大概 写出不是完全错误的并发代码。
我盼望 有朝一日,能有如许 的一本书问世:既照顾低程度 的读者 ,又分身 高程度 读者,我很喜好 如许 的写作计划 。从几个指令集原语差别 的内存模子 的体系布局 (如x86和Alpha),而不是从信号量开始讲起。假如 本日 我写低劣的低级线程代码,我会更喜好 用C++ 11的线程原语 ,以是 我想用这些东西而非信号量 。假如 由我来写线程代码的话,我大概 会用Win32 API来编写。但到如今 为止,还不存在如许 的一本书。以后假如 有如许 一本书问世 ,那将是最好不外 的了 。
我听说Doug Lee的Java并发编程非常不错,但我只泛泛而读没有深入研读。
盘算 机体系架构
为什么要关心盘算 机体系架构?当你举行 底层性能优化的时间 ,你所学到的具体 究竟 和细节 ,将会非常有效 。但是,真正的代价 就是学习如安在 性能和其他因素举行 衡量 ,无论是功耗、本钱 、体积、重量 ,亦大概 其他因素 。
从理论上讲,这种推理应该不分专业举行 传授 ,但我的履历 是 ,那些学习盘算 机体系布局 的人更大概 会“得出”那种推理和大抵 的盘算 :才华 让他们抛开一个没有来由 在性能上2倍或10倍(或100倍)的因素。听上去很显然,但是我想到大公司的多个生产体系 放弃10到100倍的性能,而以一个标准 来运行,乃至 2倍的性能差别 ,都足以付出 VP的薪水。满是 由于 人们没故意 识到他们的计划 带来的性能影响 。
《Computer Architecture: A Quantitative Approach》
作者:Hennessy、Patterson
《Computer Architecture: A Quantitative Approach》教你怎样 用多束缚 (如性能 、TCO(总开销)、功率等)举行 体系 计划 ,以及怎样 推论衡量 。它重要 以微处理 惩罚 器和超等 盘算 机为例。
该书的新版增长 了实质性的增补 ,这个版本才是你真正想要的读物 。比如 ,新版增长 了一个关于数据中心 计划 的章节,答复 了以下题目 :用于电力、功率分布 、制冷的运营开支OPEX/资源 付出 CAPEX,以及支持团队和呆板 的付出 费用 ,利用 低功耗呆板 对tail larency的结果 质量及影响(以必应搜刮 的结果 为例),在计划 数据中心 时应该思量 哪些其他因素。
假设读者具备一些配景 ,但配景 已在附录中提供 ,而且 可免费在线获取。
《Modern Processor Design》
作者:Shen、Lipasti
出书 社:Waveland Press, Inc.; 1 edition (July 30, 2013)
《Modern Processor Design》展示了计划 Pentium Pro(1995年)期间 高性能微处理 惩罚 器所必要 相识 的大部分 内容。由于 这种处理 惩罚 器的复杂性,叙述 清楚 绝非易事 。别的 ,还先容 了一些更为先辈 的想法和从各种工作负荷可以运行的平行盘算 的范围(以及你大概 会怎样 举行 云云 盘算 )。该书有一个很长的章节 ,是关于值猜测 ,由于 作者发明白 这个概念,当第一版发行的时间 ,还很热门。
对于纯CPU架构 ,这本可得到的读物大概是最好的 。
《Readings in Computer Architecture》
作者:Hill、Jouppi 、Sohi
出书 社:Morgan Kaufmann; 1 edition (September 23, 1999)
由于 汗青 缘故起因 而阅读,看看我们所明白 的表明 有多好。比如 ,比力 Amdal关于定律的论文(没有公式 ,只有一幅并非显而易见的图表的两张纸),相对与当代 教科书的表述(一个段落,一个公式 ,大概 一幅图表来分析 ,固然 通常来说充足 清楚 ,不必要 额外的图表)。
糟糕的是 ,《Readings in Computer Architecture]》看上去让你退却 得更远 。由于 盘算 机架构真的是很年轻的范畴 ,这里没有什么真正难以明白 的东西。假如 你想看到一个动民气 魄的例子,比方 我们怎样更好表明 这一些 ,像比力 Maxwell在方程组的最初论文与当代 对同一事物的表明 。假如 你喜好 汗青 的话,这本书很风趣 。但是假如 你只是想学习的话,它勉为其难。
博弈算法理论、拍卖理论、机制计划
为什么要关注这些知识(博弈算法理论 、拍卖理论、机制计划 )?由于 这些知识先容 了天下 上最大的科技公司在广告收入的运作方式,而这些广告是通过拍卖来贩卖 的。该范畴 先容 了它们运作的方法和来由 。别的 ,当你实行 弄明白 怎样 计划 有效 分配资源的体系 ,这些知识就派上用场了。别的 ,假如 你玩桌游 ,拍卖理论表明 了为什么通过拍卖机制来固化博弈失衡是紧张 的,每每 使游戏更糟。
尤其对计划 公司内部鼓励 相容制度(大抵 的说,就是怎样 创建能提供人们出于私心而寻求 最佳长处 的全局最优结果 的体系 )的职员 而言 ,这些书应为必读册本 。假如 你曾在两家大公司供职过,此中 一家创建 了有效 的内部鼓励 相容制度,而另一家没有创建 相应制度 。你就会发现 ,没有创建 内部鼓励 相容制度的那家大公司烧了大把大把的钱,由于 这些人创建 了超等 没用的鼓励 体系 。
这个范畴 显现 了这么一幅画卷,让你相识 什么样的机制会带来什么样的结果 。通过阅读案例研究 ,你会得到一个耗资数百万乃至 数十亿美元的错误列表,洋洋洒洒,也很风趣 。
《Auction Theory》
作者:Krishna
出书 社:Academic Press; 2 edition (August 26, 2009)
中文版:《拍卖理论》
译者:罗德明、奚锡灿
出书 社:中国人民大学出书 社
上一次我阅读《拍卖理论》的时间 ,它是当时 唯一对拍卖理论举行 全面且近来 先容 的一本书。在第一章中 ,涵盖了经典的第二代价 拍卖的结论,然后涵盖了风险规避、竞标利用 、多个拍卖、非对称信息和其他实际 天下 的题目 。
该书涵盖了拍卖的大部分 理论,对深入明白 拍卖理论的重要 脉络非常须要 。但这本书相称 枯燥无趣 ,不大大概 激起阅读欲望。除非你对这个主题感爱好 。必要 相识 根本 的概率学和微积分学的知识 。该书对致力拍卖研究的研究生是不可或缺的读物。
《Snipers, Shills, and Sharks: eBay and Human Behavior》
作者:Steighlitz
出书 社: Princeton University Press (April 1, 2007)
《Snipers, Shills, and Sharks: eBay and Human Behavior》看上去好像 是专门为生手 先容 拍卖理论、带有娱乐性子 的册本 。该书表明 了eBuy的工作方式及来由 ,正如书名的副标题所言,作者还探究 了人类在eBuy和其他地方拍卖中的怪癖举动 。这本书妙趣横生 ,无需读者具备数学配景 ,大概 包罗 了Krishna所著《Auction Theory》的少量内容,能让读者对拍卖理论产生爱好 。
《Combinatorial Auctions》
作者:Crampton 、Shoham、Steinberg
出书 社: The MIT Press
《Combinatorial Auctions》所讨论的是 ,是像美国通讯 委员会(FCC)那次频段拍卖,由于拍卖机制计划 中的“弊端 ”引起数亿乃至 数十亿美元的价差被摆上台面的案例(InfoQ注:有爱好 的读者可以通过google检索“美国拍卖600MHz频段”来相识 这个变乱 )。该书固然 是由差别 作者共同撰写的读物,但读起来仍旧 行云流水趁热打铁 ,让我乐意阅读。
这本书在组合拍卖范畴 有着深度和广度,于渺小 处见功夫,它还摆列 了具体 的作者和主题索引,排版质量非常棒 ,以至于可以跳过开头提到的Krishna的著作举行 阅读,但我不会保举 它 。这本书对于想相识 组合拍卖的研究职员 和从业者,都是必不可少的读物。
《Multiagent Systems:Algorithmic ,Game-Theoretic,and Logical Foundations》
作者:Shoham、Leyton-Brown
出书 社:Cambridge University Press; 1 edition (December 15, 2008)
《Multiagent Systems:Algorithmic,Game-Theoretic ,and Logical Foundations》最槽的就是书名了。然而,它是Multiagent System方面最值得阅读的读物之一 。
该书涵盖了根本 的博弈论 、拍卖理论,以及在盘算 机科学中读者大概 不知道的其他经典主题 ,席卷 了很多 新奇 的前沿理论,尚有 盘算 机科学和这些主题的交集内容,比如 博弈学习模子 等 ,乃至 尚有 逻辑学的内容(这也是Shoham最关注的方向,将博弈理论上升到哲学条理 )。这本书非常有特色,前面几章有很多 例子,盘算 机科学学术味很浓。该书假定读者对主题没有特定的配景 。
《Algorithmic Game Theory》
作者:Nisan、Roughgarden、Tardos 、Vazirani
出书 社:Cambridge University Press; 1 edition (September 24, 2007)
《Algorithmic Game Theory》包罗 了博弈算法理论的各种观察 结果 。要求读者具有相称 数量 的配景 (起首 要阅读过Shoham和Leyton-Brown的著作) ,比方 第五章根本 上是Devanur、Papadimitriou、Saberi和Vazirani的JACM论文:
《Market Equilibrium via a Primal-Dual Algorithm for a Convex Program》(《通过用于Convex程序的原始对偶算法的市场均衡 》),并引出一些相干 题目 ,让读者有更上一层楼的动机。假如 你深入了这本书的话 ,会发现该书叙述 很棒,而且很风趣 。但假如 你想通过阅读一本书来窥伺 一个范畴 的话,它未必是你想要的那种书。
杂项
《Site Reliability Engineering》
作者:Beyer 、Jones、Petoff、Murphy
出书 社:O'Reilly Media; 1 edition (April 16, 2016)
中文版:《SRE:Google运维解密》
译者:孙宇聪
出书 社:电子工业出书 社; 第1版 (2016年10月1日)
《SRE:Google运维解密》可以让读者学习到Google工程师在进步 体系 摆设 规模、改进可靠性和资源利用 服从 方面的引导 头脑 与具体 实践——这些都是可以立即 直策应 用的宝贵 履历 。任何一个想要创建 、扩展大规模集成体系 的人都应该阅读 ,该书针对怎样 构建一个可长期 维护的体系 提供了非常宝贵 的实践履历 。
要看更丰富的扼要 阐明 ,请阅读这本22页的该书的条记 。
《Refactoring》
作者:Fowler、Beck、Brant 、Opdyke、Roberts
出书 社:Addison-Wesley Professional; 1 edition (July 8, 1999)
中文版:《重构:改善既有代码的计划 》
译者:熊节
出书 社:人民邮电出书 社; 第2版 (2015年8月1日)
当时 候当我读这本《重构:改善既有代码的计划 》时,由于它在关于代码异味的单独章节所花的篇幅 ,使得这本书非常值这个价。该书非常乐成 ,由于 它使重构和代码异味的观念成为主流。
Steve Yegge曾对这本书不吝赞誉之词:
2003年10月,我第一次阅读这本书 ,有一种不寒而粟的感觉 。假如 你意识到,当你想离职 时,你已经工作5年。转天我就随意问四周 :“嗯,你已经读过重构方面的书 ,对吧?我只是任意 问问,由于 我好久 从前 读过,固然 不是如今 。 ”在我所观察 的20个人中 ,只有一个人读过 。感谢天主 ,全部 的人都很尴尬,不但 是我。
……
假如 你是资深工程师 ,你会发现该书中至少80%,都是你所熟知的东西。但该书摆列 了全部 的名称,并客观地讨论这些技能 的利弊 ,这一点很有效 。它戳穿了我刚成为程序员时所收藏 的多少 个“秘笈 ”的原形 。不解释 代码?局部变量是万恶之源?这疯子是狂人吗?要不要阅读这本书,取决于你本身 !
《Peopleware》
作者:Demarco、Lister
出书 社:Addison-Wesley Professional; 3 edition (June 28, 2013)
中文版:《人件(原书第3版)(收藏 版)》
译者:肖然 、张逸、滕云
出书 社:机器 工业出书 社; 第1版 (2014年9月1日)
在大学时我读到这本《人件》,该书好像 很令人佩服 ,乃至 全部 的研究结果 都支持该书的观点:不设置克制 日期就比设置克制 日期要好;办公室比隔间要好,等等。全部 开辟 职员 跟我讨论的时间 ,根本 都附和 这些观点 。
但实际 上每家乐成 的公司都是以截然差别 的方式运作的。乃至 微软公司也从个人办公室转为开放式办公室举行 了构筑 改造。是不是这些观点都无所谓?假如 真的很紧张 的话,那些公司怎么会成为真正信徒 ,像Fog Creek公司不去蹂躏 竞争对手?
由于 该书符合我的“私见 ”,我就盼望 这本书是精确 的 。但是,聚集 分析(InfoQ注:Meta分析 ,指将多个研究结果 整合在一起的统计方法)的理念让我用判定 的眼光重读来查证重要 泉源 。
《Renegades of the Empire》
作者:Drummond
出书 社:Crown; 1 edition (November 16, 1999)
《Renegades of the Empire》报告 了DirectX进程 的故事。它还显现 了本日 的微软狼性文化是怎么形成的。阅读先容 :
微软未必会雇佣像盖茨的人(固然 企业园区有不少如许 的人),但会雇用 那些有着更为明显 的盖茨特性 的人——傲慢、进取心和高智商 。
……
由于 讽刺 或人 的想法是“愚笨 的 ”,大概 更为槽糕的是 ,“胡说 八道”——盖茨因此污名 昭著——只是为了看他怎样 保卫 一个位置。这种敌对的管理技能 贯穿一系列的下令 ,创造了一种辩论 的文化。
……
微软创建 了达尔文的秩序,资源常常 被打劫 ,囤积力气 、财产 和威望 。一名外出休假的司理 返来 时大概 会发现他的部分 被竞争对手打击 ,他的项目被迫令 降级大概 完全取缔。
在微软口试 :
“你喜好 微软什么呢?”
“比尔踢屁股。 ”St. John说,“我喜好 踢屁股 。我喜好 那种扼杀竞争对手和支配市场的感觉。”
结果 St. John被雇佣了。多年来他没有犯任何错误 。这本书就报告 了他的故事 ,以及像他那样的员工的故事。假如 你想在微软公司谋差,你就必要 读这本书。我盼望 我参加 之前就读过这本书而不是之后!
数学
为什么要关注数学?从纯ROI(InfoQ注:Return On Investment,投资回报率)观点来看,我猜疑 ,对于99%的工作,学习数学是值得的 。据我所知,我用数学比大多数程序员要多 ,但我并没有那么常常 利用 数学。不外 ,有精确 的数学配景 大概 会派上用场。我很享受学习数学的爱好 。
《Introduction to Probability》
作者:Bertsekas
出书 社:Athena Scientific; 2nd edition (July 15, 2008)
中文版:《概率导论(第2版)》(修订版)
译者:郑忠国、童行伟
出书 社:人民邮电出书 社; 第1版 (2016年1月1日)
《概率导论》是入门的大学课程,对 叙述 界说 比力 严谨、直观 。对任何关心精密 推导的读者而言 ,该书背面 有一些更为具体 的习题。有很多 可用办理 方案的练习 题,使得本书更适宜 作为自学用书。
《A First Course in Probability》
作者:Ross
出书 社:Pearson Prentice Hall; 8th edition (January 7, 2009)
中文版:《华章教诲 ·华章数学译丛:概率论底子 教程(原书第9版) 》
译者:童行伟 、梁宝生
出书 社:机器 工业出书 社; 第1版 (2014年1月1日)
为了使门生 购买《概率论底子 教程》,该书常常 推出新版本 ,亚马逊订价 更是高达174美元,我曾跟作者讨教 过这个题目 ,他抱怨 说 ,这几年,二手书市场粉碎 了教科书的收入,而作者的版税并不多,以是 要有更多收入 ,就不得不保持每两年推出新版的节奏来包管 版税收入 。
新作者要编写前人著过的经典册本 ,常常 大发怨言 ,由于 最早的作者通常比厥后 的作者拿更多的版税 ,纵然 他的后续版本并没有什么更新。
我在Wisconsin学习概率学的时间 ,该书是一本标准 的教科书。我真的想不起有谁发现这本书有所资助 。
《Introductory Combinatorics》
作者:Brualdi
出书 社:Pearson; 5 edition (January 7, 2009)
中文版:《组合数学(原书第5版) 》
译者:冯速
出书 社:机器 工业出书 社; 第1版 (2012年5月1日)
Brualdi是一名大传授 ,是我大门生 活 最好的传授 之一。但是他著的《组合数学》布满 了错误 ,而且也不特别 清楚 。自从我利用 该书后,有两个新版本,但从亚马逊批评 来看 ,这本书仍旧 有很多 错误 。
至于另一本底子 入门型的教科书,我听过关于Camina和Lewis合著的《An Introduction to Enumeration (Springer Undergraduate Mathematics Series)》好消息,但我本身 没有读过。别的 ,Lovasz的《Combinatorial Problems and Exercises (AMS Chelsea Publishing)》是一本关于组合数学的名著,但它并未被广为人知。
《Calculus》
作者:Apostol
出书 社:Wiley; 2nd edition (January 16, 1991)
《Calculus》第一卷涵盖了你所盼望 的微积分I和微积分II的内容 。第二卷涵盖了线性代数和多元微积分。在多元微积分之前,报告 线性代数,如许 使得多元微积分更易明白 。
从编程角度来看 ,微积分学也是很故意 义的。由于 我在微积分得到的代价 观就是近似应用等等 。传授 这连续 串的概念,很清楚 。
假如 你没有传授 或助教帮你的话,该书大概 是一本大抵 的入门书。Spring SUMS系列丛书在各门功课上更易自学 ,但我并没有读过它们的微积分册本 ,因此,我不敢妄下结论来保举 。
《Calculus》
作者:Stewart
出书 社:Cengage Learning; 7 edition (2012)
中文版:《微积分(第六版)》(双语讲义 )
译者:张乃岳
出书 社:中国人民大学出书 社; 第1版 (2014年10月1日)
《微积分》是那些作者通过无关紧急 的变动 推出新版来赢利 的浩繁 册本 中的一本。这是Wisconsin大学Non-Honor学位的标准 教科书。结果 是 ,我教了很多 人用Apostol的那本书所传授 的方法来盘算 复杂的微积分,对很多 人而言,更直观一些 。
该书采取 的方式是 ,对于某种范例 的题目 ,你应该将该模式匹配很多 大概 的公式,然后套用该公式。而Apostle更多的是传授 你一些本领 和直觉 ,让你足以应付各种各样的题目 。我不知道你为什么会买这本书,除非你必要 一些类 。
硬件底子
为什么要关注硬件底子 ?人们常常 宣称,要成为良好 程序员,你必须明白 所用的每一个抽象概念。这是无稽之谈 ,由于 当代 盘算 过于复杂,以至于任何人都不大概 真正完全明白 到底发生了什么事变 。究竟 上,当代 盘算 之以是 能高效完成它所做的工作 ,是由于 它不必要 程序员深入相识 底层的相干 内容,大部分 也低于你的程度 。
话虽云云 ,假如 你对底层软件布满 好奇 ,这里有一些得当 你的入门册本 。
《nand2tetris》
作者:Nisan、Shocken
假如 你只想读一本单一内容的书,那么非这本《nand2tetris》莫属。它是一本关于逻辑门和布尔逻辑的“101级”入门书。正如书名所示,它带你从与非门(NAND gate)到编一个可用的俄罗斯方块游戏 。
《Fundamentals of Logic Design》
作者:Roth
出书 社:CL Engineering; 5 edition (June 11, 2003)
《Fundamentals of Logic Design》在关于逻辑门和逻辑计划 的细节上比《nand2tetris》还要多。该书有大量习题 ,好像 是为自学而著。留意 ,上面的链接是第五版,如今 有更贵的新版本 ,但好像 没有什么改进,而且新版也有很多 错误,而且更昂贵 。
《CMOS VLSI Design》
作者:Weste、Harris、Bannerjee
出书 社:Pearson; 4 edition (March 11, 2010)
中文版:《CMOS超大规模集成电路计划 (第4版) 》
译者:周润德
出书 社:电子工业出书 社; 第1版 (2012年7月1日)
逻辑门下一级的就是VLSI(very large scale integration),即超大规模集成电路。然而 ,在本日 真的没有任何意义。
《CMOS超大规模集成电路计划 》比其他册本 更有广度和深度,而且 叙述 极为清楚 。在探索计划 空间,比如 ,加法器的章节,不但 仅提及了几种差别 的范例 ,而且也提供了题目 息争 决方案 ,非常得当 自学。
《CMOS Digital Integrated Circuits》
作者:Kang 、Leblebici
《CMOS Digital Integrated Circuits》是Wisconsin当前的教科书。但这本书很难跟上,助教根本 上重新表明 了险些 全部 的须要 项目和测验 。我以为 它是参考书而不是用来学习的读物。
与West等人相比,Weste 耗费 了更多的精力 讨论计划 中的折衷 ,如,创建并行前缀树加法器时,在计划 空间的某个特定点 ,它意味着什么?
《Semiconductor Device Fundamentals》
作者:Pierret
出书 社:Addison Wesley; 2nd edition (April 12, 1996)
超大规模集成电路(VLSI)下一级,也就是晶体管,你将相识 晶体管实际 上是怎样 工作的。
《Semiconductor Device Fundamentals》真正美满 地讲授 了固态装备 (SSD) 。该书指出了你要真正明白 诸如波段图解的这些东西,必要 知道什么。然后用这些底子 原理和清楚 的表明 ,给你创建 一个精良 的头脑 模子 ,明白 差别 范例 的交汇点和装备 的工作原理。
《Pentium Pro and Pentium II System Architecture》
作者:Shanley
出书 社:Addison-Wesley Professional; 2 edition (January 10, 1998)
与本文提到的其他书差别 ,《Pentium Pro and Pentium II System Architecture》是关于实践而非理论。它有点像Windows内部 ,由于 它涉及一个真实的工作体系 的细节 。主题包罗 硬件总线协议、I/O实际 上是怎样 工作的(如APIC,Advanced Programmable Interrupt Controller,即高级可编程终端控制器)等等。
实际 先容 的题目 ,就是从8080的CPU以来,复杂性不停 呈指数级的增长。当你学得越深,你就越轻易 明白 体系 紧张 的可移动部分 ,而知识越不相干 。由于 总线和I/O协议不得不操纵 多处理 惩罚 器,这本书好像 妥协了,这些体系 包罗 了当代 体系 中的很多 元素 ,只不外 是以更简单 的情势 。
未尽事件
在这些我喜好 的读物中,我会说,这些图书中,软件读物最多占据25%、硬件读物占据5%。一样平常 说来 ,未在清单中摆列 出来的读物更为专业 。清单还缺少很多 范畴 的主题,如PL,关于怎样 学习编程语言的实用册本 、网络等等。
未涉及某些范畴 的缘故起因 有多种 ,比如 我没有列出任何PL相干 册本 ,由于 我不阅读PL方面的册本 。我没有提到网络是由于 我固然 读过一些书,但我这方面的相识 程度 不敷 以提供有效 册本 的发起 。
绝大部分 硬件相干 的册本 都没有包罗 在内 ,由于 它们涉及到你不会关心的内容,除非你是专家(比如 容错电路计划 (《Skew-Tolerant Circuit Design (The Morgan Kaufmann Series in Computer Architecture and Design》,Harris著)或超快光学《Ultrafast Optics》 ,Weiner著))同样也实用 于数学和盘算 机科学理论。
我遗落了相称 数量 的一些我以为 是名著的读物,由于 在我一样平常 编程生存 中根本 没有机遇 用到,比如 极值组合论(Extremal Combinatorics)。我也没有摆列 那些我没有读完的册本 ,除非我停下来,由于 这些册本 极为晦涩 难读 。由于 我没有读完像SICP和The Little Schemer的册本 ,这意味着我无法列出经典的清单。那些册本 很好,只是我没有完成阅读的缘故起因 。
清单中还不包罗 汗青 和文化相干 的册本 ,像《Inside Intel》或《Masters of Doom》。我大概 会在将来 某个时间 ,在清单中添加一个种别 ,就是我不停 实行 的实行 ,像Julia Evans
(意识流,笔墨 更少大概 没有草稿)那样撰写 。
我必须归去 重读十多年前曾经阅读过的书,然后写出故意 义的批评 ,但这不符合我这个实行 。关于这一点,由于 这份清单是根据我影象 写的,几年前我就险些 没再读过那些全部 的书 ,而且大概 有所忘记 很多 书,我筹划 日后将增补 。
本日 荐号:细说云盘算
探究 云盘算 的统统 ,关注云平台架构、网络、存储与分发 。这里有干货 ,也有闲聊。
本日 荐文
点击下方图片即可阅读
大规模Nginx平台化实践,
京东能提供哪些参考履历 ?
喜好 我们的会点赞,爱我们的会分享!