Brian Wilson Kernighan (; born 1942)
is a Canadian
computer scientist
A computer scientist is a person who is trained in the academic study of computer science.
Computer scientists typically work on the theoretical side of computation, as opposed to the hardware side on which computer engineers mainly focus (al ...
.
He worked at
Bell Labs
Nokia Bell Labs, originally named Bell Telephone Laboratories (1925–1984),
then AT&T Bell Laboratories (1984–1996)
and Bell Labs Innovations (1996–2007),
is an American industrial research and scientific development company owned by mult ...
and contributed to the development of
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
alongside Unix creators
Ken Thompson
Kenneth Lane Thompson (born February 4, 1943) is an American pioneer of computer science. Thompson worked at Bell Labs for most of his career where he designed and implemented the original Unix operating system. He also invented the B programmi ...
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'' (sometimes termed ''K&R'', after its authors' initials) is a computer programming book written by Brian Kernighan and Dennis Ritchie, the latter of whom originally designed and implemented the language, as well as ...
(''
The C Programming Language
''The C Programming Language'' (sometimes termed ''K&R'', after its authors' initials) is a computer programming book written by Brian Kernighan and Dennis Ritchie, the latter of whom originally designed and implemented the language, as well as ...
'') 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
troff (), short for "typesetter roff", is the major component of a document processing system developed by Bell Labs for the Unix operating system. troff and the related nroff were both developed from the original roff.
While nroff was inten ...
. Kernighan is coauthor of the
AWK
AWK (''awk'') is a domain-specific language designed for text processing and typically used as a data extraction and reporting tool. Like sed and grep, it is a filter, and is a standard feature of most Unix-like operating systems.
The AWK lang ...
and
AMPL
AMPL (A Mathematical Programming Language) is an algebraic modeling language to describe and solve high-complexity problems for large-scale mathematical computing (i.e., large-scale optimization and scheduling-type problems).
It was developed ...
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
s. The "K" of
K&R C
C (''pronounced like the letter c'') is a general-purpose computer programming language. It was created in the 1970s by Dennis Ritchie, and remains very widely used and influential. By design, C's features cleanly reflect the capabilities o ...
and of AWK both stand for "Kernighan".
In collaboration with
Shen Lin __NOTOC__
Shen may refer to:
* Shen (Chinese religion) (神), a central word in Chinese philosophy, religion, and traditional Chinese medicine; term for god or spirit
* Shen (clam-monster) (蜃), a shapeshifting Chinese dragon believed to create mi ...
he devised well-known
heuristic
A heuristic (; ), or heuristic technique, is any approach to problem solving or self-discovery that employs a practical method that is not guaranteed to be optimal, perfect, or rational, but is nevertheless sufficient for reaching an immediate, ...
s for two
NP-complete
In computational complexity theory, a problem is NP-complete when:
# it is a problem for which the correctness of each solution can be verified quickly (namely, in polynomial time) and a brute-force search algorithm can find a solution by tryi ...
optimization problems:
graph partition
In mathematics, a graph partition is the reduction of a graph to a smaller graph by partitioning its set of nodes into mutually exclusive groups. Edges of the original graph that cross between the groups will produce edges in the partitioned grap ...
ing and the
travelling salesman problem
The travelling salesman problem (also called the travelling salesperson problem or TSP) asks the following question: "Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each cit ...
. 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
In combinatorial optimization, Lin–Kernighan is one of the best heuristic algorithm, heuristics for solving the symmetric travelling salesman problem. It belongs to the class of Local search (optimization), local search algorithms, which take a t ...
.
Kernighan has been a Professor of Computer Science at
Princeton University
Princeton University is a private university, private research university in Princeton, New Jersey. Founded in 1746 in Elizabeth, New Jersey, Elizabeth as the College of New Jersey, Princeton is the List of Colonial Colleges, fourth-oldest ins ...
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
Toronto ( ; or ) is the capital city of the Canadian province of Ontario. With a recorded population of 2,794,356 in 2021, it is the most populous city in Canada and the fourth most populous city in North America. The city is the ancho ...
. He attended the
University of Toronto
The University of Toronto (UToronto or U of T) is a public research university in Toronto, Ontario, Canada, located on the grounds that surround Queen's Park. It was founded by royal charter in 1827 as King's College, the first institution ...
between 1960 and 1964, earning his
bachelor's degree
A bachelor's degree (from Middle Latin ''baccalaureus'') or baccalaureate (from Modern Latin ''baccalaureatus'') is an undergraduate academic degree awarded by colleges and universities upon completion of a course of study lasting three to six ...
in
engineering physics
Engineering physics, or engineering science, refers to the study of the combined disciplines of physics, mathematics, chemistry, biology, and engineering, particularly computer, nuclear, electrical, electronic, aerospace, materials or mechanical en ...
.
He received his Ph.D. in
electrical engineering
Electrical engineering is an engineering discipline concerned with the study, design, and application of equipment, devices, and systems which use electricity, electronics, and electromagnetism. It emerged as an identifiable occupation in the l ...
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
Prentice Hall was an American major educational publisher owned by Savvas Learning Company. Prentice Hall publishes print and digital content for the 6–12 and higher-education market, and distributes its technical titles through the Safari B ...
. His "Software Tools" series spread the essence of "C/Unix thinking" with makeovers for
BASIC
BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
,
FORTRAN, and
Pascal, and most notably his "
Ratfor
Ratfor (short for ''Rational Fortran'') is a programming language implemented as a preprocessor for Fortran 66. It provides modern control structures, unavailable in Fortran 66, to replace GOTOs and statement numbers.
Features
Ratfor provides ...
" (rational FORTRAN) was put in the
public domain
The public domain (PD) consists of all the creative work
A creative work is a manifestation of creative effort including fine artwork (sculpture, paintings, drawing, sketching, performance art), dance, writing (literature), filmmaking, ...
.
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
The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to minimalist, modular software development. It is based on the experience of leading developers of the Unix operating system. Early Unix de ...
.
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
In computing, WYSIWYG ( ), an acronym for What You See Is What You Get, is a system in which editing software allows content to be edited in a form that resembles its appearance when printed or displayed as a finished product, such as a printed d ...
). Kernighan's term is used to indicate that WYSIWYG systems might throw away information in a document that could be useful in other contexts.
In 1972, Kernighan described memory management in strings using "hello" and "world", in the
B programming language, which became the iconic example we know today. Kernighan's original 1978 implementation of
Hello, World! was sold at
The Algorithm Auction
The Algorithm Auction is the world's first auction of computer algorithms. Created by Ruse Laboratories, the initial auction featured seven lots and was held at the Cooper Hewitt, Smithsonian Design Museum on March 27, 2015.
Five lots were physic ...
, the world's first auction of
computer algorithms.
In 1996, Kernighan taught
CS50
CS50 (Computer Science 50) is an on-campus and online introductory course on computer science taught at Harvard University and Yale University. In 2016, CS50 became available to high school students as an Advanced Placement Computer Science course ...
which is the
Harvard University
Harvard University is a private Ivy League research university in Cambridge, Massachusetts. Founded in 1636 as Harvard College and named for its first benefactor, the Puritan clergyman John Harvard, it is the oldest institution of higher le ...
introductory course in Computer Science. Kernighan was an influence on
David J. Malan who subsequently taught the course and scaled it up to run at multiple universities and in multiple digital formats.
Kernighan was elected a member of the
National Academy of Engineering
The National Academy of Engineering (NAE) is an American nonprofit, non-governmental organization. The National Academy of Engineering is part of the National Academies of Sciences, Engineering, and Medicine, along with the National Academy ...
in 2002 for contributions to software and to programming languages. He was also elected a member of the
American Academy of Arts and Sciences
The American Academy of Arts and Sciences (abbreviation: AAA&S) is one of the oldest learned societies in the United States. It was founded in 1780 during the American Revolution by John Adams, John Hancock, James Bowdoin, Andrew Oliver, and ...
in 2019.
Books and reports
* ''
The Elements of Programming Style
''The Elements of Programming Style'', by Brian W. Kernighan and P. J. Plauger, is a study of programming style, advocating the notion that computer programs should be written not only to satisfy the compiler or personal programming "style", bu ...
'', with
P. J. Plauger
Phillip James (P.J. or Bill) Plauger (; born January 13, 1944, Petersburg, West Virginia) is an author, entrepreneur and computer programmer. He has written and co-written articles and books about programming style, software tools, and the C ...
* ''Software Tools'', a book and set of tools for
Ratfor
Ratfor (short for ''Rational Fortran'') is a programming language implemented as a preprocessor for Fortran 66. It provides modern control structures, unavailable in Fortran 66, to replace GOTOs and statement numbers.
Features
Ratfor provides ...
, 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
''The C Programming Language'' (sometimes termed ''K&R'', after its authors' initials) is a computer programming book written by Brian Kernighan and Dennis Ritchie, the latter of whom originally designed and implemented the language, as well as ...
'', with C creator Dennis Ritchie, the first book on C
* ''
The Practice of Programming'', with
Rob Pike
Robert "Rob" Pike (born 1956) is a Canadian programmer and author. He is best known for his work on the Go (programming language), Go programming language and at Bell Labs, where he was a member of the Unix team and was involved in the creation o ...
* ''
The Unix Programming Environment'', a tutorial book, with Rob Pike
"Why Pascal is Not My Favorite Programming Language" a popular criticism of
Niklaus Wirth
Niklaus Emil Wirth (born 15 February 1934) is a Swiss computer scientist. He has designed several programming languages, including Pascal, and pioneered several classic topics in software engineering. In 1984, he won the Turing Award, generally ...
'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)
Algorithms
* 1972: The first documented
"Hello, world!" program, in Kernighan'
"A Tutorial Introduction to the Language B"* 1973? ditroff, or "device independent
troff
troff (), short for "typesetter roff", is the major component of a document processing system developed by Bell Labs for the Unix operating system. troff and the related nroff were both developed from the original roff.
While nroff was inte ...
", which allowed troff to be used with any device
* 1974: The
eqn typesetting language for troff, with
Lorinda Cherry
Lorinda Cherry ( Landgraf; November 18, 1944 – February 2022) was an American computer scientist and programmer. Much of her career was spent at Bell Labs, where she was for many years a member of the original Unix Lab. Cherry developed severa ...
* 1976:
Ratfor
Ratfor (short for ''Rational Fortran'') is a programming language implemented as a preprocessor for Fortran 66. It provides modern control structures, unavailable in Fortran 66, to replace GOTOs and statement numbers.
Features
Ratfor provides ...
* 1977: The
m4 macro processing language, with Dennis Ritchie
* 1977: The
AWK
AWK (''awk'') is a domain-specific language designed for text processing and typically used as a data extraction and reporting tool. Like sed and grep, it is a filter, and is a standard feature of most Unix-like operating systems.
The AWK lang ...
programming language, with
Alfred Aho
Alfred Vaino Aho (born August 9, 1941) is a Canadian computer scientist best known for his work on programming languages, compilers, and related algorithms, and his textbooks on the art and science of computer programming.
Aho was elected into ...
and
Peter J. Weinberger, and its book ''
The AWK Programming Language
''The AWK Programming Language'' is a well-known 1988 book written by Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger and published by Addison-Wesley, often referred to as the gray book. The book describes the AWK programming language ...
''
* 1985: The
AMPL
AMPL (A Mathematical Programming Language) is an algebraic modeling language to describe and solve high-complexity problems for large-scale mathematical computing (i.e., large-scale optimization and scheduling-type problems).
It was developed ...
programming language
* 1988: The
pic typesetting language for troff
Publications
* ''The Elements of Programming Style'' (1974, 1978) with P. J. Plauger
* ''Software Tools'' (1976) with
P. J. Plauger
* ''
The C Programming Language
''The C Programming Language'' (sometimes termed ''K&R'', after its authors' initials) is a computer programming book written by Brian Kernighan and Dennis Ritchie, the latter of whom originally designed and implemented the language, as well as ...
'' (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
''The AWK Programming Language'' is a well-known 1988 book written by Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger and published by Addison-Wesley, often referred to as the gray book. The book describes 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
Robert Fourer (born September 2, 1950) is a scientist working in the area of operations research and management science. He is currently President of AMPL Optimization, Inc and is Professor Emeritus of Industrial Engineering and Management Science ...
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
Alan may refer to:
People
*Alan (surname), an English and Turkish surname
*Alan (given name), an English given name
**List of people with given name Alan
''Following are people commonly referred to solely by "Alan" or by a homonymous name.''
*Al ...
* ''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)
Programming Setup
Kernighan uses a 13-inch MacBook Air as his primary device. Along with this, from time to time, he uses an iMac in his office. He, most of the time, uses
Sam as his text editor.
See also
*
List of pioneers in computer science
This is a list of people who made transformative breakthroughs in the creation, development and imagining of what computers could do.
Pioneers
: ''To arrange the list by date or person (ascending or descending), click that column's small "up-do ...
References
External links
Brian Kernighan's home page at Bell LabsLex Fridman Podcast #109: Brian Kernighan - UNIX, C, AWK, AMPL, and Go Programmingnbsp;— 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
1942 births
Living people
Canadian computer scientists
Canadian computer programmers
Computer programmers
Inferno (operating system) people
Canadian people of Irish descent
Writers from Toronto
Plan 9 people
Princeton University School of Engineering and Applied Science alumni
Princeton University faculty
Programming language designers
Scientists at Bell Labs
Canadian technology writers
University of Toronto alumni
Unix people
C (programming language)
Members of the United States National Academy of Engineering
Berkman Fellows
Scientists from Toronto