最常被程序员们谎称读过的计算机书籍 (zz)-程序员宅基地

技术标签: java  设计模式  c/c++  

最常被程序员们谎称读过的计算机书籍

//z 2012-4-11 7:35:55 IS2120@CSDN
马克·吐温曾经说过,所谓经典小说,就是指很多人希望读过,但很少人真正花时间去读的小说。这种说法同样适用于“经典”的计算机书籍。

在Stack Overflow(以及其它很多软件论坛)上,诸如”程序员最应该读的计算机书籍有哪些?“这样的问题会周期性的出现。这样的问题不断的被提出、被回答,只是形式不同罢了。相同的几本书总是会出现在清单的前几名内,所以,如果想知道人们谈论的都是些什么,你有必要去读一读这些书的。
大多数程序员真正读过的计算机书籍

    代码大全(Code Complete)——两届Software Jolt Award震撼大奖得主!
    程序员修炼之道(The Pragmatic Programmer)
    C程序设计语言( C Programming Language)(第2版)
    重构:改善既有代码的设计(Refactoring: Improving the Design of Existing Code)
    人月神话(The Mythical Man-Month)
    编码——隐匿在计算机软硬件背后的语言(Code: The Hidden Language of Computer Hardware and Software)
    Head First 设计模式(Head First Design Patterns)
    编程珠玑(Programming Pearls)
    Effective Java中文版(Effective Java (2nd Edition))or Effective C++(第三版)中文版
    Test Driven Development: By Example

上面的这些书我自己都读过,所以我不难相信很多不是很优秀的程序员也都读过它们。如果你对编程有足够的兴趣,能够来到这里读这篇博客,你很可能读过其中的大部分,甚至还有很多不在这个清单中的,所以我就不浪费时间每本书都评论一番了。我想说的是,这个清单上的每本书都是它各自领域里的奇书。所以,很多有愿望不断提高自己的编程技术的程序员都读过这些书,这就不足为怪了。
//z 2012-4-11 7:35:55 IS2120@CSDN
在人们备受推崇的计算机书籍中,还有一类书受到了独特的待遇。我称下面这个清单为“最常被程序员们谎称读过的计算机书籍”。这并不是说推荐这些书的人都没有真正读过它们。我只是有相当的信心怀疑更多的人只是在口头上宣称读过下列书籍,而实际上很少人真正读过它们。下面就是这个清单。
最常被程序员们谎称读过的计算机书籍

    算法导论(Introduction to Algorithms)(CLRS)这本书的名称是所有出版过的计算机书籍中最让人误解一个。它被广泛的使用在很多大学里,通常被当作毕业生必需的算法课程。于是,只要在大学里上过计算机课程的学生几乎都有一本这样的书。然而,除非你拥有计算机硕士学位(而且是算法研究领域的),我怀疑你顶多只读过算法导论(Introduction to Algorithms)里节选的几章内容。这个书名让人误解,是因为”Introduction”这个词让人以为它很适合初级程序员。实际上不是。这本书对算法做尽可能详尽综合的介绍,就像其它一些随处可见的类似的书一样。请不要再把这本书推荐给初学者。
http://blog.csdn.net/is2120/article/details/7447925
    编译原理(Compilers: Principles, Techniques, and Tools)(the Dragon Book).这本恐龙封面的书涵盖了开发一个编译器你所需要的全部的知识。它的内容包括词汇分析,语法分析,类型检查,代码优化,以及其它很多高深的题目。请不要把这本书推荐给初级程序员,他们需要的只是分析简单的包含数学公式或HTML的字符串。除非你真的需要实现一个能够实用的编译器(或解释器),你根本不需要掌握这本“恐龙”书的全部强大威力。把它推荐给一个遇到简单文本分析问题的人,这证明你根本没有读过它。
    计算机程序设计艺术(The Art of Computer Programming)(TAOCP)我经常听到人们把这本书描述为“每个程序员必读”的系列计算机书籍。我认为这明显不是实情。在我说出这样大不敬的话、被你们用板砖拍死之前,请让我做解释一下。这不是一本让你一页一页翻着读的书。这是一本参考大全书。把它放在你的书架上看起来会很不错(实际上也它确实很好),但如果想把它通读一遍,你需要几年时间,而且最后什么都没记住。这并不是说手边放这样一本书没有什么价值。它是一本参考书,当我遇到难题,走投无路时,很多次我都在这本书里找到办法。但这本书终究是被我当作参考书。它复杂难懂,很理论,里面的例子都是汇编语言的。好的一面是,如果你想在这本书里寻找针对某一问题的解决方案,如果你找不到,那就说明这个问题无解。它是一本对它所涉及到的领域做了最最详尽介绍的一本书。
    Design Patterns: Elements of Reusable Object-Oriented Software(Gang of Four)这本书是唯一一本在这个清单里我从头到尾读过的书,读的结果是,我不知道该把这本书归到哪个类别。它出现在这个清单里,并不是因为我认为只有很少人真正读过它。很多人都读过。只是因为有更多推荐过这本书的人自己却没有读过。Design Patterns这边书的问题在于,很多书里给出的信息,你在其它很多地方都能看到。这样就使得一个初学者在维基百科上读了几篇关于设计模式的内容后,就敢在面试中宣称自己看过这本书。这就是为什么Singleton成了一种新的全局变量的原因。如果有更多的人花时间读过这本也叫做Gang of Four的书的原著,那世界上就不会有这么多人会把17种设计模式硬塞到一个日志(logging)框架里了。这本书最精彩的部分是每章里描述如何正确的使用一种模式的段落。遗憾的是,这些精华却在很多其它设计模式资料里被漏掉了。
    C++程序设计语言(The C++ Programming Language)这本书不像一本编程教材,更像一本编程语言参考。有很多的迹象表明有人确实读过这本书,否则我们不可能有这么多的C++ 编译器可选择。编程初学者(或者甚至其它语言的专家),如果想学C++,不应该直接去啃C++程序设计语言(The C++ Programming Language)这本书。告诉他们去读《C++ Primer中文版》。

正如我之前说的,我知道你们当中会有一些人真正的读过这些书。那这篇文章不是针对你的,针对的是那些企图通过假装读过这些书来表现自己的民众。 如果你自己没有读过这些计算机书籍,请不要推荐给别人。这样做会耽误别人的时间,误人子弟,因为一些阅历更丰富的人可能会有更好的书(更针对某一领域,更容易理解,跟某种编程语言或某种编程水平更契合的书)来推荐。除此之外,你也能避免被那些真正读过计算机程序设计艺术(The Art of Computer Programming)的人用MMIX知识给拷问住造成的尴尬(如果你不知道我在说什么,那我指的就是你)。

[本文英文原文链接:Books Programmers Claim to Have Read ]
//z 2012-4-11 7:35:55 IS2120@CSDN
http://blog.csdn.net/is2120/article/details/7447925

转载于:https://www.cnblogs.com/IS2120/archive/2012/04/11/6745916.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bamao5628/article/details/101670433

智能推荐

element table固定表头,表的高度自适应解决方法_eltable流体高度固定表头-程序员宅基地

文章浏览阅读3.5k次。主要是通过在mounted生命周期中,改变tableHeight的值,来让表格的高度自适应。标签:<el-table ref="table" :data="tableData" :height="tableHeight"></el-table>vue中的ref解释第一种JS处理方式:export default { data(){ ..._eltable流体高度固定表头

在Ubuntu18.04安装GMT-6.1.1(在 Linux 下编译 GMT 源代码)_ubuntu 安装 gmt-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏24次。参考:GMT中文社区写本文的目的:参考了CSDN上面许多安装GMT方法但是安装过程出现了各种问题,可能因为下载了官网的最新版本,而CSDN都是老版的安装方法有些地方不适用,走了好多弯路。后来才发现GMT中文社区的v6.1手册把你想知道的都罗列的非常清楚(免费下载),包括非常详细的安装步骤,下面是对应在Linux 下编译 GMT 源代码的详细步骤,亲测有效!1 、编译及运行依赖GMT 的编译及运行需要如下软件:• CMake: >=2.8.12• netCDF(>=4.0 且支持 net_ubuntu 安装 gmt

AS3.0-程序员宅基地

文章浏览阅读238次。┏━━━━━━━━━━━━━━━━━━┓ ┃ 第一部分:ActionScript 3 语言基础 ┃ ┗━━━━━━━━━━━━━━━━━━┛ ================================================ 第2章 ActionScript 3 语言基本元素 ==========================================..._as3.0 readobject

【SpringBoot】自定义启动Banner(附:使用生成艺术字体方法)_spring启动字体生成-程序员宅基地

文章浏览阅读4k次。我们知道Spring Boot项目启动时会在控制台打印出一个banner,下面演示如何定制这个banner。(1)首先在resources目录下创建一个banner.txt文件。(2)在这个文件中写入的文本将在项目启动时打印出来。比如我写入如下内容:------------------------wwww.jynet.top------------------..._spring启动字体生成

从0到1 | 0基础/转行 如何用3个月学会Python机器学习-程序员宅基地

文章浏览阅读1.4k次。如今Python在人工智能和数据分析领域有着不可替代的作用,众多机器学习的框架都支持Python API,数据分析、存储、获取、运算方便, 所以Python 已经成为人工智能领域机器学习的第一语言。写这篇文章的初衷也是因为现在好多朋友都想了解如何入门/转行Python机器学习,搭上人工智能这列二十一世纪的快车。再加上这个问题每隔一阵子就会有人提及,因此想写篇文章来个一劳永逸。文章的_ai 入门 pythod

springboot131企业oa管理系统-程序员宅基地

文章浏览阅读762次,点赞20次,收藏21次。1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理企业OA管理系统的相关信息成为必然。开发合适的企业OA管理系统,可以方便管理人员对企业OA管理系统的管理,提高信息管理工作效率及查询效率,有利于更好的为人们服务。1.2研究目的随着互联网技术的快速发展,网络时代的到来,网络信息也将会改变当今社会。各行各业在日常企业经营管理等方面也在慢慢的向规范化和网络化趋势汇合。

随便推点

导出数据库脚本的重要性及方法详解-程序员宅基地

文章浏览阅读212次,点赞3次,收藏8次。数据库管理工具如SQL Server Management Studio、MySQL Workbench等都提供了导出数据库脚本的功能,我们可以通过简单的操作选择要导出的数据库或者表,然后生成相应的脚本文件。通过导出数据库脚本,我们可以将数据库的完整信息保存下来,即使在系统崩溃或出现其他问题时,也可以通过脚本进行数据的还原,保证数据的安全性和完整性。另外,导出数据库脚本也是数据库迁移和升级的关键一步。在进行数据库迁移或升级时,我们通常会通过导出数据库脚本的方式将原有数据库的结构和数据迁移到新的环境中。

Arduino - 多线程库 SCoop 应用 并发处理任务_scoop延时-程序员宅基地

文章浏览阅读1.4w次,点赞10次,收藏60次。原文:https://blog.csdn.net/wuli_dear_wang/article/details/77994377 相比原文做了一些改动,因为原文的 库文件下载地址失效了,我在 GitHub 找到了这个库的下载地址,有效的,在原文的基础上把下载地址换掉了。正文: 使用该库的【任务】功能,首先要做三..._scoop延时

conda使用清华镜像安装pytorch-程序员宅基地

文章浏览阅读4.2k次,点赞7次,收藏26次。conda使用清华镜像安装pytorch1. 首先,你的电脑得装anaconda这个东西2. 打开 Anaconda Prompt控制台3. 添加清华镜像conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda_conda使用清华镜像安装pytorch

git的ssh密钥生成与gitlab的密钥白名单导入_gitlab添加ssh 白名单-程序员宅基地

文章浏览阅读255次。1.ssh密钥:使用git的Git Bash Here(需要安装git,官网下载),输入cd–>enter–>ssh-keygen.exe–>一路enter下去即可。2.在.ssh文件中(通常在user文件夹)找到pub文件,用记事本打开,复制文本,在公司的GitLab上创建ssh密钥,粘贴文本即可。3.在sourceTree的工具–>选项–>ssh密钥中选择id..._gitlab添加ssh 白名单

PHP实验报告题目汇总(层次递进,全面丰富)_php运算符实验-程序员宅基地

文章浏览阅读2.9k次,点赞2次,收藏18次。我将本学期的多次php实验整理成了博客,将知识点一步步解析清楚。_php运算符实验

基于八叉树点云编码的优缺点_八叉树编码-程序员宅基地

文章浏览阅读2.1k次。基于八叉树点云编码的优缺点优点:结构简单,初步满足点云压缩的需求。缺点:由于八叉树数据结构本身特性,使得无法使用一些现有工具对几何编码进行性能提升,如预测编码、变换编码等。预测编码的原理是用预测值与原数值做差,一般而言,得到的残差的数据量会远远小于原数值,再进行变换编码、熵编码即可大大减少数据量。但是八叉树编码的结果是一串二进制序列,即使进行了预测也无法通过编码残差而减少数据量,也无法进行变化。因此基于八叉树编码的点云压缩中,几何比特的减少方向集中于上下文建模,即寄希望于熵编码来减少统计冗余_八叉树编码