За какой компилятор дали «Нобелевку по информатике»
Изобретатели компилятора получат премию Тьюринга и 1 миллион долларов. Погодите, какого такого компилятора?! Их же куча!
Анастасия Телесницкая для Skillbox
Премия Тьюринга — это Нобелевка в сфере информатики и IT. Для айтишника круче награды нет — и дали её в этом году изобретателям компилятора: Альфреду Ахо и Джеффри Ульману. И тут мы крепко призадумались: так ведь компиляторов чуть ли не больше, чем языков программирования. А сами эти ребята, хоть и убелены сединами, на создателей самого-пресамого первого компилятора ну никак не тянут.
Да и история всё помнит. Первый компилятор появился ещё в 1952 году — его создал Алик Гленни для компьютера Manchester Mark 1. А в 1952 команда Грейс Хоппер в Remington Rand написала компилятор для языка программирования A-0: именно тогда придумали и сам термин «компилятор» — надо же было как-то назвать эту штуковину.
В 1954–1957 годах группа под руководством Джона Бэкуса из IBM разработала FORTRAN, который считается первым высокоуровневым языком программирования. А в 1957 году подоспел и компилятор FORTRAN, который стал первым на 100% рабочим и готовым компилятором. Дальше — больше. В шестидесятых годах разработчики COBOL написали компиляторы для нескольких разных архитектур. Примерно в то же время Джон Маккарти из MIT разработал LISP, а бонусом к нему — джентльменский набор в виде интерпретатора, компилятора и ассемблера.
То есть до Ахо и Ульмана уже существовали компиляторы. Так что, ребзя, расходимся, нас обманули. Хотя вряд ли премию Тьюринга дали по блату — что же тогда скрывается за формулировкой «изобретатели компилятора»? Было сложно, но мы разобрались.
Альфред и Джеффри: кто такие эти полумиллионеры
Альфред Вайно Ахо — почётный профессор Колумбийского университета. Он 30 лет работал в Bell Laboratories — и покинул легендарную компанию в должности вице-президента по исследованиям в области компьютерных наук. Среди его степеней — доктор наук в области электротехники и информатики Принстонского университета, а среди наград — медаль IEEE Джона фон Неймана и приз NEC C&C Foundation (в общем, это мегакруто, поверьте на слово, — плюс у него ещё куча почётных членств во всяких почётных обществах).
Джеффри Дэвид Ульман — почётный профессор Стэнфордского университета и генеральный директор Gradiance Corporation, образовательной онлайн-платформы в области Computer Science. В Стэнфорде он работает с 1979 года, а до этого, как и Ахо, отметился в Принстонском университете и Bell Labs. Среди наград Ульмана — тоже медаль IEEE Джона фон Неймана и второе «тоже» — премия NEC C&C Foundation. Но, в отличие от Ахо, у него ещё есть премии Дональда Кнута, ACM и SIGMOD. Он член Национальной инженерной академии США, Национальной академии наук и Американской академии искусств. В общем, у Джеффри с регалиями тоже полный порядок.
За что на самом деле дали премию?
На сайте премии Тьюринга висит такая формулировка:
«За фундаментальные алгоритмы и теорию, лежащую в основе реализации языков программирования, а также за синтез этих и других результатов в книгах собственного авторства, которые имели большое влияние и обучили несколько поколений учёных».
Как и ожидалось, казённая формулировка ничего не объяснила, поэтому мы снова берёмся за перо. Всё просто. Практически каждая программа — от приложений на смартфоне или бортовом компьютере авто до ПО в ЦОДах технологических корпораций — написана на высокоуровневых языках программирования. Чтобы стать исполняемым и запускаться на конкретных устройствах или операционных системах, этот код компилируется в код на низкоуровневом языке. А теоретическую основу для процесса компиляции современных языков программирования разработали как раз Ахо и Ульман. Грубо говоря, они изобрели сферический компилятор в вакууме, на основе которого разработчики делают компиляторы под разные высокоуровневые языки и платформы.
Начиная с совместной работы в Bell Labs в 1967 году и несколько десятилетий после, Ахо и Ульман глубоко проработали основы теории и реализации языков программирования, а также написали немало работ по алгоритмам. Но главное (в контексте статьи) — они заложили теоретическую базу для технологий компиляции современных высокоуровневых языков программирования.
Особенно известна книга Ахо и Ульмана по теории компиляторов — благодаря этой работе современным программистам не нужно ломать голову, как именно компьютер работает с единичками и нолями.
«Ахо и Ульман помогли нам понять теоретические основы алгоритмов и определить курс для исследований и практики в области разработки компиляторов и языков программирования. Они были нашими идейными лидерами с начала 1970-х годов, а их труды служили маяком для многих поколений программистов и исследователей».
Габриэле Котсис,
президент ACM, отзыв на сайте премии Тьюринга
Как два учёных придумали компилятор
Во время работы в Bell Labs Ахо и Ульман сосредоточились на разработке эффективных алгоритмов для анализа и перевода языков программирования. В то время вычислительные машины были устройствами, с которыми работали небольшие группы математиков и специалистов.
Потом Ахо и Ульман работали в разных компаниях и университетах, но продолжали совместные исследования: написали множество книг и статей, разработали новые подходы к алгоритмам, языкам программирования, компиляторам и программным системам. Вот две их главные книги:
«Разработка и анализ компьютерных алгоритмов»
(1974)
Классика в сфере компьютерных технологий. Более десяти лет была одной из самых цитируемых книг в своей сфере и до сих пор остаётся главным учебником по алгоритмам во всём мире.
«Принципы проектирования компиляторов»
(1977)
Подробная книга об устройстве компиляторов. В ней чётко описаны этапы перевода языка программирования высокого уровня в машинный код, эффективные методы лексического анализа, методы синтаксического анализа и генерация кода. Последняя версия книги (2007) остаётся главным учебником по проектированию компиляторов.
«Ахо и Ульман обосновали фундаментальные идеи в области алгоритмов, формальных языков, компиляторов и баз данных. Эти идеи сыграли важную роль в развитии современного программирования и софтверной отрасли. А учебники Ахо и Ульмана стали золотым стандартом для студентов, исследователей и практиков».
Джефф Дин,
старший научный сотрудник Google и старший вице-президент Google AI, отзыв на сайте премии Тьюринга
По сути, именно Ахо и Ульману мы обязаны тем, что компьютеры стали доступны не только узкой горстке математиков и гиков. На основе их книг до сих создаются современные компиляторы, которые переводят программы с высокоуровневых языков в машинный код. Только вдумайтесь: почти всё, что питается от электричества и хоть что-то вычисляет, работает благодаря фундаментальным исследованиям Ульмана и Ахо. Сейчас им уже за 70, но они по-прежнему преданы своему делу, пишут научные работы, преподают и проводят исследования.