
80岁改代码,不是传说,他还在写。
前两天刷GitHub的时候,看到一个叫AWK的项目上了热榜。这工具我听学校老师提过,说是几十年前Unix里用的老古董。没想到现在还能火,更没想到是因为作者——那个写了“Hello, World”的人,今年80岁了,还在改代码。
这事挺让人愣一下的。我们这代人20出头就想摸鱼躺平,人家80岁还在动手解决问题。名字叫布莱恩·柯林汉,加拿大人,贝尔实验室出来的。不是那种从小就拿奖的天才,大学时候连电脑都没摸过几次。
他第一次见真机是大三,在多伦多大学,全校就一台IBM 7094。那时候学编程全靠看书,Fortran语法背下来,也没机会跑一遍。暑假去实习,用COBOL写了个系统结果失败了,钱没赚到,但他还挺乐呵,觉得写代码这事有意思。
后来考上了普林斯顿读博,本来MIT也录了他,但学费贵时间长,就选了奖学金多的那个。读书期间蹭到了MIT和贝尔实验室的实习机会。这一蹭,直接进了计算机历史的关键位置。
{jz:field.toptypename/}
他在贝尔实验室没经过面试,博士一毕业就被留下来了。那会儿Ken Thompson在搞一个叫UNICS的东西,他觉得名字太啰嗦,建议改成Unix,大家笑了,就用了。不是他写的系统核心,但他写文档、搭工具、帮别人理解,很多人因为他才学会用这些新东西。
最出名的一行代码是“Hello, World”。其实最早是他自己写教程时随手写的例子,灵感来自动画片里一只小鸡说“hello”。后来和丹尼斯·里奇合写《C程序设计语言》,这行字就印进书里了。现在全世界学编程的人,第一个输出都是这句话。
他还参与做了AWK。名字是三个人姓氏首字母,Aho、Weinberger、Kernighan。这工具专门处理文本,比如从一堆日志里抓数据。设计思路很简单:只做一件事,做好它。当年在命令行里配合grep和sed用,效率特别高。后来成了Linux三剑客之一。
今年夏天,他往AWK仓库提了个补丁,支持UTF-8了。这意味着现在能用它处理中文、日文这些非英文字符。他自己说是因为最近要分析带日语的CSV文件,原来的AWK跑不了,干脆自己加上去。补丁不是直接推的,是通过邮件发给维护组,因为他还不太会用Git操作。

有人问他,别人都追求效率,Ken三周写出Unix,你有什么秘诀?他说我从不高效,我的方法就是拖着,祈祷问题自己消失。听起来像开玩笑,其实不是。他说很多问题搁几天再看,解法自然就出来了。不是不解决,而是先不想,让脑子有时间消化。
现在很多人写代码拼快,一天三迭代,上线再修BUG。可这样堆下来,系统越来越重,没人敢动。柯林汉这种“慢”反而省了后期大改的成本。他不迷信新技术,也不排斥老工具,只要还能用,改一改就行。
他也不是啥都懂。公开说过自己Git用得不好,版本管理靠别人帮忙。但他知道问题在哪,能写出正确的代码逻辑。工具是为人服务的,不需要每个人都变成全栈高手。
AWK这次更新后,不少人在论坛讨论。有人说这工具早该淘汰了,现在有Python和Pandas,干嘛还用命令行处理数据?但也有很多运维和老工程师说,小任务上AWK还是快,一行命令搞定,不用启动虚拟环境。

柯林汉现在还教书,在普林斯顿带学生。课讲得实在,不吹概念。写过一本《编程的风格》,里面说:调试比写代码难两倍,所以写的时候尽量简单点。这话听起来普通,但做起来的人不多。
80岁了,头发全白,打字速度没年轻人快,但他还在用自己的方式做事。发现问题,想清楚,动手改。不是为了出名,也不是为了奖金,就是觉得这个工具还能更好用一点。
他更新AWK那天,GitHub记录显示提交时间是凌晨三点。没人知道他是不是睡不着,或者白天被别的事占了时间。但能确定的是,那一刻他还在写代码。
补丁说明写得很短:“Add basic UTF-8 support for Japanese text.” 加了一点功能,支持日文。没有豪言壮语,就像他当年写下Hello World那样,轻描淡写。

有些人到了这年纪,故事就变成别人嘴里讲的传奇。他倒好,自己还在往故事里加新段落。
键盘还是那把老式机械键盘,声音清脆。他敲完提交,关了终端,可能顺手泡了杯茶。夜晚安静,楼外树影晃动,像五十多年前他在实验室第一次看见电脑亮屏时的样子。
他没觉得自己在坚持什么,也没想着要影响谁。只是习惯如此——有问题,就改。改不动了,也就停了。但现在还能改,那就继续。

备案号: