80岁还嗖嗖改代码的Unix命名人 他说解决问题全靠拖( 二 )


Unix命名人
我们现在的大部分服务器、手机系统和物联网系统的底层基本都是基于Unix 。
而三大系统之一的Linux也是一种类Unix系统 , 可以说 , Unix是现代操作系统的源头之一 。
80岁还嗖嗖改代码的Unix命名人 他说解决问题全靠拖
文章图片
说起来比较意外 , 这么一个重要的操作系统 , 其初代版本被后来的图灵奖得主KenThompson仅花3周的时间就搞定了 。
当时的Unix还叫UNICS(UniplexedInformationandComputingSystem) , 后来被柯林汉改成了现在的名字 。
Unix中有一个核心工具 , 叫做AWK , 柯林汉就是其发明者之一(名称中的“K”正是代表他) 。
AWK作为一种文本处理语言 , 只做过滤和转换文本行这一件事 , 却成为Unix/Linux平台上现有功能最强大的数据处理引擎之一 。
在Linux系统中 , 它和grep、sed命令并称为“三剑客” , 并占据“老大”席位 , 掌握了它 , 处理日常操作可以6到飞起 。
如今 , AWK已经分化出三个版本 , 依然受到人们的欢迎 , 诞生45年仍未“退休” 。
除了AWK , 柯林汉还发明了AMPL , 一种描述并求解大规模复杂数学问题的建模语言 , 支持世界上大部分的求解器 。
还有编译器Ratfor、文档编制预处理器Pic、Grap和数学排版语言Eqn等这些重要研究成果背后都有他的身影 。
除了写代码 , 柯林汉还很爱写书 , 且诞生了不少经典之作 。
比如你想了解Unix的历史 , 就可以看《Unix传奇》 , 作为参与者和见证人之一 , 他写的这本书可以让没有足够专业技术背景的人也能欣赏Unix的思想 。
80岁还嗖嗖改代码的Unix命名人 他说解决问题全靠拖
文章图片
《Unix传奇》
而文章开头所说的“HelloWorld”范式 , 则是出自于他与C语言之父丹尼斯·里奇(DennisRitchie)合写的开山之作《C程序设计语言》 。
再比如柯林汉的第一本著作《TheElementsofProgrammingStyle》(《编程格调》) , 则留下了一个以他名字命名的定律——柯林汉定律 , 即:
调试一段代码的难度是编写它们的两倍 。 按照这个定义 , 如果你的代码写得非常巧妙 , 那你可能没有足够的能力来调试它 。
(相比于复杂代码 , 简单的代码更可取 。 因为调试复杂代码的过程中 , 任何问题都会十分棘手 , 甚至无法解决 。 )
解决问题靠拖延?
那么 , 柯林汉本身是个什么性格的人呢?
2021年他接受《程序员》采访时 , 曾被问了这么一个问题:
肯(Ken)用3周创造了Unix , 道格(Doug)在几天内就提出了“管道(pipe)”的想法 , 你们工作效率这么高 , 有什么诀窍吗?
(以上两人都是他在贝尔实验室的同事)
对此 , 柯林汉连连摆手:
他们是“别人家的程序员” , 我可从没这么高效过!
老爷子说了 , 遇到新问题 , 他的解决方案通常简单粗暴 , 那就是尽可能地拖延 , 以及祈祷问题消失 , 或者祈祷问题自己解决自己 。
80岁还嗖嗖改代码的Unix命名人 他说解决问题全靠拖
文章图片
这个玄学办法本身是不能解决问题的 , 但这样做 , 柯林汉有足够时间消化问题 , 然后想出对策 。
而且 , 他其实会选择直接动手搞定问题 。
今年1月1日 , 柯林汉刚好过80岁生日 。
上个月 , 油管频道Computerphile对他进行了采访 , 大伙儿才知道 , 老爷子还在改代码!
柯林汉说 , 没有任何一种计算机语言或工具是万能的 , AWK也不例外 。
此前 , AWK只适用于ASCII或8位输入 , 不能处理Unicode(统一码) 。