Stephen C. Johnson


Stephen Curtis Johnson 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. He has also contributed to fields as diverse as computer music, psychometrics and VLSI design.

Life and education

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 made a strong impression on him, and he decided he "wanted to work with computers, and never looked back after".
There were no computer science classes in college, so he studied mathematics, in which he eventually earned a PhD.

Career

Bell Labs and AT&T

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. In the mid-1980s, he served as the head of the UNIX Languages Department.
Johnson developed Yacc in the early '70s because he wanted to insert an exclusive or operator into Ritchie's B language compiler. Bell Labs colleague Alfred Aho suggested he look at Donald Knuth's work on LR parsing, which served as the basis for Yacc. In a 2008 interview, Johnson reflected that "the contribution Yacc made to the spread of Unix and C is what I'm proudest of". 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.

Silicon Valley

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., Melismatic Software, and Transmeta, which made low-power, Intel-compatible microprocessors.
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.

Later career

In 2002, he moved to Boston to work at MathWorks, 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.
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.