HOME

TheInfoList



OR:

Brian Wilson Kernighan (; born 1942) is a Canadian computer scientist. 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 development, research and scientific developm ...
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, an ...
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 ''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 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 trying ...
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. Kernighan has been a Professor of Computer Science at
Princeton University Princeton University is a private research university in Princeton, New Jersey. Founded in 1746 in Elizabeth as the College of New Jersey, Princeton is the fourth-oldest institution of higher education in the United States and one of the ...
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 anch ...
. He attended the
University of Toronto The University of Toronto (UToronto or U of T) is a public university, public research university in Toronto, Ontario, Canada, located on the grounds that surround Queen's Park (Toronto), Queen's Park. It was founded by royal charter in 1827 ...
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 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, 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 to which no exclusive intellectual property rights apply. Those rights may have expired, been forfeited, expressly waived, or may be inapplicable. Because those rights have expired, ...
. 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 high ...
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 of ...
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, a ...
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 A "Hello, World!" program is generally a computer program that ignores any input and outputs or displays a message similar to "Hello, World!". A small piece of code in most general-purpose programming languages, this program is used to illustr ...
, 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 * 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 Programming
nbsp;— By Brian Kernighan, AT&T Bell Labs, 2 April 1981
"Leap In and Try Things" — Interview with Brian Kernighan
nbsp;— 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 Limbo
by 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