Every time we use a piece of computer software, on whatever device it may be, we are using an essential tool – a compiler. Computer programs written by us are in high-level languages like C, C++, Java, FORTRAN, etc. But the hardware of the computer does not understand these high-level instructions because the only language the electronic hardware understands is the presence or absence of electric current. This we denote, for our convenience as binary digits 1 and 0; this is called machine code. So the task of conversion of high-level language program to machine code must be done by another software and that is the compiler. The compiler performs multiple tasks in its life cycle and the best explanation of role of compiler will be found in the book shown below.
But what is the ACM Turing Award? The Turing Award was named for Alan M. Turing, the British mathematician responsible for the mathematical foundations and limits of computing, and who was a key contributor to the Allied cryptanalysis of the Enigma cipher during World War II. This award was started in 1966, and since then the Turing Award has honored the computer scientists and engineers who created the systems and underlying theoretical foundations that have propelled the information technology industry. It is like the Nobel Prize for Computer Science.
On March 31, 2021, ACM (Association for Computing Machinery) awarded the 2020 Turing Prize to Alfred V Aho and Jeffrey D. Ullman. Prof. Aho is the Lawrence Gussman Professor Emeritus of Computer Science at Columbia University. Prof. Ullman is the Stanford W. Ascherman Professor Emeritus of Computer Science at Stanford University. They are the pioneers of compiler design, theoretical foundations of algorithms, and formal languages. The award of $1million will be shared equally between the two researchers.
They made fundamental contributions to the field of compilers for programming languages and spread this information through their influential textbooks. Their work in algorithm design and analysis techniques contributed crucial approaches to the theoretical core of computer science.
Two books co-authored by Aho and Ullman are mandatory reading for anyone doing undergraduate or graduate level study in computer science. “The Design and Analysis of Algorithms” is a classic in this field (John Hopcroft is also a co-author of this book). This book introduced the random access machine (RAM) as the basic model for analyzing the time and space complexity of computer algorithms using recurrence relations. The general algorithm design techniques and the RAM model introduced in this book now form an integral part of the standard computer science curriculum.
The other book, “Principles of Compiler Design” is co-authored by Aho and Ullman. This is the bible of compiler construction, formal language theory, and syntax-directed translation techniques. This is also called as the “Dragon Book” because of its cover design, and it lucidly lays out the phases in translating a high-level programming language to machine code, the entire process of compiler construction is a set of modules, each doing a specific task, much like a function or a method in programming languages. The current edition of this book, Compilers: Principles, Techniques and Tools (co-authored with Ravi Sethi remains the standard textbook on compiler design.