少有程序员读的书
来源:互联网 发布:python做数据分析 编辑:程序博客网 时间:2024/05/16 17:19
原文:Books Programmers Don’t Really Read
作者:billthelizard 翻译:赖信涛责编:仲培艺
马克吐温说过,经典的小说就是大多数人都想读,但是很少有人花时间去读的小说。对于编程类的书来说,差不多也是这样。
在StackOverflow以及其它一些编程论坛上,经常会有人问有哪些适合程序员的书。同样的问题经常会多次被人用不同的方式提出来。相同的书总是居于榜首,不如花些时间来看看大家一般都推荐什么书。
大多数程序员都会去读的书
- Code Complete(代码大全)
- The Pragmatic Programmer
- C Programming Language (2nd Edition)(C编程语言)
- Refactoring: Improving the Design of Existing Code(重构,改善既有代码的设计)
- The Mythical Man-Month(人月神话)
- Code: The Hidden Language of Computer Hardware and Software
- Head First Design Patterns(深入浅出设计模式)
- Programming Pearls(编程珠玑)
- Effective Java (2nd Edition) orEffective C++
- Test Driven Development: By Example
我自己已经读过了上面所有的书,所以我非常相信,很多中级程序员也都读过了。如果你对编程有兴趣,并且在读这篇博客,那么我相信这些书你也都已经读过了。我不会仔细地去解释上面的每一本,但是我想说,这些书都聚焦于某一个方面,并且是这个领域的佼佼者。出版者很清楚他们面向的读者——那些想要提高自身技能的程序员。
除了上面的这些之外,还有一些编程类的书是被反复推荐的,但是却很少有人花时间去读。我称这些书为“程序员们的读书计划”。我并不是说,推荐这些书的人都没有读过,我只是想说,表达出想读的意愿的人绝对要比真正读过的人多。
程序员们的读书计划
Introduction to Algorithms (CLRS,算法导论)
这本书的标题可能是有史以来最具有误导性的。此书被广泛地用于大学作为教材,以及本科生等级的算法课程。所以,几乎所有上过算法课的程序员都会有一本CLRS。然而,除非你是一个计算机科学专业的研究生(还得是算法领域的),我很怀疑你是不是读过了其中三个章节。
我说标题具有误导性是因为,“导论”一词让很多人相信,这本书是为初学者准备的。然而,并不是。这本书是对算法非常深入的书,请不要再推荐给初学者了。
Compilers: Principles, Techniques, and Tools (the Dragon Book,编译原理)
龙书涵盖了编译器的各个方面,包括词法分析、语法分析、类型检查、代码优化以及很多高级话题。请不要给只要处理一个包含了简单数学公式的字符串的初学者推荐这本书了。除非你真的需要实现一个编译器(或解释器),不然你可能并不需要神龙的力量。给想要做文本处理的人推荐这本书只能证明你根本没读过。
The Art of Computer Programming(TAOCP,计算机程序设计艺术)
我经常听人推荐说这本书是“程序员必读书目”。我认为这并不合适。在把我拉上绞刑架之前,请容我辩解。计算机程序设计艺术不是一本适合从头读到尾的书,而适合作为参考查阅。将它摆在自己的书架上,看起来会赏心悦目,但实际上你阅读它的频率会很低,通常会花很多年才读完。
但是,手头有一本TAOCP作为参考查阅的工具书还是不错的,我就有一本。当我没有头绪的时候,就会求救于TAOCP,它总是能带给我灵感。但是,一般我都将它作为最后的救命稻草,因为它晦涩难懂,非常学术,而且例子都是用汇编语言写的。从积极的方面讲,如果你想找一个问题的解决方案,但是在TAOCP中找不到(仅限于已经发布的章节),那么所谓的“解决方案”多半是不存在了。此书在所谈论的领域涉及的内容非常全面。
Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four,设计模式:可复用面向对象软件的基础)
《设计模式》这本书是这个列表里唯一我从头读到尾的书,所以把这本书放在哪个列表里,我纠结了很久。最后出现在这里,并不是说这本书很少有人读,我相信很多程序员读过,只是我相信,心里一直打算读的人肯定比真正读过的人要多得多。
这本书的主要问题是,它所谈论的问题基本上都很常见。初学者从维基百科上能轻松读到这本书的很多部分,然后就可以在面试中说他们读过这本书了。这就是为什么单例设计模式几乎成了全局变量。如果大家都去读Gang of Four原版,那么就不会有人再把所有17种设计模式塞到一个框架里。Gang of Four最好的部分是每一章节的最后,都会有一个扩充小结,总结使用此设计模式最恰当的地方。可惜的是,很多别的地方看到的有关设计模式的资源都将这部分遗漏了。
The C++ Programming Language
这本书是一本编程语言的参考手册,而不是新手的入门书。虽然有大量的证据可以表明,的确不少人读完了这本书——不然的话,今天我们就不会有这么多C++的编译器可供选择。
初学者(或者精通其他编程语言的专家)如果想要学习C++,不要直接读The C++ Programming Language,推荐他们读C++ Primer。
如我上面所说的,你们肯定有不少人读过了上面这些书。这篇文章并不是针对你的,而是针对很多没读过,却装读过了的人说的。如果你没有读过,请不要再向其他人推荐这些书了。因为这只会适得其反。明明会有更好的书(对于某个问题更深入,更易懂,更具有专业性,面向普通人员)可以推荐。除此之外,你还可以避免碰上真正读过TAOCP的人和你谈论MMIX pop quiz的尴尬(如果你不知道我说的是什么,那么这篇文章就是说你的!)。
- 少有程序员读的书
- 少有的一次扯淡
- 扒一扒近几年少有的经典软件
- 南海十三郎,香港少有的好电影!
- “人在囧途”今年少有的国产好电影
- 《一线架构师实践指南》:一本中文原创计算机图书中少有的能提出比较系统的思想的书
- Blog这种交流的方式应该是网上少有的清静之地。
- SAP中少有的几个只能用右键操作的地方, 创建数据库索引
- [多线程] Web 项目中,少有涉及到的一次多线程编程的经验
- [多线程] Web 项目中,少有涉及到的一次多线程编程的经验
- 向前向前向前!向Windows Phone平台前进 『少有的技术型评论』
- 在移动应用程序上少有建树的企业正计划有所行动
- 为什么中国长期在科学领域少有重大建树 -关于钱学森之问 的回答
- 少有的高调?苹果AI总监解密两大自动驾驶新系统
- 11 02 10 少有成就
- 程序员应该读的书
- 程序员应该读的书
- 程序员应该读的书
- tinypy源码笔记(五)——异常处理
- 各变量在内存中的位置
- python基础内容概要(实时更新)
- 坚持#第72天~凭直觉控制速度
- Spring Security教程(13)---- 验证码功能的实现
- 少有程序员读的书
- 初赛复习
- 一个 Linux 上分析死锁的简单方法
- 在js中利用ajax技术实现不刷新更新内容
- go语言defer的用法
- Codeforces Round #377 (Div. 2)D - Exams
- Tomcate配置默认端口、默认应用、默认主页
- 第3节--深度学习介绍
- View自定义学习摘要笔记(二)