UNIX见证者带你探究UNIX传奇往事
2021-04-22 14:37:28 阿炯

2021年4月20日20点,锁定直播间:UNIX传奇往事的启示——暨《UNIX传奇》新书发布会。


UNIX是现代操作系统的鼻祖。从UNIX到FreeBSD,再到OS X,最后到iOS应运而生。由于UNIX的版权纠纷和Minix的封闭,Linux诞生了,而后又产生了Android。

UNIX的创造者奠定了操作系统的标准基石,UNIX的“分而治之”设计哲学——让每个程序做好一件事;要做一件新的工作,就构建新程序,而不是通过增加新“特性”使旧程序复杂化——被优秀程序员奉为圭臬。

如果将操作系统比喻成酒,那么UNIX应该是所有操作系统的“基酒”,因为有了它,才有了现在的互联网/物联网世界。所有行业都在数字化,数字化的服务就是操作系统控制的各种程序,我们现在依赖的各种网站、 云计算、大数据、手机通信及航空航天技术的背后都是操作系统在控制调度的。

自1969 年在贝尔实验室的阁楼上诞生以来,UNIX操作系统的发展远远超出其创造者们的想象。它带动了许多创新软件的开发,影响了无数程序员,改变了整个计算机技术的发展轨迹。

那么,UNIX操作系统为何如此重要?UNIX是如何产生的?贝尔实验室为何诞生了那么多图灵奖得主?中国操作系统的未来会如何?

带着这些问题,4月20日晚8点,异步社区特邀CSDN创始人蒋涛、 HybridOS操作系统创始人魏永明、 CSDN副总裁、前微软研发总监邹欣、《UNIX传奇》译者韩磊,在线直播,围绕贝尔实验室、UNIX传奇往事的启示等一系列问题进行探讨,带你揭秘操作系统鼻祖UNIX的发展之史,揭示传奇之路背后的可借鉴之处。


1、UNIX传奇的见证者——布莱恩·W.克尼汉

布莱恩·W.克尼汉(Brian W. Kernighan),1942年出生于加拿大多伦多,本科就读于多伦多大学工程物理专业,1969年获得普林斯顿大学电气工程博士学位,同年加入了20世纪最伟大的实验室——贝尔实验室。

在肯·汤姆森于1969年创作出了UNIX的雏形后,布莱恩·W.克尼汉创造了“UNIX”这一词,并为UNIX命名,还帮助推广了肯·汤姆森的UNIX哲学。


(布莱恩·W.克尼汉详细写了关于UNIX哲学的文章)

此后,布莱恩·W.克尼汉为UNIX创造了很多软件工具和语言,传播了“C/UNIX思想”的精髓。

1973年,布莱恩·W.克尼汉为UNIX编写了一个名为Ratfor的编译器。1976年,为了向在非UNIX系统上编写Fortran的程序员传播UNIX工具理念,他和比尔·普劳格合著了《Software Tools(软件工具)》,其中介绍了标准UNIX工具的Ratfor版本。

1974年,布莱恩·W.克尼汉和洛琳达·彻丽编写了UNIX操作系统中排版软件Troff中的eqn,用于处理数学排版。

1977年,布莱恩·W.克尼汉和阿尔·阿霍、彼得·温伯格共同开发了AWK。AWK作为第7版本UNIX中的早期工具之一,是专为文本处理设计的语言,是大多数类UNIX操作系统的标准功能。

1978年,布莱恩·W.克尼汉与C语言之父丹尼斯·里奇合著了《C程序设计语言》。这本书是是第一部介绍C语言编程方法的书籍,在C语言的发展和普及过程中起到了非常重要的作用,被视为是C语言的业界标准规范,被誉为“C语言圣经”,而且至今仍然广泛使用。


(1978年,《C程序设计语言》封面)

1985年,布莱恩·W.克尼汉与罗伯特·傅里叶(Robert Fourer)、大卫·盖伊(David Gay)共同创造了AMPL编程语言,这是一种代数建模语言,用以解决与描述大规模数学运算中的高度复杂问题。

1988年,布莱恩·W.克尼汉在 UNIX环境中为非程序员提供舒适的语言,发明了程序编程语言Pic。

......

布莱恩·W.克尼汉曾说:“UNIX是一个奇点,它是改变计算机世界的各种因素的独特组合结果。”他认为目前不会有另一个像UNIX一样的操作系统横空出世,在几十年内占领世界,不会有新的“操作系统革命”。如今的操作系统会继续发展,同时这些操作系统都是带有大量UNIX DNA的。


(ACM数字图书馆官网对布莱恩·W.克尼汉的成就所概括的关键词)


2、UNIX是一个“奇点”,富有深厚的思想启示

贝尔实验室是在美国科学创造的黄金时代产生的。布莱恩·W.克尼汉身处贝尔实验室,见证了UNIX 的诞生,领略了UNIX历史中的天才人物的个性,目睹并亲历了这些天才们创造一个个优秀工具时所经历的思考和过程,也悉知什么样的环境和机制才能带来这样的创造性......

他用有趣的文字和翔实的资料创作了《UNIX传奇:历史与回忆》,给我们展示了 UNIX 如何从无到有,以及如何从一个实验项目成长为工业级的事实标准的故事。

正如布莱恩·W.克尼汉在书中所言:

“本书主要的写作目的是讲述计算机历史上某个极具生产力和发展性的时期中的一些精彩往事。理解我们习以为常地使用的技术如何演化而来,颇为要紧。有人顶住压力、克服时间限制,做出了定义技术发展方向和路径的决策。

越了解历史,我们越感激那些带来 UNIX 的发明天才,或许也越能理解现代计算机系统是如何发展成现在这个样子的。仅就那些如今看起来大错特错抑或倒行逆施的选择而言,常常也是在当时可用资源限制之下所能考虑和实现的必然结果。”

他不仅在书中写到了技术内容,还写了许多有趣的幕后故事,写了那些天才人物的个性,以及UNIX诞生和发展的独特创造性环境,带领读者一览UNIX传奇历史,理解操作系统的精髓,领悟那些伟大科学家的开拓精神,从中汲取养分,丰富自身思想。

当然,UNIX传奇往事带给我们的启示绝不仅于此。

在这瑰丽的史诗中,聪明的研发者、开明的管理者以及管理者与研发者共同营造的开放环境和宽松氛围,鼓励创新创造的企业文化和不断追求卓越的专业精神,持续的投资和投入,不仅是 UNIX 取得成功的关键要素,也正是我们当前在倡导和推进科技创新、管理创新过程中值得好好学习、思考和借鉴的东西。

数百年的科技发展史告诉我们,谁掌握了科技的创新,谁才能成为全球经济的主导者。

当今我国在互联网应用和移动应用方面已走在世界前列,但在系统科技领域、原创科技领域还乏善可陈,我们正面临信息技术的又一次大革命,5G、人工智能、物联网、区块链等技术进一步发展。生逢其时,中国科技工作者需要从应用创新走向系统创新,需要沉下来去钻研突破重大的基础课题,需要争做科技创新的时代先锋。

那么,怎样构造这样的环境?怎样激发这样的人才?怎样驱动科技创新?这些问题都可以在UNIX传奇往事中找到答案。

本书所揭示的贝尔实验室的“玄机”——贝尔实验室人才济济,出现了多位图灵奖得主、多位语言创始人,离不开它的制度和模式。这正是我们渴求的答案。


(1983年,UNIX的两位创造者肯·汤普森(左一)和丹尼斯·里奇(左二)获得图灵奖)

这个环境自由、开放,不迷信和崇拜权威,百花齐放,百家争鸣。对于努力发展前沿科技的我们来说,贝尔实验室中明确的管理层级,稳定自由的科研环境,自上而下的评级,便利的工作环境,支持图书写作,技术管理、和而不争,有远见的持续投资等制度是极为宝贵的启示。


(1961年的贝尔实验室)

总而言之,UNIX传奇绝不仅仅只是一段UNIX成功史,而是一套能真正帮助我们解决现有问题的启示录。


3、“回忆往往披着玫瑰色的光晕,令人欢欣”

由此可见,UNIX这段传奇历史,每个人都应该知晓,它既对激发科技工作者的创新思维有重要作用,也对非技术人才具有重要的启发作用。不过对于这段恢弘的历史,缺乏全面详细的记录,人们在探索其中奥秘时,仍然没有方便快捷的途径去一览UNIX传奇历史的绚烂。

因此,UNIX的创造者之一、UNIX诞生与发展的见证者布莱恩·W.克尼汉为大家撰写了《UNIX传奇:历史与回忆》,书写UNIX的历史,记录此间回忆。

布莱恩·W.克尼汉在本书中重点叙述了1969年UNIX雏形的诞生,1971年 UNIX 初版的发布,1975年第6版 UNIX 的发布,第7版 UNIX 的发布,UNIX在科研中心之外的传播,UNIX的商业化以及UNIX的派生物。

虽然UNIX 操作系统是故事的中心,但其余亦有涉及。

布莱恩·W.克尼汉还在书中讲述被广泛使用的 C 语言,人们用它编写了支持互联网运行的系统及利用系统能力的各种服务。在贝尔实验室,还有一些编程语言随 UNIX  而生, 尤其要提到也被广泛使用的 C++。Word、Excel 和 PowerPoint 等微软 Office 软件就是用 C++ 写成的,大多数网页浏览器也是用 C++ 编写的。程序员们耳熟能详的一二十个日常开发工具,在 UNIX  的早期就已问世,四五十年以来一直维持原状,至今仍在许多程序员的工具包中有一席之地。

其中,计算机科学理论同样扮演着重要的角色,常常极大地推动实用工具的产生。硬件研究开拓出设计工具、集成电路、计算机体系架构,还有不常见的特殊用途设备。这些活动相互作用,往往带来预料以外的发明,这也是贝尔实验室在多个不同领域持续产出活力的原因之一。


布莱恩·W.克尼汉作为UNIX的见证者,从自己的人生轨迹切入,并以UNIX的关键成就和在这些关键成就里各个UNIX核心的领袖人物的活动以及思考为切入点双向展开,撰写了这本意蕴深刻的书籍《UNIX传奇:历史与回忆》。

这本书用传奇人物的故事串联一系列重要发明的起源与发展,用管理创新故事解读了贝尔实验室科技创新的背后力量,带领我们探寻了9项诺贝尔奖和4项图灵奖的传奇起源。


4、“CSDN创始人蒋涛:Unix传奇往事的启示”

这本书的出版同样唤起了《UNIX传奇》的序作者之一,CSDN创始人蒋涛的的编程记忆。

1990年他在大学里啃读这本书作者写的《C程序设计语言》,1992年他的的好友梁肇新(超级解霸创始人)手抄Minix源代码一万多行。

最近30年全球经济取得巨大发展,经济发展最大的推动力源自信息技术创新。

然而全球最领先的企业都是软件驱动的。不用说谷歌、腾讯,就连硬件领域最大公司苹果的创始人史蒂夫•乔布斯2007年也说过:“苹果公司最大的秘密,那就是苹果把自己看成是一家软件公司。如果你仔细想一下MacBook是什么,它是OS X操作系统——虽然它也有一个漂亮的外壳,但它是OS X操作系统。如果你想一下iPhone 是什么,它也是软件。”

软件技术的“皇冠明珠”就是操作系统。所有行业都在数字化,数字化的服务就是操作系统控制的各种程序,我们现在依赖的各种网站、云计算、大数据、手机通信及航空航天技术的背后都是操作系统在控制调度的。

UNIX是现代操作系统的鼻祖。从UNIX到FreeBSD,再到OS X,最后到iOS应运而生。由于UNIX的版权纠纷和Minix的封闭,Linux诞生了,而后又产生了Android。

UNIX的创造者奠定了操作系统的标准基石,UNIX的“分而治之”设计哲学——让每个程序做好一件事;要做一件新的工作,就构建新程序,而不是通过增加新“特性”使旧程序复杂化——被优秀程序员奉为圭臬。

文件、目录、系统调用、shell、管道,还有一大批优秀的生产力工具,如grep(正则表达式)、diff、Lex、Yacc、Make等,都凝结着UNIX创造者的智慧和心血。

贝尔实验室是在美国科学创造的黄金时代产生的。作者布莱恩身处贝尔实验室,见证了UNIX的诞生,他用有趣的文字和翔实的资料给我们展示了UNIX如何从无到有,以及如何从一个实验项目成长为工业级的事实标准的故事。

一大批天才人物聚集在一起,没有生活的压力,没有KPI的烦恼,自由地探索科学的发展和应用。即使是贝尔实验室的小角色后来都成了大人物,比如谷歌前董事长埃里克•埃默森•施密特就曾作为贝尔实验室实习生参与编写Lex第一版程序。这些天才人物是什么样的个性?创作一个个优秀工具的时候他们经历了什么样的思考和过程?什么样的环境和机制才能带来这样的创造性?这些精彩往事值得细读。

为什么我们今天要读这本书?

数百年的科技发展史告诉我们,谁掌握了科技的创新,谁才能成为全球经济的主导者。当今我国在互联网应用和移动应用方面已走在世界前列,但在系统科技领域、原创科技领域还乏善可陈,我们正面临信息技术的又一次大革命,5G、人工智能、物联网、区块链等技术进一步发展。生逢其时,中国科技工作者需要从应用创新走向系统创新,需要沉下来去钻研突破重大的基础课题,需要争做科技创新的时代先锋。

怎样构造这样的环境?怎样激发这样的人才?怎样驱动科技创新?这些问题都可以从这本书略见端倪。小米创始人雷军说过大学里读到的《硅谷之火》激励了他从事软件创业,希望这本UNIX创造者的精彩故事集也能激励年轻科技工作者从事系统科技的研究与创新。


5、《UNIX传奇》新书发布会

值此《UNIX传奇:历史与回忆》出版之际,异步社区联合CSDN,邀请到本书译者、IT产品与运营专家韩磊,CSDN创始人、总裁蒋涛,HybridOS/MiniGUI/HVML开源项目创始人、北京飞漫软件技术有限公司总经理兼首席架构师魏永明,前微软Azure工程团队首席研发经理、技术畅销书《编程之美》及《构建之法》的作者、现CSDN副总裁邹欣,带来《UNIX传奇往事的启示》主题直播!


4月20日晚8点,我们将对语言或操作系统的专利权、中国技术专才的发展前途、UNIX带来的启发和反思、贝尔实验室计算科学研究中心的管理模式与风格、当今中国IT企业的KPI模式、国有操作系统的未来等方面进行探讨,分享UNIX传奇往事给我们带来的启示。

不管你是操作系统行业从业者、互联网领域的从业者、计算机相关专业的教师与学生还是操作系统的热爱者及对计算或创新史感兴趣的读者......

锁定本次直播活动,你都能从UNIX传奇往事中找到启示,获益匪浅!


UNIX传奇:历史与回忆

作者:[美] 布莱恩·W.克尼汉(Brian W.Kernighan)

译者:韩磊

自1969年在贝尔实验室的阁楼上诞生以来,UNIX操作系统的发展远远超出其创造者们的想象。它带动了许多创新软件的开发,影响了无数程序员,改变了整个计算机技术的发展轨迹。

本书不但书写UNIX的历史,而且记录作者的回忆,一探UNIX的起源,试图解释什么是UNIX,UNIXUnix是如何产生的,以及Unix为何如此重要。除此之外,本书以轻松的口吻讲述了一群在贝尔实验室工作的发明天才的有趣往事,探秘他们如何从传说中走出来,就地显现极客真面目。本书中每一个精彩故事都是鲜为人知却又值得传播的宝贵资源。

本书是为对计算机或相关历史感兴趣的人编写的,虽然它包括一部分技术相关的资料,但读者不需要有太多的专业技术背景,就可以欣赏UNIX背后的思想,了解它的重要性。

上文参考来源链接:
https://www.cs.princeton.edu/~bwk
https://en.wikipedia.org/wiki/Brian_Kernighan
《UNIX传奇:历史与回忆》 推荐辞、前言、第四章、第五章



“UNIX的名字是我起的”——对话UNIX开发者Brian W. Kernighan

【CSDN 编者按】《程序员》于 2000 年创刊,其理念为技术改变世界,创新驱动中国。2021 年,全新的《程序员》2.0 重新起航,以专业的内容为立足点,以音视频、图文专栏等丰富的多媒体形式为载体,立足当下,放眼未来,为读者带来全方位的技术和产业解读。
本文为《程序员》2.0 第一期内容,与 UNIX 的开发者之一、UNIX 命名者布莱恩·克尼汉(Brian W. Kernighan)畅谈技术与人生。

作者 | 《程序员》编辑部
出品 | CSDN(ID:CSDNnews)



UNIX 的开发者之一、UNIX 命名者布莱恩·克尼汉(Brian W. Kernighan)

在软件历史中,UNIX是一个传奇。自1969年在贝尔实验室的阁楼中诞生以来,UNIX的发展远远超出了创造者们的想象。它带动了许多创新软件的开发,影响了无数程序员,如果没有它,Linux、macOS和Android系统可能不会存在,人们依赖的导航软件、智能家电、智能手机、物联网也会缺失。

近日,《程序员》采访了UNIX的研发者与命名者布莱恩·克尼汉(Brian W. Kernighan)教授,他也是AMPL(数学编程语言)与AWK(文本处理工具)的共同创造者之一,曾和C 语言之父丹尼斯·里奇(Dennis MacAlistair Ritchie)共同写作了C语言的第一本著作《C程序设计语言(The C Programming Language)》。我们和布莱恩·克尼汉教授聊了聊UNIX的成功之道,以及操作系统的未来走向。在访谈中,我们惊讶于这位大师的真实和坦诚,也为这跨越半个世纪的史诗般的程序人生所深深感动。

重点速览:

谈贝尔实验室的吸引点:贝尔实验室研究环境的独特之处在于没有“繁重的工作量”,大家都在做自己认为有趣或重要的事情,没有要求、没有产品,也没有可交付的成果,所以一切进度压力都是员工自己给自己的。

谈程序员该培养何种技能:一是学习如何写,二是学习如何说。专业的程序员应该可以熟练掌握几门语言,并且熟悉5-10种其他的语言。

谈独行侠与多人协作:如今的系统规模和环境都庞大且复杂,因此独行侠式的天才能发挥的作用是十分有限的。但许多大型系统在开始时的规模都非常小,核心贡献者也非常少。大多数编程语言都是由两三个人创建的。

谈C语言中的指针设计:空指针可以说是一个“错误”,但我认为,更应该说这是一个在当时很合理的设计选择,这种设计选择的代价极其高昂。

谈面向对象编程:面向对象编程在许多语言中得到了很好的支持,在有的语言中则完全没有支持,它仅仅是一种编程技术,适合解决某些类型的问题,但或许不是解决其他问题的正确方法。

谈现代操作系统:现代操作系统需要服务一个更加复杂的世界,所以它们相应地也会更加复杂。

谈人工智能:利用AI自动生成代码在某些情况下会有帮助,当我们对某些特定的计算任务理解得足够透彻,以至于可以自动化生成代码时,我们就已经取得了很大的进步。

谈开源:开源使我们可以在他人的工作基础上进行构建,实现共同进步,我希望开源可以继续成为世界的重要组成部分。


1、50 年程序人生


《程序员》:你曾说是理查德·汉明(Richard Hamming)启发你写了《UNIX传奇:历史与回忆》(UNIX:A History and a Memoir)这本书。那么,在你的职业生涯中,哪个人对你的影响最大呢?

Brian:我主要想提三个人。首先是迪克·汉明(Dick Hamming,汉明码发明者,“迪克”是“理查德”的非正式称呼),是他激发了我写这本书的灵感,并给我提供了各种各样的好建议,他是我的人生挚友。

其次是道格·麦克罗伊(Douglas McIlroy,著名数学家,UNIX 开发者),他是我见过的最聪明的人之一(我见过非常多的聪明人)。1967年,我在贝尔实验室第一次实习时就是在他的手下,他曾对我的博士论文的内容和写作提出了很好的优化建议,我们一起共事了近30年,他在任何领域都是我的“智多星”——编程、写作、科学、技术、数学等等。

第三个人是林申(Shen Lin)。1968年,我在贝尔实验室第二次实习期间,和林申一起研究了“图划分问题”(Graph Partitioning Problem),这后来也成为了我博士论文的基础。1969年,当我以正式员工的身份回到贝尔实验室时,我又和林申一起研究了“旅行商问题”(Travelling Salesman Problem)、以及其他组合优化的问题,甚至还一起完成了一些网络设计工具。他具备一种惊人的能力,在上手一些小例子之后,就能总结出普适的方法论。如果没有他,我是无法顺利完成论文的。

《程序员》:从实习到退休,你在贝尔实验室工作了 30 年,那里最吸引你的是什么?如今在技术领域,跳槽已然成为一件十分普遍的事情,你对此有什么看法呢?

Brian:在贝尔实验室的时候,我先是实习,然后转为全职。那是个神奇的地方,在那里,有数以千计的一流科学家和工程师在研究多个领域中有趣又有关联的各类问题。公司(AT&T,贝尔实验室的母公司)具备开放、合作的环境和长远的眼光,所以我们可以用很长的时间(甚至数年)去完成自己想要完成的任何事。因此,大家自然而然地就会在那里一直工作下去,没有理由要离开。

如今,这种环境已经不存在了,但同时工作机会却很多,尤其是对于程序员来说,所以人们在短时间内频繁地更换工作就不足为奇了。虽然这并不是我个人的工作风格,但似乎对很多人而言都是理所应当的。我倒是觉得,尽管这种工作流动性在短期内有一定的好处,但可能也会带来一些长期的负面影响,比如许多公司内部都缺乏连续性,丧失了一以贯之的企业文化和传承。


2、贝尔实验室给当今企业的启示

《程序员》:谈到企业文化(Organization Culture),这也是 UNIX 成功的一个重要原因。在这方面,你认为其他企业和实验室可以从贝尔实验室中学到什么?假设现在你带领的团队工作量很大,并且员工都分散在不同的时区,你将如何确保代码质量?

Brian:贝尔实验室研究环境的独特之处在于没有“繁重的工作量”,大家都在做自己认为有趣或重要的事情,没有要求、没有产品,也没有可交付的成果,所以一切进度压力都是员工自己给自己的。因为所有人都生活在同一个地区,因此不存在时区问题。当然,有些人习惯于传统的白天工作,而有些人则习惯在夜间工作,还有一些人的工作时间很长(比如Ken Thompson),所以他们有时会和白天的人同步,有时会和夜间的人同步。因为所有的程序员都很优秀,所以代码本身的质量也很高,而且所有的代码都在文件系统中,任何人都可以读取并修改;但唯一的要求是,如果你修改了一个程序的代码,那么你就要对这个程序负责,从而提醒大家要谨慎。

《程序员》:你曾说,贝尔实验室创造的所有伟大发明都得益于其开放的氛围和充足的资金支持,但如今的公司往往只注重短期效益。这是否意味着将越来越难以见证 UNIX 这样伟大发明的诞生?目前,公司在研发方面还有其他可行的方式吗?

Brian:我确实认为,过多地聚焦在短期目标和钱上是现今企业的一个问题。当然,企业必须要完成特定的工作并交付相应的产品,这样才能有收入维持企业的运转。但是,如果一切都以短期目标来衡量的话,就没有办法去充分地仔细考虑其他选择,或者寻找更好的行事方式以及为未来投资。然而,和很多事情一样,这是一个权衡利弊的过程,我们不难发现,许多优秀甚至伟大的产品都来自研发风格截然不同的公司。

《程序员》:你在书中提到,伟大的项目往往是由个人建立起来的,然而现在的公司往往都更强调合作和头脑风暴。你认为两者之间是否存在“矛盾”?还是说前者是只适用于“天才”的行事方式?

Brian:在UNIX的早期阶段,程序规模要小得多,所以对团队的关注度并没有那么高。同一个项目可能会由两个人共同完成,但如果三人一组的话就有点多了。工作中必然会产生合作,合作的过程是有机的,而不是由管理层刻意创造的。现在所说的头脑风暴在过去也有:人们探讨各自的想法,在黑板上写写画画,编写程序来测试想法。

如今的系统规模和环境都庞大且复杂,因此独行侠式的天才能发挥的作用是十分有限的。但许多大型系统在开始时的规模都非常小,核心贡献者也非常少。我们可以想一想编程语言及其编译器、Linux或各种主要开发工具。不难发现,我们大多数的编程语言都是由一两个或两三个人创建的。Linux也是从一个人开始发展起来的。

《程序员》:UNIX在发展过程中经历了版本分叉、标准竞争和诉讼,这些也是当今企业不得不面对的成长之痛,你对这些企业有什么建议吗?

Brian:我认为一个企业总是会很自然地想要通过创造新的、有用的系统、工具、语言和功能来吸引客户,并且用这些东西来留住自己的客户。从短期来看这没什么错,但从长远来看,我认为选择合作会更好。


3、优秀程序员所具备的能力与素质

《程序员》:作为一位“传奇程序员”,你也曾和许多同样具有传奇色彩的程序员合作过,那在你看来,一名优秀的程序员应该具备什么样的素质呢?

Brian:其实说实话,我是一个非常普通的程序员,但我有幸与一些十分杰出的程序员合作过,比如肯·汤普森(Ken Thompson,UNIX 创造者)和丹尼斯·里奇(Dennis Ritchie,C 语言创始人)。尤其是肯(Ken),他似乎具备一种发现事物的统一性和通用性的天赋,这使他的代码简单、干净且功能强大。他的工作效率高得令人难以置信,能够在短时间内写出大量优秀的代码,而且他可以把这些东西全都记在脑子里。他是我认识的最好的程序员。

《程序员》:肯(Ken)用3周的时间创建了 UNIX,道格(Doug)在几天内就提出了“管道(pipe)”的想法,是什么让你们有如此高的工作效率?

Brian:因为他们是“别人家的程序员”,我从来没有这么高效过!当然,肯(Ken)和道格(Doug)(以及其他一些人)确实是有天赋的,但我认为,他们的生产力有一部分来自于他们过去大量的工作经验,对于一些工作他们已经形成了条件反射,从而可以非常有效地创造新事物。

《程序员》:在遇到麻烦或新问题时,你的解决风格是怎样的?是如何建立自己的思维体系的呢?

Brian:这个问题很笼统。我没有什么特别的方法,但如果可能的话,我会尽可能地拖延,祈祷问题消失或自行解决。当然,这种方法也不一定总会奏效,但它确实让我的潜意识有机会来消化这个问题,这对编程是非常有帮助的。

《程序员》:对于软件工程师来说,在职业生涯的不同阶段需要培养什么样的技能或心态呢?

Brian:下面这两个技能,不仅仅是对软件工程师,对每个人而言都很重要。一是学习如何写,二是学习如何说。如果你能写好、说好,并且能有效地把技术语言传达给非技术人员的话,这将在你一生的职业生涯中发挥难以想象的价值。同时,我还认为,要对“有趣”或“值得学习”的事物保持开放的心态。不要让自己变得狭隘,要保持广泛的兴趣。法国伟大的科学家路易斯·巴斯德(Louis Pasteur)曾说过:“机会是留给有准备的人”。所以,你看的东西越多,想的东西越多,探索的东西越多,你就越有可能在某件事上变得越幸运。


4、未来操作系统猜想

《程序员》:一般来说,我们将 MULTICS 和 UNIX 的诞生看作是现代操作系统的起源。你认为操作系统发生了哪些变化?你对现在的主流操作系统,比如Windows、macOS、Android、iOS 等有什么看法?

Brian:对这个问题我其实没有什么看法。但是由于现代操作系统确实需要服务一个更加复杂的世界,所以它们相应地也会更加复杂。例如,现在的处理器通常都是多核的,所以多处理成为了操作系统的一部分,这与50年前截然不同。现在内存比以往要大得多,外设也更多。网络也逐渐凸显了其重要性。就我个人而言,因为我用的是MacBook,所以使用macOS系统,但我大部分时间只用它来运行标准的UNIX命令。我有一部Android手机,但是手机编程太不好玩了,所以我也就没怎么尝试了。

《程序员》:随着云计算、人工智能和量子计算的发展,会不会对操作系统提出新的要求和挑战?会不会出现新的操作系统概念?

Brian:因为我不是很了解量子计算,所以可能没办法给出有价值的看法。但我认为人工智能并不会改变我们对操作系统的看法。如果云计算使用起来更容易一些的话,人们可能会说它只是50、60年前出现的MULTICS和UNIX等分时操作系统的现代实现。所以我想说,这并不是一个新概念,只是一个旧概念的新版本。

《程序员》: 你曾预言,对于编程而言,语言将会更容易且更安全。就这一点而言,这特定的“语言”会是什么呢?Rust 或者是更多面向应用程序的语言,比如JavaScript、TypeScript、Dart、Swift、Julia 或其他语言?

Brian:如今的大部分编程语言都更安全、简单,这是批量的而非单一的。每种语言都有其最适合的任务类型,比如适合嵌入式系统和高效库实现的C语言,适合大型系统的C++,以及适合作为简单通用语言的Python,等等。我想,专业的程序员应该可以熟练掌握几门语言,并且熟悉5~10种其他的语言。旧的语言永不会消亡,它们中的大多数都还在继续发展,当然,有一些程序的嵌入式系统基础太大、太复杂,难以重写。但是,人们在创造新语言方面有着无穷的创造力,他们希望这些新的语言能够取代旧的语言,但这从未实现过。

《程序员》:指针(Pointer)是 C 语言的重要组成部分,程序员需要对内存进行管理,这对于初学者甚至是高级程序员都是十分困难的。ALGOL 的创建者之一东尼·霍尔(Tony Hoare)称,空指针(null-pointer)是他的一个“10亿美元的错误”,你认为它在语言设计上是一个错误吗?

Brian:在1972年前后C语言被创造出来的时候,计算机的速度比今天慢了一百万倍,内存也比今天少了一百万倍。此外,C语言的目的是取代汇编语言来编写关键的系统程序,最终取代操作系统本身。因此,这种语言必须简单且高效,它必须使程序员能够表达所有的计算,包括访问位置为0的内存。当然,大多数程序员从来不会刻意这么做,都是不小心做的(我们都做过很多次)。所以空指针可以说是一个“错误”,但我认为,更应该说这是一个在当时很合理的设计选择。只不过随着计算机的功能越来越强大,当然,也随着越来越多天赋不如丹尼斯·里奇(Dennis Ritchie)和肯·汤普森(Ken Thompson)的程序员编写C代码,最终证明,这种设计选择的代价极其高昂。

《程序员》:你曾提到过:“在计算领域中只有两个真正的问题:计算机太难使用和太难编程”。你认为人工智能(自动生成代码)的进步会让编程变得更简单吗?

Brian:现在谈论现代人工智能的发展还为时过早,但我猜想利用AI自动生成代码在某些情况下会有帮助。当我们对某些特定的计算任务理解得足够透彻,以至于可以自动化生成代码时,我们就已经取得了很大的进步,编译器就是一个很好的例子。所以我想也会有类似的情况,一个程序可以从程序中学习如何编写新的程序。但是!别问我细节。

《程序员》:你是否能预见面向对象编程(Object-Oriented Programming)未来的发展?或者说它是否已经进入了稳定停滞期?

Brian:面向对象编程只是组织计算的一种方法,但肯定不是唯一的方法。它在许多语言中得到了很好的支持,在一些语言中得到了部分支持,而在有的语言中则完全没有支持。但我并不认为它是一种独立的事物,仅仅是一种编程技术,它适合解决某些类型的问题,但或许并不是解决其他问题的正确方法。当然,当人们真的要使用它时,仍然要好好地加以利用,以避免深度且脆弱的类层次结构,这需要技巧和练习。

《程序员》:你如何看待“开源”的发展及其对世界的影响?它在未来将走向何方?在这个过程中,特别是对于中国的开发者来说,有哪些值得期待的呢?

Brian:开源是一件非常好的事情,并且对软件行业的发展至关重要(现在几乎所有东西都和开源有关)。如今我们其实已经取得了很大的进步,主要的软件系统,如操作系统、编译器和工具都可以作为高质量商品免费提供。开源使我们可以在他人的工作基础上进行构建,实现共同进步。虽然我无法准确地预测未来,但我希望开源可以继续成为世界的重要组成部分。而且,我强烈希望中国的程序员们能够为现有的项目作出贡献,并创建出更多的新项目。


5、One More Thing

《程序员》:《UNIX传奇:历史与回忆》(UNIX:A History and a Memoir)一书写于2019年,该书的中文版业已问世,你写这本书一共花了多长时间?有什么想对中国读者说的吗?

Brian:这本书的大部分内容是我在 2019 年夏天的一个长假期间在英国写的。写作的过程其实很快,因为我很了解这个主题,而且我还得到了多年来参与UNIX开发的各位朋友和同事的宝贵支持。整个写作过程都非常有趣,既可以追忆过去的美好时光,也可以和很久没接触的朋友联系。

我衷心希望中国的读者能在这本书中收获乐趣。今天的世界与UNIX早期的世界已经大不相同了,但人还是一样的。书里总结了很多经验:UNIX是如何产生的、富有创造力的人该如何合作、以及公司该如何有效地管理他们。我认为,这些经验教训同样适用于今天,也或多或少地适用于不同国家的开发者。

《程序员》:关于 UNIX 的历史,你还有什么要补充的吗?

Brian:我很幸运。UNIX早期的日子对我而言是非常美好的。贝尔实验室的环境很好,我身边有很多了不起的同事,他们在各个领域不断地创新。UNIX就是在这种独特的环境中诞生的。从这个意义上来说,我认为UNIX是独一无二、不可复制的,但在其他地方一定有人也同样幸运,可以像UNIX那样为改变世界作出贡献。我希望我的读者都是这样的幸运儿。



贝尔实验室中的有个叫 Ken Thompson 的人,他曾经为 MULTICS 这个操作系统写了个叫「Space Travel」的游戏,在 MULTICS 上经过实际运行后,他发现游戏速度很慢而且耗费昂贵 —— 每次运行会花费75美元。在贝尔实验室退出这个项目以后。他为了让这个游戏能玩,所以找来 Dennis Ritchie 为这个游戏开发一个极其简单的操作系统。


Ken & Ritchie

当时 Ken 的老婆正好回娘家度假,就把里奇拉到了家里,两个好基友夜以继日的搞,工作之外的时间基本都搞在一起,终于在 1969年的圣诞节搞出来了一个操作系统,也就是我们熟悉的 UNIX。

值得一提的是,当时他们本想在 DEC-10 上写,后来没有申请到,只好在实验室的墙角边找了一台被人遗弃的 Digital PDP-7 的迷你计算机进行他们的计划,这台计算机上连个操作系统都没有,于是他们用汇编语言仅一个月的时间就开发了一个操作系统的原型,他们的同事 Brian Kernighan 非常不喜欢这个系统,嘲笑他们说:“你写的系统好真差劲,干脆叫Unics算了。”Unics 的名字是他们对 MULTICS 的一种戏称,也是根据这个名字,里奇最后把系统的名字定为了 Unix。

于是,Unix 就在这样被游戏和玩笑创造了,当时是1969年8月。巧合的是,也就是这一年,Linux 之父 Linus Torvalds 在芬兰出生了。

UNIX 的出现一改 Multics 操作系统的大型程序的复杂性,每个单一执行目的的小程序都是简洁高效,开发时间短,稳定性却更好。它由许多小程序构成,每个小程序只能完成一个功能,任何复杂的操作都必须分解成一些基本步骤,再由小程序逐一完成。虽然看起来很低效,实际上这些小程序可以像七巧板一样自由组合,轻易就能完成意想不到的大任务。后来,在此基础上又衍生了好几代的 UNIX 系统,直至目前的 Mac OS 和 Linux。


顺手发明 C语言

作为一门伟大的编程语言,C 语言是借助 UNIX操作系统的翅膀而起飞的,UNIX 操作系统也由于 C 语言的存在而得以快速落地生根,两者相辅相成,成就了软件史上最精彩的一幕。而这一幕,离不开丹尼斯·里奇的一手操办。最初的 UNIX 系统就是用汇编语言编写的,而当时的一些应用是由叫做 B语言的解释型语言和汇编语言混合编写的,在移植的过程中遇到不少麻烦。一开始他们想尝试用 Fortran(福传,源自于“公式翻译”的缩写,是世界上第一个被正式采用并流传至今的高级编程语言。),可是失败了。后来他们用一个叫 BCPL(Basic Combined Programming Language)的语言开发,他们整合了 BCPL 形成 B 语言,后来里奇觉得 B 语言还是不能满足要求,在 UNIX 的移植方面依然不尽人意,此后又对 B语言做了改进,C语言这才正式诞生。C 语言也贯彻了 UNIX 大道至简的原则,语法简洁,结构清晰。为此里奇还自己写了本教材《C编程语言》,只有100页....


他还是黑客之父...

由于 C语言和 Unix系统两项成就,里奇成为许多编程爱好者膜拜的对象。里奇在1978年出版的《C程序设计语言》被程序员们称为「白皮书」,获得狂热拥戴。然而,由于 C语言的简洁和高效,也成为入侵他人电脑的利器之一。里奇因此被诸多电脑黑客尊为导师,虽然里奇本人并不认可这一说法。这里还有一个小故事。

在 Unix 研发成功后不久,安装了这一程序的 PDP-11 被放在贝尔实验室供大家使用。有一天,大家发现两位创始人总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这种高人云集的地方,这简直是太不能容忍的事情了。于是,若干愤懑的同事仔细分析 Unix代码,找到后门,修改后再重新编译整个 Unix程序。当所有人都以为这个世界应该从此清静了的时候,却发现他们的帐户权限还是很容易泄露。

直到很多年后,肯和里奇才道出其中的原委,原来代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里。知乎上有个问题“真正的黑客是什么样的?”,我认为在里奇面前,其他的黑客全都是弟弟,真正的黑客,是搞底层入侵,让你从根儿上防无可防...

传奇谢幕

那个年代社交网络还很不发达,再加上里奇一直没有结婚,日常的生活也比较宅,所以从他在退休之后就一直没有太多的资料可考。就连他的准确去世时间,我们都不得而知。维基百科上的说法是:2011年10月12日,里奇于新泽西州伯克利·海茨镇的家中去世,享年70岁。去世的消息由他之前的同事罗勃·派克提供,但未指明具体的去世时间和原因。

不知道传奇人物的一生是不是充满了巧合。乔布斯老爷子的去世日期是2011年10月5日,两人相差不超一个星期。但人们对里奇的思念,远不及对乔布斯的铺天盖地。原因不难理解:乔老爷子的影响力我们大部分人都能了解到,但大众对于里奇作出的贡献知之甚少。

也许你看到这,会感到一丝伤感,有人因此说他是史上最惨的图灵奖得主。但其实不必,他也许就觉得这样挺好。有些人天生不喜欢给周围的人添麻烦,他们充实的活在自己的世界。在里奇去世后的每年,计算机爱好者们都会以特有的方式纪念这位编程语言的重要奠基人。许多网友的发帖中没有片言只字,仅仅留下一个分号“;”。在C语言中,英文分号标志着一行指令语句的结束,网友们以此来悼念“C语言之父”,美国著名计算机专家丹尼斯·里奇(Dennis Ritchie)所引领的时代悄然远去。



版权声明:本文总结自CSDN的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。