布莱恩·W.克尼汉(Brian W. Kernighan)—— Unix 和 C 语言背后的巨人
布莱恩·W.克尼汉
布莱恩·W.克尼汉在 1942 年出生在加拿大多伦多,他在普林斯顿大学取得了电气工程的博士学位,2000 年之后取得普林斯顿大学计算机科学的教授教职。
他与 Shen Lin 合作共同完成了两个知名的 NP-complete 优化问题的解决方案:图划分问题和旅行推销员问题。
旅行推销员问题(Travelling Salesman Problem, 又称为旅行商问题、货郎担问题、TSP 问题)是一个多局部最优的最优化问题:有 n 个城市,一个推销员要从其中某一个城市出发,唯一走遍所有的城市,再回到他出发的城市,求最短的路线。
布莱恩·W.克尼汉除了和丹尼斯・里奇撰写了《C 程序设计语言》之外,还撰写了《UNIX 编程环境》,这本书对 UNIX 操作系统的编程环境做了详细而深入的讨论,内容包括 UNIX 的文件系统、Shell、过滤程序、I/O 编程、系统调用等,并对 UNIX 中的程序开发方法做了有针对性的指导。
布莱恩·W.克尼汉在普林斯顿大学为非计算机专业学生开设了一门介绍计算机技术基础的课程,根据课程讲义编写《D is for digital》—— 中文译名《世界是数字的》。书中解释了当今计算和通信领域的工作方式,包括硬件、软件、因特网等,讨论了新技术带来的社会、政治和法律问题。
Hello World
1972 年,在贝尔实验室成员布莱恩·W.克尼汉撰写的内部技术文件《A Tutorial Introduction to the Language B》中首次提到了 “Hello World” 这一字符串。当时,他使用 B 语言撰写了一个用于演示外部变量的示例程序:
main( ) {
extern a, b, c;
putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';
这个程序将在终端打印出 “hello, world”,然后附上一个换行符。之所以这一短语被拆分成多个变量记录,是因为 B 语言中的每个字符常量只能容纳 4 个 ASCII 字符。
1974 年,时值 C 语言取代 B 语言,在贝尔实验室的又一内部备忘录《Programming in C: A Tutorial》中,布莱恩·W.克尼汉用 C 语言再次编写了一个 Hello World 程序作为教学示例。这一程序在他和丹尼斯・里奇于 1978 年出版的《C 程序设计语言》中得到继承:
main( ) {
printf("hello, world\n");
}
由布莱恩·W.克尼汉撰写的“Hello, world”程序 (1978年)
在上例中,main () 函数定义了程序开始执行的位置。其主体由一条语句组成,即对 printf (print formatted,打印格式化)函数的调用,将使程序输出以参数传递给它的任何内容,在本例中是字符串 hello, world。
自此,Hello World 成为了电脑程序员学习新的编程语言的传统。但是,也有些人认为 hello, world 的字符串早于 1966 年的 BCPL 语言出现的时候已经出现。虽然相关的字词确实在发明者记录的文件出现,但是可以肯定的是,Hello World 在当时确实没有流行。因此,人们公认为布莱恩·W.克尼汉是令该字符串走进公众目光的人。
K&R
起初,C 语言没有官方标准。1978 年贝尔实验室正式发表了 C 语言。布莱恩·W.克尼汉(Brian Kernighan)和丹尼斯・里奇(Dennis Ritchie)出版了《The C Programming Language》。这本书被 C 语言开发者们称为 K&R,很多年来被当作 C 语言的非正式的标准说明。人们称这个版本的 C 语言为 K&R C。
至此,布莱恩·W.克尼汉(Brian Kernighan)和丹尼斯・里奇(Dennis Ritchie)两人简称 K&R。
via : Hello World https://zh.wikipedia.org/wiki/Hello_World
纵观编程历史,“Hello World” 在向初学者介绍编码世界方面发挥了至关重要的作用。
虽然 “Hello World” 看似微不足道,但它不仅是一个初学者进入编程世界第一步的简单程序,也是承载着编码无限可能性之旅的开始。
扩展阅读
-
“Hello, World”的历史 —— The History of ‘Hello, World’ - HackerRank Blog
https://www.hackerrank.com/blog/the-history-of-hello-world/
-
300 种编程语言的 Hello World 程序列表 —— List of Hello World Programs in 300 Programming Languages – MYCPLUS
https://www.mycplus.com/featured-articles/hello-world-programs-in-300-programming-languages/