(Note that all citations refer to the page numbers of
the transcript printed in 10-point Times New Roman, with 6 points interceding
As an undergraduate at the University of Toronto, Al Aho wrote his senior thesis on the minimization of Boolean functions. He then studied at Princeton with an assistant professor, John Hopcroft, and a graduate student, Jeff Ullman. For his electrical engineering general examinations, Aho selected computer science as his major, and communications theory and mathematics as his minors (1). After completing his thesis, he observed how Bell Laboratories scientists had co-authored many "key papers" in the "scientific literature" (3). Moreover, he noted how Hopcroft had close connections with Bell Labs and how Ullman had joined the Labs. Finally, he was very impressed with Doug McIlroy, whom he met during a job interview. So, in 1967, Aho decided to join Bell Labs (3). Like others in Bell Labs’ math center, he was treated almost as a consultant by other divisions. He soon realized that he had entered a place where "you were expected to be [at] the forefront of your field, and be able to interact with the forefront of your field" (14). He knew that, at Bell Labs, "the real contributions were the ideas" (14).
Once he joined Bell Labs, Aho co-authored a number of research papers, first with Jeff Ullman, and then with several other co-workers. He soon stumbled upon what would become the UNIX project, and found that using the early system "was a much nicer way to write papers than the old traditional way" (1). Through UNIX, Aho helped develop automata theory and its applications to programming language parsing and compilation. He initially worked on grammars that Donald Knuth† had defined in the mid 1950s (6). Aho fleshed-out portions of the linguist Noam Chomsky’s hierarchy of grammars that he would eventually apply to computing (2).
In this way, Aho hoped to provide a theoretical basis for designing and analyzing algorithms, especially those well-suited for translating high-level programming language source code into the object code that computers actually run (3). He had noticed that "the scientific literature, if you could call it that, was very inaccurate.... The proofs did not hold" (6). He wanted to build a "scientific base" on which one could "iterate and improve" algorithms and techniques, and thereby construct an "engineering design theory" that would make one's work "unassailable" (9). Aho recognized the power of formal, mathematical methods, and found them invaluable for creating pattern-matching algorithms — algorithms that would prove essential for parsing streams of source code. Also, he acknowledged his debts to Doug McIlroy, with whom he frequently conversed about "very unusual words," such as "the longest word in English...that has no repeated letter" — riddles that formalism ultimately trivialized (7).
In any event, Aho and Steve Johnson eventually used automata theory to automate the construction of parsers from the mathematical grammars that specify programming languages. Johnson implemented yacc, which automatically translated a grammar into a parser of lexical units, and lex, which automatically grouped characters from a byte stream into lexical units. Thus, Aho and Johnson essentially automated a task that was once "considered worthy of a Ph.D. thesis" (4). Using yacc, Brian Kernighan and Lorinda Cherry generated the troff preprocessor known as eqn, a package for typesetting mathematics. Via eqn, Kernighan and Cherry demonstrated the flexibility and power of formal methods; eqn successfully realized Kernighan’s "philosophy that language should be like what a professional uses to communicate, the description of those objects over a telephone" (4). Aho always prized scientific, formal methods: During his work with pattern matching, he "was astonished to discover that the program [based on a deterministic automaton] that I [he] had written ran several times faster than what this machine language program did [sic]" (7).
Later, Aho and Johnson theorized about optimizing the output code of automatically generated compilers. Along with others in the UNIX group, they scientifically tested the speeds of C programs on different computing machine architectures, and thereby developed CRISP, a RISC computer optimized for running the stock of C programs in which Bell Labs had an "enormous investment" (8). Also, Aho noticed how "newer [programming] languages are much easier to lexically analyze and to syntactically analyze...the technology has shaped the structure of today's languages, to some degree" (9). He saw computing as a scientific enterprise whose testing ground was reality, or, rather, speed, power, and reliability. In contrast, he viewed the AI community as having made "unsubstantiated claims" that "can't be justified by scientific experiment" (14).
According to Aho, unlike AI, UNIX contained "a great deal of Darwinism" (10). For example, when Kernighan and Cherry developed eqn, "they got a rudimentary form of the language processor to be up and running, and then they let their friends use it. Then the language evolved on the basis of usage patterns" (10). According to Aho, the UNIX group realized "very early in the game...that computing is a worldwide fellowship. Computing is not done in isolation. We like to have access to other people's ideas, programs, information" (12). The key is to constantly "refine" one's products by scientific evaluations, and not to adopt a "dogmatic approach" centered on an "august committee" such as those some European language designers had formed (10). Aho appreciated that "there was a great spirit in that UNIX room, in the early days, of a lot of camaraderie and discussion" (10).
In addition to this "spirit," Aho found byte streams and pipes absolutely essential to the development of UNIX. Aho saw byte streams as "the common denominator" in UNIX, which had the quintessential property that "you can compose functions on a byte stream" (11). Interestingly, even though McIlroy had never published a paper on such function composition, Aho attributed this idea of pipes to Doug McIlroy, who "has had these great seminal ideas which not everyone knows about" (11). Aho cherished "Doug's abilities to comprehend work on a broad front [even with only ‘cursory’ explanations], and also to appreciate the economy of expression that theoretical models gave to the work" (11). Moreover, Aho noted how McIlroy had "a flair for language, a flair for economy of expression" (3). Aho decided that "UNIX would not be the way it is today without Doug. And, also, I don't think the work that I would have done would have had the encouragement..." (11). Thus, as Professor Mahoney remarked, Doug McIlroy seems to be "the gray eminence" in the history of UNIX (11).
† Knuth is probably the most famous and influential modern computer scientist. In addition to writing many foundational articles, he has produced the definitive 3- to 7-volume series, The Art of Computer Programming.