注:本文为 “” 相关文章合辑。
机翻,未校。
布莱恩·W.克尼汉(Brian W. Kernighan)—— Unix 和 C 语言背后的巨人
布莱恩·W.克尼汉在 1942 年出生在加拿大多伦多,他在普林斯顿大学取得了电气工程的博士学位,2000 年之后取得普林斯顿大学计算机科学的教授教职。
1973 年,他与 Shen Lin 合作共同完成了两个知名的 NP-complete 优化问题的解决方案:图划分问题和旅行推销员问题。
Graph partition 图形分区
在数学中,图分区是通过将图的节点集划分为互斥的组来将图简化为较小的图。在组之间交叉的原始图的边将在分区图中产生边。如果生成的边的数量与原始图相比较小,则分区图可能比原始图更适合分析和解决问题。
通常,图分区问题属于NP难题的范畴。这些问题的解决方案通常使用启发式和近似算法得出。然而,均匀图分区或平衡图分区问题可以证明在任何有限因子内都是 NP 完备的。
S. Lin and B. W. Kernighan.1970
An Efficient Heuristic Procedure for Partitioning Graphs
http://eda.ee.ucla.edu/EE201A-04Spring/kl.pdf
旅行推销员问题(Travelling Salesman Problem, 又称为旅行商问题)
TSP 问题是一个多局部最优的最优化问题:有 n 个城市,一个推销员要从其中某一个城市出发,唯一走遍所有的城市,再回到他出发的城市,求最短的路线。
S. Lin and B. W. Kernighan.1973
An Effective Heuristic Algorithm for the Traveling-Salesman Problem
https://www.cs.princeton.edu/~bwk/btl.mirror/tsp.pdf
布莱恩·W.克尼汉不仅是著名的 K&R(Kernighan and Ritchie)中的 K,是 AWK(Alfred Aho、Peter Weinberger 和 Brian Kernighan)中的 K,也是 AMLP(A Mathematical Programming Language,数学编程语言)的创造者之一。
在编译器 Ratfor、文档编制预处理器 Pic、Grap 和数学排版语言 Eqn 等这些重要研究成果背后都有布莱恩·W.克尼汉参与的身影。
1974 年,他写的第一本书,是和比尔・普劳格合著的《The Elements of Programming Style》,在这本书中出现了一个以他名字命名的定律 ——Kernighan’s Law
。
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it?
– Brian Kernighan, 1974
Kernighan’s Law:每个人都知道,调试在一开始就比编写程序困难一倍。那么,如果您在编写它时尽可能地巧妙,又如何来调试它?
。
1976 年,他和比尔・普劳格合著《Software Tools》,意在向非 UNIX 系统上编写 Fortran 的程序员传播 UNIX 工具理念。
软件工具
所谓 “软件工具” 就是计算机用户为了设计和实现其所要求的实用程序而运用的一整套方法和措施。
作者选用 Raton (Rational Fortran) 这种结构语言以试图广泛地阐述设计和实现较为理想的各种程序设计方法。
了解 Fortran,PL/1,Cobol,Algol,Pascal 等一类语言的读者很快就会掌握 Ratfor 这种结构语言程序。并以这种程序为基础,去理解掌握和设计书写具有广泛使用价值的好程序;去使用现有的一些方法或者改进一些原有的方法编写出高效而可靠的应用程序。
1978 年,他与 C 语言之父丹尼斯・里奇合著了《The C Programming Language》,该书广为人知,被 C 语言开发者们尊称为 “K&R 手册” 和 “C 语言圣经”,多年来被当作 C 语言的 K&R C 非正式的标准说明。作为 编程语言入门的示范传奇程序 "Hello, World!"—— 计算机行业人踏上代码征程的初始徽章,也源于本书
。
布莱恩·W.克尼还撰写了《The Unix Programming Environment》,本书对 UNIX 操作系统的编程环境做了详细而深入的讨论和指导。
布莱恩·W.克尼汉在普林斯顿大学为非计算机专业学生开设了一门介绍计算机技术基础的课程,根据课程讲义编写《D is for digital》。书中解释了当今计算和通信领域的工作方式,讨论了新技术带来的社会、政治和法律问题。
2011 - D is for digital – What a well-informed person should know about computers and communications
2017 - Understanding the Digital World – What You Need to Know about Computers, theInternet, Privacy, and Security
Hello World
1972 年,在贝尔实验室成员布莱恩·W.克尼汉撰写的内部技术文件《A Tutorial Introd