Alfred Aho and Jeffrey Ullman have won this year’s Turing Award, computer science’s equivalent of the Nobel Prize, for their work on programming languages.
Through more than three decades of collaboration, Aho and Ullman coauthored a series of seminal textbooks on programming languages, data, and algorithms that shaped the thinking of a generation of computer scientists. They are particularly known for their work on the theory of compilers, a type of software that converts instructions from an abstract programming language, such as the database-specific language SQL, into the machine code that the computer executes.
Thanks to theories Aho, now 79, and Ullman, 78, helped develop, most coders working on programs today don’t need to worry about how a computer’s circuits are actually configured or exactly how information is routed through the machine.
“Aho and Ullman established bedrock ideas about algorithms, formal languages, compilers, and databases, which were instrumental in the development of today’s programming and software landscape,” said Jeff Dean, a storied Google engineer and executive who is currently the company’s senior fellow and senior vice president at Google Research and Google Health.
The Turing Award is given annually by the Association for Computing Machinery (ACM). The winners share a $1 million prize, which Google helps fund. The prize is named for Alan Turing, the British mathematician who developed the foundations of modern computing.
This year’s Turing winners began their collaboration at Bell Labs in the late 1960s, after both received Ph.D.s from Princeton University. They initially worked on developing more efficient algorithms and translating programming languages. Although Ullman left Bell Labs to return to academia in 1969, eventually ending up at Stanford University, where he is currently a professor emeritus, the two continued to write books together.
In 1974, they published The Design and Analysis of Computer Algorithms, which became the standard textbook for courses on algorithms for more than a decade. The book was influential for grouping individual algorithms into more general design categories which continued to exert great influence on the field.
Three years later, Aho and Ullman published Principles of Compiler Design, which also became a classic, teaching generations of students how to create compilers and how to think about the theory of computer languages. The textbook became known as “the Dragon Book” among computer science students because it featured a dragon on its cover, resembling some magical tome Harry Potter might cart around Hogwarts, except the fictional wizard hadn’t been invented yet. “I am often told that putting this funny cover on the Dragon Book attracted students to study computer science,” Ullman says. “A lot of students liked the idea of walking around campus with this weird book under their arm.”
Aho, who worked at Bell Labs for more than 30 years and is currently a computer science professor emeritus at Columbia University, says that while at the famed corporate lab he saw firsthand the importance of designing programming languages that would work well for people who needed computers to perform work in a specific field, such as mathematics or chemistry or typesetting, without having to be experts in how computers functioned. Ullman describes the art of creating programming languages as “enabling the programmer to say as little as possible and have as much happen as possible.”
Both Aho and Ullman say that when they look back on their careers, they are most gratified by the impact they have had on students they have taught and mentored, many of whom now hold senior posts at major technology companies and have invented numerous programming languages. Among Ullman’s Ph.D. students was Google cofounder Sergey Brin.
Aho says that it was important to give students a grounding in the theory of programming languages and algorithms, in part because the languages themselves tend to be subject to changing fashion. “If you look at the first programming languages taught to students in academia, it changes all the time,” he notes. “It was C or C++, and then Pascal was popular, and now Python seems to be the first programming language. Who knows what it will be 10 years from now, 100 years from now, 1,000 years from now?” He adds, “We both feel fundamentals and abstractions have more staying power than the technology of the moment.