Stephen C. Johnson

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Stephen C. Johnson
Born1944 (age 77–78)
Alma mater
OccupationComputer scientist
Known forYacc, Lint, Portable C Compiler
Scientific career
FieldsComputer science
InstitutionsBell Labs
ThesisCategorical decompositions (1968)
Doctoral advisorsSamuel Eilenberg

Stephen Curtis Johnson (b. 1944; known as Steve Johnson)[1] is a computer scientist who worked at Bell Labs and AT&T for nearly 20 years. He is best known for Yacc, Lint, spell, and the Portable C Compiler, which contributed to the spread of Unix and C.[2] He has also contributed to fields as diverse as computer music, psychometrics and VLSI design.[3]

Life and education[edit]

Johnson's passion for computing started at age five, when his grandfather took him along to his work at the Bureau of Standards. The computer he saw ("the size of a small house") made a strong impression on him, and he decided he "wanted to work with computers, and never looked back after".[3]

There were no computer science classes in college, so he studied mathematics, in which he eventually earned a PhD.


Bell Labs and AT&T[edit]

Johnson joined Bell Labs and AT&T in the 1960s and worked on Unix tools for nearly 20 years, alongside computer scientists like Jeffrey Ullman, Dennis Ritchie and Alfred Aho. He was best known for writing Yacc, Lint, and the Portable C Compiler.

In the mid-1970s, Johnson and Bell colleague Dennis Ritchie co-authored the first AT&T Unix port. They also "demonstrated that Unix was portable", which Ritchie considers the spark that led to Unix becoming widespread.[4] In the mid-1980s, he served as the head of the UNIX Languages Department (UNIX System V).[3]

Johnson developed Yacc in the early '70s because he wanted to insert an exclusive or operator into Ritchie's B language compiler.[5] Bell Labs colleague Alfred Aho suggested he look at Donald Knuth's work on LR parsing, which served as the basis for Yacc.[3] In a 2008 interview, Johnson reflected that "the contribution Yacc made to the spread of Unix and C is what I'm proudest of".[2] Lint was developed in 1978 while Johnson was debugging the Yacc grammar he was writing for C and struggling with portability issues stemming from porting Unix to a 32-bit machine.[3][6]

Silicon Valley[edit]

In 1986, Johnson moved to Silicon Valley, where he joined several startups, where he worked mostly on compilers, but also 2D and 3D graphics, massively parallel computing and embedded systems. The startups included Dana Computer, Inc.,[7] Melismatic Software, and Transmeta, which made low-power, Intel-compatible microprocessors.[3]

Johnson served on the USENIX board for ten years, including four years as president in the early 1990s. He now serves as the USENIX representative to the Computing Research Association.[citation needed]

Later career[edit]

In 2002, he moved to Boston to work at MathWorks,[8] where he helped maintain the front end of the MATLAB programming language, for which he also built a lint product called M-Lint. He had met MathWorks founder Cleve Moler while working at a Silicon Valley startup and developed a "long-distance consulting relationship" with him in the 1990s.[3]

Johnson currently lives in Morgan Hill, California and works on machine learning at Wave Computing, a startup that develops energy-efficient computers for machine learning.[1]


  1. ^ a b Johnson, Steve. "What's it All About". Retrieved 19 January 2018.
  2. ^ a b Hamilton, Naomi (10 July 2008). "Yacc, Unix, and Advice from Bell Labs Alumni Stephen Johnson". Computerworld. Retrieved 19 January 2018.
  3. ^ a b c d e f g Morris, Richard (1 October 2009). "Stephen Curtis Johnson: Geek of the Week". Red Gate Software. Retrieved 19 January 2018.
  4. ^ Ritchie, Dennis (September 1994). "How Did We Get Here, Where Are We Going?". AUUG Conference Proceedings. Australia: AUUG, Inc. p. 4. ISBN 978-0-646-20108-5.
  5. ^ Ritchie, Dennis M. (April 1993). The Development of the C Language (PDF). Association for Computing Machinery.
  6. ^ Johnson, Stephen C. (25 October 1978). "Lint, a C Program Checker": 78–1273. CiteSeerX {{cite journal}}: Cite journal requires |journal= (help)
  7. ^ Watt, Peggy (15 June 1987). "Jobs Pushes for New Unix Standard: Usenix Attendees Defend Operating System". InfoWorld. Retrieved 19 January 2018.
  8. ^ "USENIX '04 Training Track Instructors". USENIX. Retrieved 19 January 2018.