在工具开发与教学之间
布赖恩·柯尼汉(Brian Kernighan)是计算机科学家、软件工具开发者与技术作者,长期参与贝尔实验室的Unix研究环境。他1969年获普林斯顿大学电气工程博士学位,在贝尔实验室工作约三十年后,于2000年回到普林斯顿任教。他的主要贡献包括面向文本处理的语言工具,以及把编程知识写成能够学习和使用的说明。
在贝尔实验室,他与Unix开发群体共事,并曾领导计算结构研究部门。理解他的角色,需要区分系统创制、语言设计与传播工作:丹尼斯·里奇创造了C语言,柯尼汉则与里奇合著《C程序设计语言》。教材的重要性不能反过来当作柯尼汉独创C的证据。
参考:[1]
AWK把重复的输入处理变成默认步骤
柯尼汉与阿尔弗雷德·阿霍、彼得·温伯格共同开发AWK。三人1979年的论文讨论一种常见困境:用户只想挑出几行资料、交换字段顺序或求一列数值的平均数,却不得不在通用语言里反复编写读取、拆分和初始化代码。AWK把这些例行工作移入语言的默认执行方式。
AWK程序由“模式与动作”规则组成。系统逐条读取输入记录,依次检查模式,匹配时执行相应动作。默认情况下,一行是一条记录,空白分隔字段,$1指第一字段,$0指整条记录。若只写模式而省略动作,匹配记录会被输出;省略模式时,动作应用于每条记录。
例如,筛选第一字段满足条件的行,只需表达条件及输出内容,不必重写文件遍历循环。开始和结束规则还能分别承担初始化与汇总。这不是自动理解任意文本,记录分隔、字段含义和处理规则仍须由使用者明确;它把经常相同的控制步骤固定下来,让短程序集中描述数据选择和转换。
参考:[2]
用精确说明降低使用门槛
1978年出版的《C程序设计语言》常以两位作者姓氏首字母简称“K&R”。它将语言介绍与可运行的小程序结合,帮助读者由简单输入输出进入完整程序,而不是仅列语法条款。“Hello World”因这类教学方式成为广为熟悉的入门例子。这里的成果是组织和传授技术知识,与编译器本身或语言标准各有边界。
柯尼汉后来与艾伦·多诺万合作撰写Go语言教材。普林斯顿2016年的报道记录了他们在2014年开始、延续约十四个月的合作,说明他仍把清晰解释新工具视为工作的一部分。他也为非专业读者写作,例如2011年的《D is for Digital》,把计算机、网络与隐私等问题联系起来。
从AWK到教材,这些工作共享一个具体关注点:让使用者少被重复的程序结构或冗长说明阻挡,同时保留足以正确使用工具的细节。其成效依赖语言实现、合作者、例子与读者实践,不能归结为一本书或一个人取代整个Unix开发群体。