编程大师近40年前的两本书,今天看来仍然是字字珠玑


本文摘自人民邮电出版社,侵删。

珍珠是一种古老的宝石,它们产于珍珠贝类和珠母贝类软体动物体内,经过贝类长时间分泌物质包裹外来颗粒聚合,最终形成一颗颗具有不同光泽、不同形状美丽的珍珠。

在计算机领域中,有那么一些经典思想或者图书,也像珍珠一样,经过多年的磨砺,慢慢成为被所有人认可并追随的璀璨经典。

小悠认为,乔恩·本特利和他的编程思想,还有作品“编程珠玑”系列就把这些表现得淋漓尽致。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 畅销三十多年的经典《编程珠玑》

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 经典延续,《编程珠玑 续》

01

半生投于计算机科学

乔恩·本特利本科就读于斯坦福大学,专业是数学科学,毕业后继续到北卡罗来纳大学求学,并获得硕士和博士学位。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 算法大师乔恩·本特利

之后他进入了卡内基梅隆大学,担任计算机科学和数学助理教授。在该校执教期间,包括Java之父詹姆斯·高斯林(James Gosling)、Tcl脚本语言创建者约翰·奥斯特豪特(John Kenneth Ousterhout)、Effective Java的作者约书亚·布洛赫等众多在计算机科学等领域做出极大贡献的科学家都曾是他的学生,受他的编程思想影响。同时,他曾担任过《算法导论》作者之一查尔斯·莱森的顾问。

乔恩·本特利当时既想开发产品又想写书,为了在理论与实践应用之间保持一个平衡,他于1982年离开卡内基梅隆大学,进入贝尔实验室开始自己新的一段人生。在贝尔实验室这些年,他见证了时代的变化,也和贝尔实验室一同成为时代变革的先驱。

2001年退休后,他受聘加入Avaya研究实验室,从事高质量软件和企业通信系统方面的工作,直至2013年退休。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 乔恩·本特利在Avaya

退休后的乔恩·本特利也没有闲下去,继续研究用于各种架构的高性能图书馆软件,并且经常受邀去大学中做学术演讲。同时,在业余时间里他还是一名狂热登山爱好者,2017年他完成了对美国东北部115座4000英尺高峰的单人攀登!

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 乔恩·本特利(2014)

1

在贝尔实验室的那些年

本书第1版的一位审稿人曾这样描述:本特利每天的工作环境是一个编程天堂,他是位于新泽西州莫雷山的贝尔实验室技术部的成员,能够直接接触到最先进的硬件和软件技术,并和全世界最优秀的一些软件开发人员一起进餐。

2000年编写本书并且还在贝尔实验室工作的时候,乔恩·本特利表示:现在的贝尔实验室仍然是这种地方,很多日子就像生活在天堂中,并且其他时光也非常美好。

他对贝尔实验室很有感情,所以在本书中主要使用的实际材料都来源于自己的工作,偏向自己的工作环境。并且,本书很多章节中的材料都是他那些优秀可爱的同事们贡献的,他对此表示非常感谢。

他认为自己在贝尔实验室期间,从研究人员和开发人员那里学到了很多东西,实验室有着很好的合作氛围,能够促进研究和开发之间的交互。所以他才会喜欢贝尔实验室,所以贝尔实验室才能出来那么多杰出的科学家和改变人类命运的研究成果。

他在贝尔实验室的工作集中在算法、UNIX工具和产品开发方面的研究,开发了许多用于促进算法实验分析的小语言。期间他发表了37篇影响深远的领域相关论文,并在1988年成为“杰出技术人员”。他在美国拥有的40多项专利,很多都来源于在贝尔实验室的工作。

2

极富创造性的编程思想

贝尔实验室给予了他一个能够把自己那些富有创造力的想法落地的极佳环境,在那里他时而偏向理论,时而偏向应用,尝试着从事各种各样的活动去实践自己的想法。

在实践工作中,他遇到了无数问题,又一一将它们解决。期间走了许多弯路,也发生过许多错误,也有很多有趣的事,还有和同事们共同探讨过程中碰撞出许多璀璨的思想火花。

他认为,作为一个真正的程序员和软件工程师,需要有创新性的思考,善于从各个方面去思考问题,从多个解决方法中找到最简洁的那一个。

在自己面对和思考,并解决问题的过程中,他总结了许多巧妙的设计原则、思考和解决问题的方法,以及实用的设计技巧。

3

乔恩·本特利的数字人生

那些实践经验最终汇成了数百篇技术论文,其中Multidimensional binary search trees used for associative searching在谷歌学术中被引用9075次(截至2022年5月19日),其他多篇有数千次的引用。而单单在ACM数字图书馆,他的这些发表文章就有近100000次的下载量。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲乔恩·本特利发文数据(来源:ACM数字图书馆)

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 谷歌学术中作者文章的引用数据

这些论文、书籍、文章的主要涉及领域有数学、算法、工程软件开发、软件工具等。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 乔恩·本特利的主要研究领域

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 研究关键词

更多的文章发表集中在贝尔实验室工作期间,当时的研究工给他带来了极大的思想启发,获得了大量的研究成果。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ 发文集中时间

02

八十年代风靡不衰的“编程珠玑”专栏

乔恩·本特利在贝尔实验室实现了自己又能做开发、又能写文章的梦想,所以1983年前后,他开始在ACM通讯杂志上创建“编程珠玑”专栏,发表自己的对于算法、编程的一些观点与看法,分享自己在这个领域的一些经验。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ ACM通讯上的“编程珠玑”专栏

编程大师近40年前的两本书,今天看来仍然是字字珠玑

▲ “编程珠玑”专栏文章

专栏一经开设,便引起大量关注,无数专业程序员、编程爱好者都对这个专栏内容表现了极大的兴趣。随着专栏内容持续发表,越来越多的读者从他的文章中获益匪浅,学到了很多编程与开发技巧、精巧的算法设计。

“编程珠玑”成为当时风靡不衰的一个专栏,无数读者期期不落守候着杂志就是为了等看乔恩·本特利又带来了什么有趣的故事和巧妙的算法知识。

编纂成书:整体大于局部之和

最开始,每一篇文章内容都是独立的,讲述各自的观点。专栏开设两三年后,越来越多的声音期待他能够把发表的文章整理成书,更方便阅读。乔恩·本特利为了满足读者与其他同事们的要求,开始修订整理工作。

作为一本书,需要章节有内在的逻辑关系,不能过于分散独立。所以他仔细检查了所有内容,修正了几十处错误,进行了几百处较小的改进,并新增了几个新的章节。作为书与杂志专栏的区别,他还增加了近一半的插图来辅助讲解。

最后把所有内容放到一起,体现了整本书的主题——对程序做深入思考,起到了一个整体大于局部之和的效果。他表示:程序设计不仅仅意味着对正式的需求文档进行系统的程序开发,还要有更多的思考,比如性能。

《编程珠玑》这本书便出现在人们面前,被读者疯狂抢购阅读。乔恩·本特利表示:即便只能够帮助一个会心的程序员重新爱上他的工作,这本书也算达到目的了。

当然,这本书最终帮助的人已经无可计数,无数人因为这本书踏上程序员之路,无数程序员因为这本书对于编程有了新的思考,无数人使用这本书开始了自己的算法学习旅程。

这本书帮助了太多的人。

03

新的时代,新的内容

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

1

《编程珠玑第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版是要好很多的。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

2

《编程珠玑 续》

《编程珠玑 续》是《编程珠玑》的姊妹篇,其中的内容最早也是发布在当时著名的“编程珠玑”专栏中的文章。

自这些文章首次发表以来,整个行业与领域都发生了太多的变化,乔恩·本特利也不得不去进行修改以适应那些变化:出现的新的问题和解决方案、纠正一些小错误、采纳许多读者意见。与此同时,他删除了一些旧的重复内容,并加入了新的内容和章节。

当然,最重要的是和写《编程珠玑》一样,他想把那些零散的文章组成一个有机的整体,展示一整串珠玑。本书有几章也在讨论《编程珠玑》中的性能问题,但全书考察的编程领域范围要大得多。

本书的第1章至第4章描述操纵程序的技术;第5章至第8章给出了一些程序员的实用技巧,这是本书技术性最低的部分;第9章至第12章讲解输入和输出设计;第13章至第15章介绍了3个有用的子程序。这些分类主题在每个部分的引言中进行了详细说明。

在本书有些章节末尾的“深入阅读”并不是简单的学术意义上的参考文献列表,而是作者推荐的一些好书,这些书是他个人藏书的重要部分。读者如果有机会,一定不要忘了去看那些书,收获必定非凡。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

计算机编程充满乐趣,有时候,它又是一门优雅的科学,还要靠它去开发和使用新的软件工具。有时候在编程之外,程序员还需要考虑一些问题:客户实际想要解决什么问题,如何让用户容易与程序沟通?

而这两本书《编程珠玑 第2版》与《编程珠玑 续》就可以帮助程序员对编程进行更好、更深的思考。

编程大师近40年前的两本书,今天看来仍然是字字珠玑

相关阅读 >>

适马新款60-600mm镜头规格曝光

印度首富财富超千亿美元,但仍不足马斯克的一半

魔兽怀旧服别玩这职业,从头到尾是“骗局”,包括60版本的强大

来自星际飞行的10项新技术

上帝想玩游戏了 红白机fc之父去世

苹果 ipad 10 和 ipad pro 2022 首批订单已进入“准备发货”状态

oppo多款机型率先适配android14的coloros

无奈,iphone 13还没买到,又要减产1000万部,太难了!

如何让m1版mac用上win11?答案竟然如此简单!

三国杀:你好,我们是射击游戏!

更多相关阅读请进入《新闻资讯》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...