80岁了还在改代码!他是Unix的名字,他说解决问题靠的是拖延。

2024-10-16 16:55:50 | 作者: 匿名

今天,“Linux三剑客”中的一个非常古老的工具突然出现在GitHub的热门榜上:

是的,你没听错,还有人80岁了还在改代码!

这位大神就是加拿大计算机科学家—— Brian Kernighan。

与Java之父、Python之父等齐名的比尔·盖茨,他创造的“Hello World”范式让每一个学习编程的学生都倒吸一口凉气:

无论你学习什么语言,第一步都是学会输出它。

printf(“Hello World!\n”);cout “Hello World!\n”;print “Hello World!”……

如今老人头发花白,依然活跃在“前线”——

今年5月,老哥向AWK的GitHub仓库提交了新的pull request,为AWK添加了一直无法做到的Unicode支持。

对此,网友的态度是这样的:

是什么让这位老板常年热衷于编程呢?

免试进入贝尔实验室

故事还得从科林厄姆的大学时代说起。

Collingham 1942 年出生于加拿大,本科就读于多伦多大学工程物理专业。

他形容对于那些不知道自己想学什么的人来说,这是一个“大杂烩”专业,但幸运的是,他在大一的时候就对编程产生了兴趣,并学会了Fortran 语言。

当时,计算机的发展还处于起步阶段。直到大三,他才看到了学校唯一的晶体管计算机:IBM 7094。

由于它太贵了(当时价值300万美元),学生们没有机会接触到它。

这说明当时工具很匮乏,所以学习编程的科林汉姆只是看了丹尼尔·麦克拉肯的名著,获得了“相当多”的理论知识,但他却从未真正写过一行代码。

大一暑假期间,不知道他是怎么找到石油公司实习的。他的任务是使用COBOL 语言为炼油厂开发优化软件。

由于他对语言不熟悉,也没有编程经验,最终没能写出像样的程序。

尽管遭遇了一些小挫折,但他对编程的热情并没有减退,他回到学校继续他的研究。

大四毕业后,科林汉姆决定继续学业,并收到了麻省理工学院和普林斯顿大学的录取通知书。

由于麻省理工学院完成博士学位需要7年时间,并且需要每周30小时的研究助理工作,而普林斯顿大学只需要3年时间,并提供全额奖学金。另外,科林厄姆的朋友都在普林斯顿,所以他没有犹豫。我选择了后者。

在普林斯顿大学,科林汉姆主修电气工程,因为当时没有专门的计算机系。

这根本没有阻止他前进的脚步。

在攻读博士学位期间,他首先获得了麻省理工学院的实习机会,并有幸在后来的图灵奖获得者Fernando Corbat 手下工作,为一个名为Multics 的分时操作系统项目编写代码。

第二年夏天,他在贝尔实验室实习,在那里编写汇编语言。

为了方便Fortran程序中的列表处理,他还编写了一套函数库。他形容这份工作“非常愉快”。

转眼间,博士毕业后,科林厄姆直接留校任教,无需接受任何采访,也无需介绍研究成果,就成为了贝尔实验室的正式成员,足以见得他的优秀。

而他与Unix的缘分就从这里开始了。

Unix命名人

80岁了还在改代码!他是Unix的名字,他说解决问题靠的是拖延。

我们现在的大部分服务器、手机系统、物联网系统基本上都是基于Unix的。

Linux作为三大系统之一,也是类Unix系统。可以说,Unix是现代操作系统的源头之一。

令人相当惊讶的是,如此重要的操作系统的第一个版本是由后来的图灵奖获得者Ken Thompson 仅用了3 周就完成的。

当时,Unix仍被称为UNICS(统一信息和计算系统),但后来被Collingham改为现在的名称。

Unix中有一个核心工具叫AWK,Collingham是它的发明者之一(名字中的“K”代表他)。

作为一种文本处理语言,AWK 只做一件事:过滤和转换文本行,但它已成为Unix/Linux 平台上最强大的数据处理引擎之一。

在Linux系统中,它与grep、sed命令并称“三剑客”,占据“老大”席位。如果掌握了,日常6点到6点的操作都能应付自如。

时至今日,AWK已分为三个版本,仍然深受人们的喜爱。它诞生45年后仍未“退休”。

除了AWK 之外,Collingham 还发明了AMPL,一种用于描述和解决大规模复杂数学问题的建模语言,支持世界上大多数求解器。

他还是编译器Ratfor、文档预处理器Pic、Grap 和数学排版语言Eqn 等重要研究成果的幕后推手。

除了写代码之外,科林厄姆还热爱写书,并创作了许多经典著作。

例如,如果你想了解Unix的历史,你可以读《Unix传奇》。作为参与者和见证者之一,他写的这本书可以让没有足够专业技术背景的人领略Unix的思想。

文章开头提到的“Hello World”范式来自于他与C语言之父丹尼斯·里奇(Dennis Ritchie)共同编写的开创性著作《C程序设计语言》。

又如科林厄姆的第一本书《The Elements of Programming Style》(《编程格调》),留下了一条以他的名字命名的定律,——科林厄姆定律,即:

调试一段代码的难度是编写它的两倍。根据这个定义,如果你的代码写得非常巧妙,你可能没有足够的能力来调试它。

(简单的代码比复杂的代码更可取,因为在调试复杂代码的过程中,任何问题都会非常困难甚至无法解决。)

解决问题靠拖延?

那么,科林厄姆本人是一个什么样的人物呢?

2021年他接受《程序员》采访时,被问到这个问题:

Ken 在3 周内创建了Unix,Doug 在几天内提出了“管道”的想法。您有什么秘诀可以让您的工作如此高效吗?

(以上两位是他在贝尔实验室的同事)

对此,科林厄姆连连摆手:

他们是“别人的程序员”而我从来没有这么高效过!

老人说,遇到新问题时,他的解决办法通常很简单粗暴,就是尽量拖延,祈祷问题消失,或者问题自己解决。

这种形而上的方法本身并不能解决问题,但这样做,让科林汉姆有足够的时间来消化问题,然后拿出对策。

而且,他居然会选择直接解决问题。

今年1月1日,科林汉姆刚刚庆祝了自己的80岁生日。

上个月,YouTube频道Computerphile对他进行了采访,大家了解到老爷子还在改代码!

Collingham 表示,没有一种计算机语言或工具是完美的,AWK 也不例外。

以前,AWK 仅适用于ASCII 或8 位输入,无法处理Unicode。

80岁了还在改代码!他是Unix的名字,他说解决问题靠的是拖延。

几个月前,Collingham 花了一些时间研究AWK——,他将其描述为“一个非常古老的程序”。现在AWK 可以处理UTF-8 输入和输出。

现在,用户已经可以使用正则表达式来提取日语字符等。

Collingham 在视频中还提到,他修补了一些“快速而肮脏”的东西,以便AWK 可以处理CSV 文件。

整个采访过程中,老人一直健谈,精神状态良好。

话虽如此,他这么有干劲,他还有什么理由要改变几十年前的“古手续”呢?

科林厄姆的回答是这样的:

如今的计算环境与三十、四十年前有很大不同,内存量也得到了极大的扩展。 “这将改变你对AWK 的看法,尤其是AWK 无法运行的部分。”

所以,老爷子一直在后台偷偷把玩新版本的AWK,目的是尽可能的扩展它,让AWK更容易练习和使用。

这实际上是科林汉姆一贯的行为准则。他之前在播客CoRecursive 上表示:

如果你做的事情可以帮助自己并改善他人的工作,为什么不做呢?

有趣的是,没有万能的工具或万能的大师。老头自己也承认,他的bug是没有完全理解如何使用Git。

所以他只能通过电子邮件将更改发送给当前的维护者。

图片来源:Colin Han的邮件

网友:Hacker永不退休

80岁了,还需要修改几十年前写的代码。这位程序员成为最优秀程序员的故事再次引起了网友的关注。

自推出以来,AWK 一直广受欢迎。看到今天AWK仍然能够得到改进,变得更加强大,很多人都对老人对编码的热情表示敬佩。

有网友表达了对老人的感谢。

其他人则觉得继续为改善程序员编写代码的环境做出贡献是非常鼓舞人心的。

当然,耍花招的人也是少不了的。

黑客永远不会退休!

One More Thing

最后,让我们回到“Hello, world”。

“万物之始”这句话,其实最早出现在韩科林1974年写的《Programming in C: A Tutorial》中,后来被共同写进那部经典著作中。

有趣的是,科林汉姆说他强迫丹尼斯写了这本书。

至于为什么选择用“Hello, world”而不是其他什么,科林厄姆自己也记不清了。

在接受《福布斯》杂志采访时,他依稀回忆道:

也许是因为我看了一部动画片,里面有一个鸡蛋和一只小鸡。小鸡说:你好,世界!

参考链接:[1]https://www.youtube.com/watch?v=GNyQxXw_oMQ[2]https://arstechnica.com/gadgets/2022/08/unix-legend-who-owes-us-nothing-keeps-fixing-foundational-awk-代码/?comments=1[3]https://www.theregister.com/2022/08/23/universal_unix_tool_awk_gets/[4]https://www.cs.princeton.edu/~bwk/[5]https://corecursive.com/brian-kernighan-unix- Bell-labs1/[6]https://baijiahao.baidu.com/s?id=1696979082867013424wfr=spiderfor=pc[7]https://github.com/onetrueawk/awk/commit/9ebe940cf3c652b0e373634d2aa4a00b8395b636

- 超过-

用户评论

肆忌

哇,80岁还在改代码,真的是个传奇人物啊!Unix的名字,这个背景就够震撼了。

    有13位网友表示赞同!

有阳光还感觉冷

佩服!这世界真是无奇不有,解决问题靠拖延,听起来有点意思,我得看看他到底是怎么做到的。

    有12位网友表示赞同!

羁绊你

这标题就够吸引人的,80岁还在编程,说明他对技术的热爱真是超越年龄了。

    有14位网友表示赞同!

喜欢梅西

拖延也能解决问题?这得是多大的人格魅力啊,我得学习一下。

    有15位网友表示赞同!

人心叵测i

Unix的名字,这得是多大的贡献啊,80岁还在改代码,这精神得给我点个赞!

    有6位网友表示赞同!

£烟消云散

80岁了还在改代码,这得是多热爱自己的事业啊,我也要向他学习。

    有19位网友表示赞同!

顶个蘑菇闯天下i

拖延竟然能解决问题,这得是多聪明的思维方式,我得看看他到底是怎么做到的。

    有20位网友表示赞同!

旧爱剩女

这标题太有吸引力了,80岁还在编程,这个年龄还能保持这样的热情,真是让人敬佩。

    有16位网友表示赞同!

见朕骑妓的时刻

拖延?这得是多大的心理素质啊,他一定能把问题解决得很好。

    有6位网友表示赞同!

青瓷清茶倾城歌

80岁还在编程,这得是多丰富的经验积累,我得向他请教请教。

    有14位网友表示赞同!

拥抱

解决问题靠拖延,这听起来有点反直觉,我得好好研究研究。

    有14位网友表示赞同!

風景綫つ

Unix的名字,这个成就已经够让人震撼了,80岁还在改代码,这得是多高深的技能。

    有13位网友表示赞同!

゛指尖的阳光丶

拖延不是坏事,关键是要找到解决问题的方法,这得是多大的智慧啊。

    有17位网友表示赞同!

一纸愁肠。

80岁还在编程,这得是多大的毅力啊,我得向他学习这种精神。

    有5位网友表示赞同!

如梦初醒

解决问题靠拖延,这得是多独特的思维方式,我得向他学习。

    有6位网友表示赞同!

寒山远黛

Unix的名字,这个成就已经足够让人敬佩了,80岁还在改代码,这得是多高的技术水平。

    有15位网友表示赞同!

不离我

拖延也能解决问题?这得是多大的心理承受能力,我得向他学习。

    有16位网友表示赞同!

窒息

80岁还在编程,这得是多丰富的经验,我得向他请教一下。

    有7位网友表示赞同!