当前位置:首页 > 范文 > 《编程珠玑(第2版•修订版)》读后感100字

《编程珠玑(第2版•修订版)》读后感100字

格式:DOC 上传日期:2024-11-25 12:40:29
《编程珠玑(第2版•修订版)》读后感100字
时间:2024-11-25 12:40:29   小编:

《编程珠玑(第2版•修订版)》读后感(篇一)

在第1版发布的10多年之后,《编程珠玑》第2版终于出版了,以适应时代与更新的计算机技术。

乔恩·本特利自己也非常、非常喜欢这本书,在写的过程中他获得了无比的乐趣,这么多年来读者也一直非常支持他。书中的原理经受住了时间的检验,但是第1版中很多例子已经过时了,比如现在的读者很难理解只有半兆字节内存的所谓“巨型”计算机。

而第2版提供的许多程序运行都基于他的计算机——一台128MB内存、运行Windows NT 4.0操作系统的400 MHz Pentium Ⅱ。当然,这对于我们来说仍然是一个“过时的老家伙”,但重要的是那些方法和对编程的思考。

与第1版最大的不同是,第2版中多了大约2500行C/C++代码,所有人都能看到了——此前版本里面的代码只有作者自己能看到,书中是没有的。

他认为,库函数很棒,应该尽可能地利用它们来解决问题。但是在实际的工程活动中,并不是已有的工具就能满足所有客户需求,当库函数不够用的时候,程序员就需要亲自动手编写函数。

这种编程思想就是现在广为流传的“不要重复造轮子”,大师的思想不会过时。

并且,在第2版中作者对于代码调优做了一个新的尝试——从高速缓存和指令级并行性的角度来考虑。具体来讲,新增的3章内容表现为:第5章描述了真实的代码和脚手架,第13章给出了数据结构的细节,第15章派生了高级算法。书中的多数观点此前已发表,但附录C中的空间开销模型和15.3节的马尔可夫文本算法是首次出现的。

《编程珠玑(第2版•修订版)》读后感(篇二)

在第1版发布的10多年之后,《编程珠玑》第2版终于出版了,以适应时代与更新的计算机技术。

乔恩·本特利自己也非常、非常喜欢这本书,在写的过程中他获得了无比的乐趣,这么多年来读者也一直非常支持他。书中的原理经受住了时间的检验,但是第1版中很多例子已经过时了,比如现在的读者很难理解只有半兆字节内存的所谓“巨型”计算机。

而第2版提供的许多程序运行都基于他的计算机——一台128MB内存、运行Windows NT 4.0操作系统的400 MHz Pentium Ⅱ。当然,这对于我们来说仍然是一个“过时的老家伙”,但重要的是那些方法和对编程的思考。

与第1版最大的不同是,第2版中多了大约2500行C/C++代码,所有人都能看到了——此前版本里面的代码只有作者自己能看到,书中是没有的。

他认为,库函数很棒,应该尽可能地利用它们来解决问题。但是在实际的工程活动中,并不是已有的工具就能满足所有客户需求,当库函数不够用的时候,程序员就需要亲自动手编写函数。

他希望书中提供的伪代码片段和网站上的真实代码可以派上用场,帮助程序员使用本书提供的脚手架和试验方法评估各种算法的性能,从中挑选出最佳算法。

这种编程思想就是现在广为流传的“不要重复造轮子”,大师的思想不会过时。

并且,在第2版中作者对于代码调优做了一个新的尝试——从高速缓存和指令级并行性的角度来考虑。具体来讲,新增的3章内容表现为:第5章描述了真实的代码和脚手架,第13章给出了数据结构的细节,第15章派生了高级算法。书中的多数观点此前已发表,但附录C中的空间开销模型和15.3节的马尔可夫文本算法是首次出现的。

《编程珠玑(第2版•修订版)》读后感(篇三)

在第1版发布的10多年之后,《编程珠玑》第2版终于出版了,以适应时代与更新的计算机技术。

乔恩·本特利自己也非常、非常喜欢这本书,在写的过程中他获得了无比的乐趣,这么多年来读者也一直非常支持他。书中的原理经受住了时间的检验,但是第1版中很多例子已经过时了,比如现在的读者很难理解只有半兆字节内存的所谓“巨型”计算机。

而第2版提供的许多程序运行都基于他的计算机——一台128MB内存、运行Windows NT 4.0操作系统的400 MHz Pentium Ⅱ。当然,这对于我们来说仍然是一个“过时的老家伙”,但重要的是那些方法和对编程的思考。

与第1版最大的不同是,第2版中多了大约2500行C/C++代码,所有人都能看到了——此前版本里面的代码只有作者自己能看到,书中是没有的。

乔恩·本特利在书中关于程序员到底应该使用库函数还是应该从头开始自己编写代码的问题上,采用了计算机图形学专家汤姆·达夫(Tom Duff)的经典观点来回答:尽可能地“盗用”已有的代码。

他认为,库函数很棒,应该尽可能地利用它们来解决问题。但是在实际的工程活动中,并不是已有的工具就能满足所有客户需求,当库函数不够用的时候,程序员就需要亲自动手编写函数。

他希望书中提供的伪代码片段和网站上的真实代码可以派上用场,帮助程序员使用本书提供的脚手架和试验方法评估各种算法的性能,从中挑选出最佳算法。

这种编程思想就是现在广为流传的“不要重复造轮子”,大师的思想不会过时。

并且,在第2版中作者对于代码调优做了一个新的尝试——从高速缓存和指令级并行性的角度来考虑。具体来讲,新增的3章内容表现为:第5章描述了真实的代码和脚手架,第13章给出了数据结构的细节,第15章派生了高级算法。书中的多数观点此前已发表,但附录C中的空间开销模型和15.3节的马尔可夫文本算法是首次出现的。新的马尔可夫文本算法绝不亚于Kernighan和Pike提出的经典算法。

《编程珠玑(第2版•修订版)》读后感(篇四)

在第1版发布的10多年之后,应广大读者的要求,他重新编辑《编程珠玑》,以适应时代与更新的计算机技术。

乔恩·本特利自己也非常、非常喜欢这本书,在写的过程中他获得了无比的乐趣,这么多年来读者也一直非常支持他。书中的原理经受住了时间的检验,但是第1版中很多例子已经过时了,比如现在的读者很难理解只有半兆字节内存的所谓“巨型”计算机。

而第2版提供的许多程序运行都基于他的计算机——一台128MB内存、运行Windows NT 4.0操作系统的400 MHz Pentium Ⅱ。当然,小异知道,这对于我们来说仍然是一个“过时的老家伙”,但重要的是那些方法和对编程的思考。

与第1版最大的不同是,第2版中多了大约2500行C/C++代码,所有人都能看到了——此前版本里面的代码只有作者自己能看到,书中是没有的。

乔恩·本特利在书中关于程序员到底应该使用库函数还是应该从头开始自己编写代码的问题上,采用了计算机图形学专家汤姆·达夫(Tom Duff)的经典观点来回答:尽可能地“盗用”已有的代码。

他认为,库函数很棒,应该尽可能地利用它们来解决问题。但是在实际的工程活动中,并不是已有的工具就能满足所有客户需求,当库函数不够用的时候,程序员就需要亲自动手编写函数。

他希望书中提供的伪代码片段和网站上的真实代码可以派上用场,帮助程序员使用本书提供的脚手架和试验方法评估各种算法的性能,从中挑选出最佳算法。

这种编程思想就是现在广为流传的“不要重复造轮子”,大师的思想不会过时。

并且,在第2版中作者对于代码调优做了一个新的尝试——从高速缓存和指令级并行性的角度来考虑。具体来讲,新增的3章内容表现为:第5章描述了真实的代码和脚手架,第13章给出了数据结构的细节,第15章派生了高级算法。书中的多数观点此前已发表,但附录C中的空间开销模型和15.3节的马尔可夫文本算法是首次出现的。新的马尔可夫文本算法绝不亚于Kernighan和Pike提出的经典算法。

总的来讲,《编程珠玑 第2版》更适用于当下的编程环境,比第1版是要好很多的。

《编程珠玑(第2版•修订版)》读后感(篇五)

本书的作者乔恩.本特利(Jon Bentley)是世界著名计算机科学家,被誉为影响算法发展的十位大师之一。他先后任职于卡内基-梅隆大学、贝尔实验室和Avaya实验室。

在卡内基-梅隆大学担任教授期间,他培养了包括Tcl语言设计者John Ousterhout、Java语言设计者James Gosling、《算法导论》作者之一Charles Leiserson在内的许多计算机科学大家。

上个世纪80年代,Bentley以技术人员的身份常驻贝尔实验室,但他一直有一个梦想:“我希望能让每程序员都能学到东西。”

因此Bentley一直将自己的工作历程发布在《ACM通讯》杂志上,希望能够帮助热爱编程的年轻人开阔眼界。ACM非常支持Bentley,并且为Bentley设置了一个颇具传奇色彩的“编程珠玑”(Programming Pearls)专栏 。

在这些文章中,Bentley从工程实现的角度出发,为程序员们提供了一个个艰难问题的解决方案,犹如一颗颗闪闪发亮的珍珠。Bentley的“珍珠”超出了可靠工程学的范畴,利用他的洞察力和创造力为那些恼人的问题提供了独特而巧妙的解决方案。因此,Bentley便成了风靡一时的“爱豆”,可以说,那时热爱编程的人几乎都迷恋他。

后来在ACM的鼓励下,Bentley将“编程珠玑”系列仔细修订和补充整理,对各篇文章的先后次序做了精心编排。于是,现在我们看到的这本涵盖从算法理论到软件工程各种主题的《编程珠玑》正式诞生。

▲ 1986年出版的第一版《编程珠玑)

后来Bentley又出版了《编程珠玑(续)》。在《编程珠玑(续)》中,Bentley将书中的例子都改用当时火爆的C语言书写,并多处提到如何用C++和Java中的类来实现,因此大部分程序员阅读起来都比较轻松,导致这两本书一出版几乎卖断货。

《编程珠玑》到底写了什么

《编程珠玑》围绕程序设计人员面对的一系列实际问题展开。作者以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。

我们用一个简单的思维导图展示《编程珠玑》两本书的内容框架,而蕴含其中的精华内容,还需读者集中注意力,仔细阅读。

▲ 《编程珠玑 第2版》与《编程珠玑 续》内容对比

《编程珠玑(第2版•修订版)》读后感(篇六)

“第一次读《编程珠玑》还是在大学里,当时的互联网虽然还不像现在这样发达。”当《编程珠玑》刚刚进入国内,高博就有机会拜读了这本书。和其他读过《编程珠玑》的人一样,高博被这本书深深地震撼了。

“《编程珠玑》的厉害之处,在于它从一个程序设计大师的视角出发直击编程这件事情的‘要害’,直接教你老师傅是怎么想问题,以及怎么着手做事。”

编程其实无非两件事情,第一要正确地实现功能,第二要取得尽可能好的时空性能,《编程珠玑》整本书就是在全面细致地展开这两个主题。但是《编程珠玑》与众不同的地方有三点:

要熟练掌握基础算法和数据结构

《编程珠玑》特别强调基础算法和数据结构的熟练掌握和灵活运用。也就是说,我们不能只掌握到去调用库函数,而是要深入了解基础算法和数据结构是怎么实现,在不同的场景下应该怎么选择,在默认实现不能满足需要的时候要怎么改造它们的关键部分。

为代码建立自动化验证工具

《编程珠玑》极力建议大家养成为编写的代码建立配套的自动化验证工具的习惯,这一点可以说是检验程序员是业余还是专业的分野。专业程序员写出来的每一行代码都是要用在生产环境里作为生产力的。

这里不得不提到一个词,工业级代码。什么叫工业级代码?

工业级代码必须是能站得住脚的,不能只建立在直觉和短期的思考之上。在作为功能的代码周围要建立起一系列验证设施,以确保它们能够应对千变万化的、合法或非法的、甚至是蓄意破坏性的输入。这些设施包括断言和单元测试,等等。

此外,还要保证代码运行的性能在设计限制之内,这就不仅要运用时空剖析工具,更重要的是要回归原理,反思是不是能通过换用或改造算法和数据结构来获得性能提升。

设计和构建工业级代码,要求我们熟练地运用各种第三方工具,保证生产环境中运行的代码实现选用了最合理的算法和数据结构,并且有着可验证、可分析的功能和性能,这些都是专业程序员的必备素养。

要不断提升品味,不断反思代码

最重要的一点,这是书里没有明确地写出来,而是在字里行间透射出来的,就是要不断地提升作为程序员的品味,不断地反思已经写完的代码。

能不能让我写的代码更健壮、更有可移植性、跑得更快、占用的资源更少……

这样的追求在时下浮躁的行业气氛中要求很高,对于程序员来说,要在巨大的进度压力下做到这些很不容易。但是如果要不断提高自己,成为更专业的程序员,就必须不断地自问,并在日常工作中做出选择。

“我想,这就是阅读《编程珠玑》能够给我们带来的字面上的实务指导,还有隐含在字面下的精神力量。”

《编程珠玑》的作者Jon Bentley曾经说过,“计算机编程充满乐趣,有时候,它既是门优雅的科学,还要靠它去开发和使用新的软件工具。”

正如自然界里珍珠出自细沙对牡蛎的磨砺,Jon Bentley以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”,最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。

书中的真实历史案例和练习题以及部分练习题的提示与解答,非常适合自学。阅读这两本书时,读者需要备有纸和笔,最好还有一台计算机在手边,边读边想、边想边做,这样才能将阅读这两本书的收益最大化。

“如果你有志于成为一个优秀的软件工程师,那么你一定要仔细地读一读《编程珠玑》。”

书里讲的算法和工具固然重要,但要明白这些都是例子,仅仅掌握这些例子本身是远远不够的。必须要举一反三,吃透为什么要选择这些算法和工具,它们为什么适用于书里讲到的问题和场景,对于自己在面对的问题和场景又应该怎么做。

“如果你勤于思考,我建议你每隔一段时间就重读一次,每次重读都会读出新的体会来,而这种体验恰恰说明你自己确实有提高了!”

《编程珠玑(第2版•修订版)》读后感(篇七)

引言

电影《叶问》中,甄子丹说出那句经典台词“我要打十个”时,让多少人热血沸腾。这样的底气,就是绝对实力的体现。

在互联网这个江湖里,想必程序员们也想自信喊出“我要打十个”,但总担心会被现实打得一头包。那对于程序员来说,怎样才算是拥有绝对实力呢?

我想应当具备以下几个方面的能力:

这么看下来,你可能会觉得“我能胜任工作,是不是就等于具备这些能力”?还真不是这样的,同样是对着木人桩练咏春拳,叶问是宗师,你可能就是人肉沙袋。

因为在实际工作中,一个很大的问题,就是你虽然写出了能用的程序,但不知道还有更优的解法;或者超额浪费资源,用高射炮打了蚊子。显然,这样是不利于职业长远发展的,程序员要找到提升自己的方法。

跟随行业大神学习,是快速成长的不二法门。那么,对于程序员来说,Jon Bentley所著的《编程珠玑》,就是必读经典了。

是的,读懂这本书,你真可以自信喊出“我要打十个”了。

《编程珠玑》有何神奇之处,为什么我敢说这样的话?因为你了解一下作者Jon Bentley的江湖地位就知道了。简单说,他是祖师爷们的授业恩师。

别的不多说,仅举两例。上大学你被《算法导论》磕掉过大牙吧?其作者之一Charles Leiserson是他徒弟;你过得人五人六,是捧着java这好饭碗吗?java之父高司令——James Gosling,也是他徒弟。

Jon Bentley本人也在计算机科学发展上做出了杰出贡献,被誊为影响计算机算法发展的十位大师之一。

1982年,Jon大神离开执教六年的卡耐基梅隆大学,进入了业界传奇所在——贝尔实验室。这个实验室诞生了9位诺贝尔奖获得者,以及5位图灵奖获得者。可以想象,Jon大神在这里与那些传奇人物们,碰撞出了多么绚烂的思想之花。

是以,你在《编程珠玑》中能看到Jon与贝尔实验室的同仁们,是如何开创性地思考并解决问题的。

幸好,《编程珠玑》并不是一本高高在上的书,而是非常贴近程序员的日常工作。看这本书,我的感觉就是在近距离观摩大神,看他如何从提出问题到写出最终的代码来。

接下来,就让我们从怎么提问开始学习吧。

程序员都知道,工作中不能听完需求就立马动手写代码,这多半会南辕北辙。我入行不久时,就吃了一记大亏。

当时是一个内部需求,采编部门想要一个自动上传处理工具,将原始文件传到服务器进行转码,然后发布。在需求会上,我想当然地认为对方跟我认知一致,就按照自己的想法去实现功能。

可想而知,到了交付期限时对方拒绝接收,甚至评估关键流程都不对。领导跟我复盘时哭笑不得,只好领着我找到对方,重头把需求捋清楚。

人生没有后悔药,我不能说要是早点看到《编程珠玑》,是不是就不会犯这样的低级错误了。但如果你也是刚入行,而且还没看过这本书,那就赶紧走起,别再重蹈我的覆辙了。

Jon大神在书的开篇就说明了问对问题,远比马上寻找答案重要得多。不过,即使是有了一定工作经验,也要避免犯先入为主的错误。Jon大神就是刚听完问题,马上给出解答,但并没有解决问题。

感觉敏锐的Jon大神捕捉到对方的犹豫,立即展开追问,才终于搞明白问题的真正所在,从而也提出了最优解决方案。

那么,程序员要培养自己剖析问题的能力,可以有以下三个方法。

Jon大神在《编程珠玑》中提出过一个他观察到的事实,即90%的程序员都无法一次将二分搜索的算法写对。一个更惊人的事实是,二分搜索算法的论文在1946年就发表了,但第一个没有错误的程序直到1962年才写出来。

这个现象,就是在理解问题与编程实现之间,有着巨大的鸿沟。因为魔鬼总在细节中,这也是为什么道理都懂了,却过不好这一生。生活是具体的,编程也是。

幸好,Jon大神提供了一些方法和工具,帮助程序员们把程序写对。

首先,写程序之前也要打草稿。估计这一点就挺出人意料的,程序员的草稿就是伪代码,这需要提起笔,在纸上一句一句写下来。

做这件事情的好处是显而易见的,就是将自己的大脑设置为计算机的工作模式,检验设计思路的可行性。在这一步发现问题,调整设计方案是比较从容的,这比写成代码之后再调整,代价要小得多。

其次,要构建完整的自动测试工具集。人的脑容量是有限的,无法记住所有代码的细节。这就要靠自动化的测试工具,来保证程序的结果没有出错。

最后,注重benchmark的测量。结果符合预期并不是工作的结束,还要测量运行时benchmark的数值。优化系统,解决性能瓶颈,往往需要对系统内关键细节有足够的了解。

你去大厂面试,有道面试题是让你写一个算法,要求对大量数据进行排序。如果你只会写插入排序,大概率是通不过的。因为这说明你对基本的算法时间复杂度都没有掌握好。

因为选择不同的排序算法,程序性能存在数量级的差别。很多程序员通过刷题能敲开公司的大门,但在实际工作中,却认为只要能用就行。这个认知,会对程序员的职业生涯造成非常不利的影响。

程序员问对了问题,接下来就要把事情做对。

当然,面试题考察的场景总是简单的,实际工作中业务逻辑更加复杂,能实现功能说不定就费了很大脑筋。但这不能成为程序员不思进取的理由。能一打十的程序员总是会向前多走一步,即写出不仅能用,而且好用的程序来。

一项关键技能,是要能够分析程序的性能,并找到问题的最优解。要具备这项能力的前提,是程序员自己要打好扎实的计算机科学理论基础。这包括数学功底、计算机系统组成结构、计算思维等。

在实际工作中,要想找到问题最优解,可以做好以下几个方面:

如果说一个程序员能以一打十,让你还觉得有些抽象,或者觉得自己也行。那么换个说法,当行业发生变化时,你能否无惧于动荡,自信在任何时候都有自己的位子,而且收入水平只会上升,不会下降呢?

如果你是这样的程序员,那么请接受我的敬意,并且让我跟你交个朋友。如果不是,那也没关系,我们一起跟着Jon大神学习起来吧。只要走在了正确的路上,任何时候出发都不会晚。

One more thing.

Jon大神在《编程珠玑》中每一章的“深入阅读”部分列举了诸多经典好书,这绝对是一处宝藏。我摘取一部分书目列举在下面,更多的宝贝就等你自己去挖掘吧。

最后,《编程珠玑》有两本,记得看全哈。

《编程珠玑(第2版•修订版)》读后感(篇八)

2008 年,我还在混 Hi-PDA 论坛时,曾在里面求经典计算机书推荐,然后有个哥们推荐了 编程珠玑。

我信了,在 卓越 上搞了一本。

至今,我非常感谢那个哥们。

从某种程度上说,这本书改变了我人生的轨迹。

编程珠玑 第二章 啊哈算法 里面讲了三个算法题目,其中有第二题是字符串移位(例如:abcdef → defabc)

这道题我碰到两次:

(这里也可以看出十年前远没有现在这么卷,字符串移位这种题目都能考研进微软)

编程珠玑是贝尔实验室 Jon Bentley (名字缩写 JB 似乎不雅,还是叫宾利叔高端些)在 ACM 通讯上的程序设计档搞的连载,由于宾利叔既有实力又有文采,编辑决定把这些连载整理成书。这就有了这本程序设计奇书——编程珠玑。

之所以说这本书是奇书,因为:

下面是我的摘录:

进行程序算法调优时,一般都会使用时空对换(time-space tradeoff):有时用空间换时间,比如缓存;有时有时间换空间,比如编码解码。

但有时程序之所以慢,是因为使用了错误的数据结构,或者对需求有误解。

这里举个我在 Facebook 做 Reaction (就是点赞)的例子:

Android 上性能很差,用户经常挂。

刚开始准备重新写 Reaction 缓存系统,但还好我抑制住了冲动。

一顿 code inspection + profiling 之后,我惊奇的发现 Android 本地存储的 Reaction 大的离谱,不到 16dp 的图标,却用了 256x256 的图片。

改了十来行,效率大幅提升,因为图片变小既降低了网络数据,又减少了 local cache 压力,所以 crash 也少了很多。

代码评审,架构评审,装逼必用。

你会想到这帮工程师的解法是 放鸽子 么。

把图纸拍成胶卷然后用信鸽。

鬼才。

参考上面的 放鸽子。

二分搜索写对确实很难。编程珠玑里的正确性验证为我打开了循环不变式的大门。

对这方面感兴趣的,可以读下 Tony Hoare 的 An Axiomatic Basis for Computer Programming,六页论文,读明白编程水平会提升一大截。

The Science of Programming 确实很好,不过有些烧脑,恐怕很少人能读的下去。

段子手

非常精炼的总结。

不要着急写代码。

用现在的话术,就是先找到痛点。

72 法则了解下。

优秀的工程师的一个特点,是知道自己的局限性。相比之下一些新人往往会快速的做出一些看似能用但一进 prod 就拉跨的鬼东西出来。

约束能带来更优秀的设计。

这十条建议适用于任何工程环境,甚至是人生决策。

尽管编程珠玑既有深度,又有广度,但我会推荐任何计算机水平的人去读:

奇书。满星。

以上。

严禁任何形式的搬运,我写书评,一方面记录,一方面分享,不是给营销号抄袭狗带流量。

还剩页未读,是否继续阅读? 继续免费阅读

下载此文档

范文

Powered 2024 版权所有 ICP备666666号

付费下载
付费获得该文章下载权限
限时特价 2.00
原价:¥10.00
在线支付
付费复制
付费后即可复制文档
特价:2.00元 原价:10.00元
微信支付
x
提示:如无需复制,请不要长按屏幕影响阅读体验
付费下载
付费后即可下载文档
特价:2.00元 原价:10.00元
微信支付
x
付费下载
扫一扫微信支付
支付金额:2.00