80岁还在写代码!Hello World发明人、UNIX命名者项目登上GitHub热榜

作者 | 新程序员编辑部

出品 | CSDN(ID:CSDNnews)

年龄从来不是界限,除非自己拿过来为难自己。

今年 80 岁的 UNIX 核心开发者之一、UNIX 命名者 Brian W.Kernighan,在夏季很多人都在开启学术休假之际,找到了一些空闲时间。

在这个时间段,他闪现了 1977 年时与好友一起开发的文本处理工具、Linux 及 UNIX 环境中最强大的数据处理引擎 AWK 在 GitHub 的仓库上(https://github.com/onetrueawk/awk),潇洒地写了数百行代码,提交了最新的 pull request,留言告诉开发者这些代码可以让 AWK 实现 Unicode 的支持。

然后事了拂衣去,深藏功与名。

直至近日国外的一个专门聚焦于计算机领域的 Computerphile 频道在采访 Brian W.Kernighan 问及他最近主要在干什么时,这位普林斯顿大学计算机科学系教授才低调地分享了近况。

在今年 5 月,他给一位老朋友发了一封邮件,提及自己正在进行在 AWK 工具支持 Unicode 的一些尝试,Kernighan 说道,“我已经做了相当多的测试,但显然还需要更多的测试......一旦我找到了方法,我将尝试提交一个 pull request。我希望我能更了解 Git,但尽管有你的帮助,我仍然没有正确的理解,所以这可能还需要一段时间。”

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

AWK 是一种数据驱动的脚本语言,它与 grep、sed 一起被称为 Linux “三剑客”,它也是 UNIX 管道功能和系统间互操作性的关键。在功能上,AWK 能为开发者带来极大的便利,如通过创建非常简短的程序来读取输入的文件、为数据排序、处理数据、对输入进行计算、生成报表等。

正如上文提及的,AWK 诞生于 1970 年代的贝尔实验室,其名称源自研发它的三位计算机科学家,分别是 Alfred Aho、Peter Weinberger、Brian W.Kernighan,其中 K 指的就是 Brian W.Kernighan。

"AWK 只适用于 ASCII,或者 8 位输入,但它根本没有真正处理 Unicode,这一直是一个尴尬的问题," Kernighan 在 Computerphile 的采访中无奈的说道,“直到几个月前,我花了一些时间来处理一个令人难以置信的老程序。我把这个问题又翻了出来,并解决了它,如今它可以处理 UTF-8 的输入和输出,这样你就可以有正则表达式。"

这一波连续的操作,惊呆了所有的开发者,不仅让 AWK 这款在更新上沉寂许久的工具再度出现在大众视野,登上 GitHub Trending 的第 8 位,同样 Brian W.Kernighan 对技术追求的精神更让人钦佩。

对于 Brian W.Kernighan 本人,被外人所熟知的是,他还是开发者入门必须敲下的 Hello World 示例代码的发明者,连 UNIX 的名字也是他取的。在《新程序员 001》中,我们与 Brian W. Kernighan 畅谈技术与人生,整个过程中,我们惊讶于这位大师的真实和坦诚,也为这跨越半个世纪的史诗般的程序人生所深深感动。

以下是 CSDN 的《新程序员》与布莱恩·克尼汉(Brian W. Kernighan)教授访谈记录

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,贝尔实验室的母公司)具备开放、合作的环境和长远的眼光,所以我们可以用很长的时间(甚至数年)去完成自己想要完成的任何事。因此,大家自然而然地就会在那里一直工作下去,没有理由要离开。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

未来操作系统猜想

新程序员》:一般来说,我们将 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)称,空指针(-pointer)是他的一个“10亿美元的错误”,你认为它在语言设计上是一个错误吗?

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

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

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

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

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

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

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

One More Thing

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

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

原文地址:https://www.toutiao.com/article/7136142322768544290/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


所以很多人都会选择将这些生活琐事来交给智能化产品,在众多产品中,扫拖机器人所给我们带来的便利性最强,扫地、拖地全都一气呵成,不需要人为过多干预,不过目前大多数扫拖机器人对于双手解放得不彻底。而石头作为
“昨天的经历都将成为明天的力量。” 将绝大部分精力都奉献给璃月港的刻晴,可以说是《原神》中的高人气角色了,虽然是常驻角色,并且对于普通玩家来说……刻师傅别刮了……不过作为开服就存在的角色,还有独特的剑法
最近,全球知名的通信产业盛会MWC 2024(2024世界移动通信大会)正式召开,其中,联发科以“连接AI宇宙”(Connecting the AI-verse)为主题,为大众展示出一系列在AI和移动通信技术等领域的最新突破,吸引了大量行业
今年上半年有很多值得关注的机型,其中华为最新的影像旗舰华为P70 Art也自然受到了业界不少的关注目光,目前关于这款机型的轮廓图已经在网上曝光。
目前,2024世界移动通信大会(MWC)正在西班牙巴塞罗那举行,值得一提的是,此次大会参展中国厂商非常多,包括华为、中兴、小米、荣耀等等多家厂商均在其列。
就在去年,真我推出了11 Pro+,用一个2亿像素传感器和zoom变焦功能,开启了中端手机影像的长焦大战,而后友商才姗姗来迟的跟进了2亿像素传感器。
【手机之家新闻】一年一度的MWC已经于当地时间2月26日在巴塞罗那正式开展,在本次MWC2024上全球各大厂商齐聚一堂,展出自家最新的技术与产品,其中中兴就参展本次MWC2024,并且展出了诸多面向企业端的产品,而旗下的
近日,联发科在MWC 2024(2024 世界移动通信大会)上展出了一系列令人瞩目的AI和移动通信技术突破,以“连接AI宇宙”(Connecting the AI-verse)的展厅吸引了无数业界精英和媒体的目光。特别是其现场的生成式AI技术
虽然目前国内已经有不少厂商入局折叠屏产品,但是努比亚却迟迟没有入局。不过在近日举办的MWC 2024展会上,努比亚发布了自家首款折叠屏手机——努比亚Flip,预计国内很快也会上市。
MWC 2024正在西班牙巴塞罗那举办,和往年一样,荣耀这次依旧携众多新产品、新技术参会。荣耀Magic6 Pro、荣耀Magic V2 RSR保时捷设计的机型在海外正式发布,并且还展示了魔法大模型、任意门等诸多新技术。
MWC 2024正在西班牙巴塞罗那如火如荼地举行,其中小米也参加了今年的大会,在会上发布了在国内大受欢迎的小尺寸旗舰——小米14。值得一提的是,高通公司CEO安蒙甚至亲临发布会现场为这款机型助阵。
《原神》是一直以来在机圈深受欢迎的游戏,在充满幻想的提瓦特大陆上,你可以邂逅不少性格迥异、能力独特的伙伴。而一加Ace系列一直就拥有非常强烈的电竞属性,也是畅玩《原神》的热门机型,而在本月,一加Ace 3将推
有不少网友发现,今年新机的发布时间相对于往年大幅提前,很多厂商在春节之前密集发布了自己最新的中高端机型,给人一种年后没什么新机可发了的感觉。不过魅族全新的大杯机型——魅族21 PRO非常值得期待,魅族科技也
2022年7月,小米12S Ultra正式发布,这款产品率先将1英寸大底主摄引入到移动影像领域,同时凭借鲜明的徕卡影调给人留下深刻的印象,同时这款产品也被视为了影像旗舰地位的机型。如果从那时算起,到现在差不多已经快过
随着智能手机的日益普及和智能化进程的加速,智能穿戴设备成为了人们关注的焦点。各大智能手机厂商纷纷进军智能穿戴市场,试图在这一新兴领域抢占先机。
早在去年秋天,HyperOS操作系统发布的时候,小米便勾勒出了“人车家全生态”的美好蓝图,而在这其中,小米的多终端统一战略是核心,目前已经有不少小米产品预装或者接受到了HyperOS操作系统的推送,在过去几个月的时
今年雷军将把更多的精力放在小米汽车上,所以接下来的手机业务将由刚刚兼任小米品牌总经理卢伟冰接管。同时雷军也在微博上表示小米2024年开年旗舰——小米14 Ultra即将在近期发布,并且将有卢伟冰进行讲解。另外,卢
新的一年有龙则灵,有愿必达。自1月19日起,荣耀加码“新年荣耀,一起成龙”年货节,在全国荣耀线下门店上线了“新年许愿处”、“龙运当头”等趣味活动,吸引大批消费者到店打卡许愿,戴龙头迎好运。与此同时,为了回
小米在官网微博中已经透露了关于小米14 Ultra信息,所以新机上市应该不会太晚。根据德国莱茵的官方消息,目前小米14 Ultra(型号为24030PN60G)获得了莱茵无频闪认证,表明这款手机可以有效减轻屏幕给用户带来的视觉疲
2月22日,上海广播电视台与华为举办鸿蒙合作签约仪式,宣布其官方客户端看看新闻APP将基于HarmonyOS NEXT鸿蒙星河版启动鸿蒙原生应用开发,为用户提供更加极致的新闻资讯服务体验。此次合作标志着上海广播电视台成为全国