Brian Wilson Kernighan (; born 1942)
is a Canadian
computer scientist.
He worked at
Bell Labs and contributed to the development of
Unix alongside
Unix creators
Ken Thompson and
Dennis Ritchie. Kernighan's name became widely known through co-authorship of the first book on the
C programming language (''
The C Programming Language'') with
Dennis Ritchie. Kernighan affirmed that he had no part in the design of the C language ("it's entirely
Dennis Ritchie's work").
He authored many
Unix programs, including
ditroff. Kernighan is coauthor of the
AWK and
AMPL programming languages. The "K" of
K&R C and the "K" in AWK both stand for "Kernighan".
In collaboration with
Shen Lin he devised well-known
heuristics for two
NP-complete optimization problems:
graph partitioning and the
travelling salesman problem. In a display of authorial equity, the former is usually called the
Kernighan–Lin algorithm, while the latter is known as the
Lin–Kernighan heuristic.
Kernighan has been a Professor of Computer Science at
Princeton University since 2000 and is the Director of Undergraduate Studies in the Department of Computer Science.
In 2015, he co-authored the book ''The Go Programming Language''.
Early life and education

Kernighan was born in
Toronto. He attended the
University of Toronto between 1960 and 1964, earning his
Bachelor's degree in
engineering physics.
He received his Ph.D. in
electrical engineering from
Princeton University in 1969, completing a doctoral dissertation titled "Some graph partitioning problems related to program segmentation" under the supervision of Peter G. Weiner.
Career and research
Kernighan has held a professorship in the Department of Computer Science at Princeton since 2000. Each fall he teaches a course called "Computers in Our World", which introduces the fundamentals of computing to non-majors.
Kernighan was the software editor for
Prentice Hall International. His "Software Tools" series spread the essence of "C/Unix thinking" with makeovers for
BASIC,
FORTRAN, and
Pascal, and most notably his "
Ratfor" (rational FORTRAN) was put in the public domain.
He has said that if stranded on an island with only one programming language it would have to be C.
Kernighan coined the term
Unix and helped popularize Thompson's
Unix philosophy.
Kernighan is also known as a coiner of the expression "What You See Is All You Get" (WYSIAYG), which is a sarcastic variant of the original "What You See Is What You Get" (
WYSIWYG). Kernighan's term is used to indicate that WYSIWYG systems might throw away information in a document that could be useful in other contexts.
Kernighan's original 1978 implementation of
Hello, World! was sold at
The Algorithm Auction, the world's first auction of
computer algorithms.
In 1996, Kernighan taught
CS50 which is the
Harvard University introductory course in Computer Science.
Kernighan was elected as a member of the
National Academy of Engineering in 2002 and a member of the
American Academy of Arts and Sciences in 2019.
Other achievements during his career include:
* The
AMPL programming language
* The
AWK programming language, with
Alfred Aho and
Peter J. Weinberger, and its book ''
The AWK Programming Language''
* ditroff, or "device independent
troff", which allowed troff to be used with any device
* ''
The Elements of Programming Style'', with
P. J. Plauger
* The first documented
"Hello, world!" program, in Kernighan'
"A Tutorial Introduction to the Language B"(1972)
* Ratfor
* ''Software Tools'', a book and set of tools for Ratfor, co-created in part with P. J. Plauger
* ''Software Tools in Pascal'', a book and set of tools for
Pascal, with P. J. Plauger
* ''
The C Programming Language'', with C creator
Dennis Ritchie, the first book on C
* The
eqn typesetting language for troff, with
Lorinda Cherry
* The
m4 macro processing language, with Dennis Ritchie
* The
pic typesetting language for troff
* ''
The Practice of Programming'', with
Rob Pike
* ''
The Unix Programming Environment'', a tutorial book, with Rob Pike
"Why Pascal is Not My Favorite Programming Language" a popular criticism of
Niklaus Wirth's
Pascal. Some parts of the criticism are obsolete due to ISO 7185 (Programming Languages - Pascal); the criticism was written before ISO 7185 was created. (AT&T Computing Science Technical Report #100)
Publications
* ''
The Elements of Programming Style'' (1974, 1978) with
P. J. Plauger
* ''Software Tools'' (1976) with
P. J. Plauger
* ''
The C Programming Language'' (1978, 1988) with
Dennis M. Ritchie
* ''Software Tools in Pascal'' (1981) with
P. J. Plauger
* ''
The Unix Programming Environment'' (1984) with Rob Pike
* ''
The AWK Programming Language'' (1988) with
Alfred Aho and
Peter J. Weinberger
* ''
The Practice of Programming'' (1999) with
Rob Pike
* ''AMPL: A Modeling Language for Mathematical Programming, 2nd ed.'' (2003) with
Robert Fourer and
David Gay
* ''D is for Digital: What a well-informed person should know about computers and communications'' (2011)
* ''The Go Programming Language'' (2015) with
Alan Donovan
* ''Understanding the Digital World: What You Need to Know about Computers, the Internet, Privacy, and Security'' (2017)
* ''Millions, Billions, Zillions: Defending Yourself in a World of Too Many Numbers'' (2018)
* ''UNIX: A History and a Memoir'' (2019)
[UNIX: A History and a Memoir ]
References
External links
Brian Kernighan's home page at Bell Labsnbsp;— By Brian Kernighan, AT&T Bell Labs, 2 April 1981
"Leap In and Try Things" — Interview with Brian Kernighannbsp;— on "Harmony at Work Blog", October 2009.
nbsp;— By Mihai Budiu, for ''PC Report Romania'', August 2000
* – Interview by
nbsp;— TechNetCast At Bell Labs: Dennis Ritchie and Brian Kernighan (1999-05-14)
Video (Princeton University, September 7, 2003)nbsp;— "Assembly for the Class of 2007: 'D is for Digital and Why It Matters'"
A Descent into Limboby Brian Kernighan
*
Video interview with Brian Kernighan for Princeton Startup TV (2012-03-20)
The Setup, Brian Kernighan
{{DEFAULTSORT:Kernighan, Brian
Category:1942 births
Category:Living people
Category:Canadian computer scientists
Category:Canadian computer programmers
Category:Computer programmers
Category:Inferno (operating system) people
Category:Canadian people of Irish descent
Category:Writers from Toronto
Category:Plan 9 people
Category:Princeton University School of Engineering and Applied Science alumni
Category:Princeton University faculty
Category:Programming language designers
Category:Scientists at Bell Labs
Category:Canadian technology writers
Category:University of Toronto alumni
Category:Unix people
Category:C (programming language)
Category:Members of the United States National Academy of Engineering
Category:Berkman Fellows
Category:Scientists from Toronto