title: Brian Kernighan
text: Brian Wilson Kernighan (; born January 30, 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 of 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.
  
  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 world's first auction of computer algorithms.
  
  In 1996, Kernighan taught CS50 which is the Harvard University 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 in 2002 for contributions to software and to programming languages. He was also elected a member of the American Academy of Arts and Sciences in 2019.
  
  In 2022 Kernighan stated that he was actively working on improvements to the AWK programming language, which he took part in creating in 1977.
  
  Books and reports
   The Elements of Programming Style, with P. J. Plauger
   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 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)
  
  Algorithms
   1972: The first documented "Hello, world!" program, in Kernighan's "A Tutorial Introduction to the Language B"
   1973: ditroff, or "device independent troff", which allowed troff to be used with any device
   1974: The eqn typesetting language for troff, with Lorinda Cherry
   1976: Ratfor
   1977: The m4 macro processing language, with Dennis Ritchie
   1977: The AWK programming language, with Alfred Aho and Peter J. Weinberger, and its book The AWK Programming Language
   1985: The AMPL 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 (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)
  
  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
  
  References
  
  External links
  
  Brian Kernighan's home page at Bell Labs
  Lex Fridman Podcast #109: Brian Kernighan - UNIX, C, AWK, AMPL, and Go Programming
  "Why Pascal is Not My Favorite Programming Language" — By Brian Kernighan, AT&T Bell Labs, 2 April 1981
  "Leap In and Try Things" — Interview with Brian Kernighan — on "Harmony at Work Blog", October 2009.
  An Interview with Brian Kernighan — By Mihai Budiu, for PC Report Romania, August 2000
    – Interview by 
   Video — TechNetCast At Bell Labs: Dennis Ritchie and Brian Kernighan (1999-05-14)
  Video (Princeton University, September 7, 2003) — "Assembly for the Class of 2007: 'D is for Digital and Why It Matters'"
   A Descent into Limbo by Brian Kernighan
   Photos of Brian Kernighan
   
   Video interview with Brian Kernighan for Princeton Startup TV  (2012-03-20)
   The Setup, Brian Kernighan
  
  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