на чем был написан первый компилятор с языка
Как был написан первый компилятор?
Я слышал про курицу и яйцо и загрузчик. У меня есть несколько вопросов.
что написал первый компилятор, который преобразовал что-то в двоичные инструкции?
сборка скомпилирована или переведена в двоичные инструкции?
. Мне было бы трудно поверить, что они написали компилятор в двоичном формате.
6 ответов
инструкции по сборке (обычно)представляют собой прямое сопоставление с опкодами, которые являются (многобайтовыми) значениями машинного кода, которые могут быть непосредственно интерпретированы процессором. Вполне возможно написать программу в opcodes напрямую, посмотрев их из таблицы (например,это для микропроцессора 6039, например), который перечисляет их с соответствующими инструкциями по сборке и определяет вручную адреса/смещения памяти для таких вещей, как прыжки.
первый программы делались именно таким образом-написанные от руки опкоды.
однако большую часть времени проще использовать ассемблер для «компиляции» кода сборки, который автоматически выполняет эти запросы кода операции, а также полезен при вычислении адресов/смещений для именованных меток перехода и т. д.
первые ассемблеры были написаны от руки. Затем эти ассемблеры можно использовать для сборки более сложных ассемблеров, которые затем можно использовать для сборки написанных компиляторов для языков более высокого уровня и так далее. Этот процесс итеративного написания инструментов для упрощения создания следующего набора инструментов называется (как упоминал Дэвид Рабинович в своем ответе) загрузки.
идея состоит в том, чтобы написать очень простой компилятор непосредственно в машинном коде, использовать его для написания более сложного компилятора, использовать второй для создания третьего и так далее, пока вы не сможете иметь полнофункциональный компилятор.
яйца задолго до куриц. Ответ на большинство проблем «курицы и яйца» один и тот же: эволюция. У некоторых людей тоже есть проблемы с верой в биологическую эволюцию, но неверие-это не аргумент (google argumentum ad ignorantiam).
ВОЗ сказал в одном из своих публичных выступлений, что, когда он начал, он не мог позволить компилятору, чтобы он компилируется в двоичный вручную на бумаге. Если вы хотите увидеть что-то еще более дикое, прочитайте об условиях, при которых
Если вы хотите сломать барьер, который держит компьютеры чувствовать себя как магия, я настоятельно рекомендую читать код Чарльза Петцольда и/или элементы вычислительных систем. Имея только базовые знания программирования, эти чудесно доступные книги помогут вам понять компьютеры сверху донизу. Очевидно, что комп получить невозможно. научный. или степень EE после всего 2 книг, но я могу сказать как программист-самоучка, который пропустил формальное обучение: эти книги потрясли мой мир!
что написал первый компилятор, который преобразовал что-то в двоичные инструкции?
иногда это все еще происходит в небольшой степени-для исправления небольших бит кода или создания thunks. Я помню, как набирал числа в базовые строки,которые затем выполнялись как небольшие, быстрые подпрограммы на ранних микро. Я также помню переключение переключателей на передней панели PDP-11, чтобы ввести программу загрузчика в его память для университетского курса.
эти программы иногда использовались для обработки текстовых файлов для создания других программ, и были созданы языки программирования voila.
Как были сделаны первые компиляторы?
Мне всегда интересно это, и, возможно, мне нужен хороший урок истории по языкам программирования. Но так как большинство компиляторов в настоящее время сделаны на C, как были созданы самые первые компиляторы (AKA до C) или все языки были просто интерпретированы?
С учетом вышесказанного, я до сих пор не понимаю, как был создан даже первый язык ассемблера, я понимаю, что такое язык ассемблера, но я не вижу, как они получили ОЧЕНЬ первый язык ассемблера (например, как они сделали первый Команды (как mov R21 ) или W / E установлен в двоичный эквивалент?
Что касается компиляторов, то, по сути, они могут быть немного больше, чем программы «вырезать и вставить». Вы можете написать очень простой, неоптимизирующий «язык высокого уровня», который просто объединяет простые инструкции на языке ассемблера без особых усилий.
Вот о чем говорит начальная загрузка компилятора (поскольку никто не упомянул, как она называется =).
процесс написания компилятора (или ассемблера) на целевом языке программирования, который он предназначен для компиляции. Применение этой методики приводит к самостоятельному компилятору.
Проблема курицы и яйца
Если нужен компилятор для языка X, чтобы получить компилятор для языка X (который написан на языке X), как был написан первый компилятор? Возможные методы решения этой проблемы курицы или яйца включают в себя:
В конечном итоге все компьютеры работают с двоичными кодами, которые загружаются в процессор. Эти двоичные коды совершенно естественны для процессора, но также совершенно бесполезны для людей. Одним из первых способов написания программы было пробивание отверстий в карточках. Положение отверстий представляло собой определенную позицию бита в слове, а наличие или отсутствие отверстия интерпретировалось как ноль или единица. Эти карты были помещены в правильную последовательность в коробке, а затем поданы в картридер, который эффективно преобразовывал их в двоичный код для процессора (и ваша жизнь была фактически потеряна, если вы уронили коробку).
Очевидно, что самые первые программисты обрабатывали двоичные коды один за другим и имели машину для перфорирования карт. По сути, это программирование на ассемблере на ваших руках и коленях. Когда у вас есть это, вы можете создать из него все остальное: простой текстовый редактор, компилятор языка ассемблера (для преобразования текстовых операторов сборки в двоичные коды), компоновщик и загрузчик. А в остальном, как говорится, уже история.
Небольшое приближение к рукам обнаруживает EDSAC Первоначальные заказы с конца 40-х годов. Поскольку это был первый ассемблер, он, вероятно, был написан на машинном языке.
Позже появились ассемблеры для других машин, таких как SOAP I и II для IBM 650. SOAP I, вероятно, также был написан на машинном языке, хотя я не нашел окончательного утверждения.
Самые первые компьютеры были напрямую запрограммированы в двоичном виде путем переключения физических переключателей. Это было большим улучшением производительности, когда аппаратное обеспечение развивалось, позволяя программисту (или помощнику по вводу данных) вводить код в шестнадцатеричных числах с клавиатуры!
Программный ассемблер стал актуальным только тогда, когда стало доступно больше памяти (поскольку ассемблерный код занимает больше места, чем необработанный машинный код), а аппаратное обеспечение развилось, чтобы позволить буквенно-цифровой ввод. Итак, первые ассемблеры были написаны непосредственно людьми, свободно владеющими машинным кодом.
Когда у вас есть ассемблер, вы можете написать компилятор для языка более высокого уровня в ассемблере.
Хотя не всегда возможно написать компилятор / интерпретатор для языка на самом языке. Интерпретатор JavaScript, написанный на JavaScript, существует, но компиляторы / интерпретаторы в современных браузерах по-прежнему написаны на C или C ++ по соображениям производительности. JavaScript, написанный на JavaScript, просто слишком медленный.
Но вам не нужно использовать C как «начальный язык» для компилятора. Первый компилятор F # был написан на OCaml, который является другим языком, наиболее тесно связанным с F #. Когда компилятор был готов, он был переписан на F #. Первый компилятор для Perl 6 был написан на Haskell (чистый функциональный язык, сильно отличающийся от Perl), но теперь имеет компилятор, написанный на C.
Интересным примером является Rust, где первый компилятор был написан на OCaml (теперь он переписан на Rust). Это примечательно, потому что OCaml, как правило, считается более высоким уровнем, чем Rust, который является языком систем ближе к железу. Так что это не всегда языки более высокого уровня, реализованные в языках более низкого уровня, это также может быть наоборот.
Затем вы использовали бы этот едва функциональный компилятор или ассемблер для реализации немного более способного компилятора или ассемблера, который может распознавать большее подмножество целевого языка. Вспенить, промыть, повторить, пока не получится конечный продукт.
Это не так сложно, как кажется. В детстве;) Я сделал несколько разборок x86 в виду.
Вам даже не нужно учить это особенно. Это просто происходит, когда вы можете программировать на ASM, а затем пытаться исправить сторонний бинарный файл с помощью интерактивных дизассемблеров. Или при написании собственной защиты с шифрованием кода.
Т.е. иногда вы переходите даже с языка на коды, что неудивительно.
Не так давно программирование в двоичном коде все еще было навыком, которым пользовались люди.
ОЧЕНЬ ПРОСТОЙ ОТВЕТ. Предположим, мы пишем аппаратную программу и сохраняем ее в ПЗУ. Это можно рассматривать как компилятор. Поэтому я просто хочу сказать, что самый первый компилятор был аппаратным. По мере совершенствования технологии эти простые компиляторы затем использовались для написания компиляторов высокого уровня.
История языка Си
Многие помнят имена создателей языка — Кена Томпсона и Дениса Ритчи, но я решил копнуть глубже и вспомнить историю создания и развития языка. Всем кому интересна эта тема — добро пожаловать под кат.
Язык Си восходит корнями к языку ALGOL (расшифровывается как ALGorithmic Language), который был создан в 1958 году совместно с комитетом Европейских и Американских учёных в сфере компьютерных наук на встрече в 1958 в Швейцарской высшей технической школе Цюриха. Язык был ответом на некоторые недостатки языка FORTRAN и попыткой их исправить.
Вдохновлённые языком ALGOL-60, Математическая лаборатория Кембриджского Университета совместно с Компьютерным отделом Лондонского университета создали в 1963 году язык CPL (Combined Programming Language).
Язык CPL посчитали сложным, и в ответ на это Мартином Ричардсоном был создан в 1966 году язык BCPL, основное предназначение которого заключалось в написании компиляторов. Сейчас он практически не используется, но в своё время из-за хорошей портируемости он играл важную роль.
BCPL послужил предком для языка Би, разработанного в 1969 в уже знакомой всем AT&T Bell Telephone Laboratories, не менее знакомыми Кеном Томпсоном и Денсом Ритчи.
Язык Би был использован для написания самых ранних версий UNIX, созданной как ответ на проект Multics, разрабатываемый всё в той же Bell Laboratories. Именно этот язык послужил непосредственным предшественником языка Си.
По поводу возникновения языка Си Питер Мойлан в своей книге «The case against C» пишет: «Нужен был язык, способный обойти некоторые жесткие правила, встроенные в большинство языков высокого уровня и обеспечивающие их надежность. Нужен был такой язык, который позволил бы делать то, что до него можно было реализовать только на ассемблере или на уровне машинного кода.» Си стал именно таким языком. Это обусловило его дальнейшую популярность в таких отраслях программирования, как написание драйверов и прочих аспектах низкоуровневого программирования.
Язык программирования Си был разработан в стенах Bell Labs в период с 1969 по 1973 годы. Как признался сам Ритчи, самый активный период творчества приходился на 1972 год.
За всё время своего существования, язык Си оброс легендами по поводу мотивов своего создания.
Согласно одной из легенд, Керниган и Ритчи любили одну компьютерную игру, которую они запускали на главном сервере компании. Позже, они захотели перенести её на компьютер, стоящий в офисе. Но он, к сожалению не имел операционной системы, что сподвигло Кернигана и Ритчи её написать. Когда они захотели перенести систему на другой компьютер, это оказалось непростой задачей, так как система была написана полностью на ассемблере. Тогда у них возникла идея переписать её на язык высокого уровня. Сначала для этих целей планировали использовать язык Би, но в связи с тем, что он не давал на полную использовать новые возможности компьютера, на который они хотели перенести систему, было решено создать свой язык.
Согласно другой легенде, язык Си был первоапрельской шуткой, которая обрела нешуточную популярность.
Компилятор языка Си унаследовал традицию, заложенную ещё Никлаусом Виртом и был написан на самом Си. Согласно мнению большинства, название языка Си является третьей буквой алфавита. Оно появилось как указание на то, что язык Си является более усовершенствованным, чем язык Би. Однако, сам Ритчи по поводу названия языка говорил следующее:«Создав систему типов, соответствующий синтаксис и компилятор для нового языка, я почувствовал, что он заслуживает нового имени: NB показалось мне недостаточно четким. Я решил следовать однобуквенному стилю и назвал его C (Си), оставляя открытым вопрос, являлось ли после B это следующей буквой в алфавите или в названии BCPL».
Успех Си в основном связан с тем, что на нём была написана значительная часть операционной системы UNIX, которая в итоге приобрела очень большую популярность. Если считать по количеству используемых на данный момент операционных систем, разработанных на базе UNIX, то она является самой распространённой системой в мире. В связи с её распространённостю, а также с тем, что на данный момент объём операционной системы измеряется в миллионах строк кода (для примера, в последних версиях Linux содержится более 10 000 000 строк кода), задача о переписывании UNIX на другой язык становиться практически невыполнимой (также следует учитывать тот факт, что при ручном переписывании неизбежно возникнут ошибки, что существенно снизит стабильность работы, а при переводе с использованием программных средств пострадает производительность кода). Кроме того, язык Си, будучи приближённым к аппаратной реализации компьютера позволяет выжать из него намного больше, чем многие другие языки программирования. Это обстоятельство показывает бессмысленность перевода UNIX на другой язык. Таким образом, если другие языки программирования могут исчезнуть с течением времени, уступив дорогу новым технологиям, то язык Си будет жить, пока живёт UNIX. То есть пока существуют компьютеры в том виде, в котором мы их себе представляем.
Первая книга, посвящённая языку Си была написана Керниганом и Ритчи в 1978 году и вышла в свет под названием «Язык программирования Си». Эта книга, в среде программистов более известная как «K&R», стала неофициальным стандартом языка Си.
В конце 1970-х годов, язык си начал вытеснять BASIC, который в то время был ведущим в области программирования микрокомпьютеров. В 1980-х годах он был адаптирован под архитектуру IBM-PC, что привело к значительному скачку его популярности. В то же время Бьярн Страуструп начал разработку языка программирования, который бы сочетал в себе синтаксис популярного языка Си и концепцию объектно-ориентированного программирования, которая становилась всё более востребованной, так началась разработка языка С++.
В то время как Си набирал всё большую популярность, компиляторы для него выпускались различными фирмами, и зачастую программа, которая компилировалась на компиляторе одной фирме, не компилировалась на компиляторе другой. Всё это было связано с отсутствием чётко оговоренного стандарта языка Си. Все разработчики ориентировались на книгу Кернигана и Ритчи, но интерпретировали её по-своему.
Разработкой стандарта языка Си занялся Американский национальный институт стандартов (ANSI). При нём в 1983 году был сформирован комитет X3J11, который занялся разработкой стандарта. Первая версия стандарта была выпущена в 1989 году и получила название С89. В 1990, внеся небольшие изменения в стандарт, его приняла Международная Организация Стандартизации ISO. Тогда он стал известен под кодом ISO/IEC 9899:1990, но в среде программистов закрепилось название, связанное с годом принятия стандарта: С90. Последней на данный момент версией стандарта является стандарт ISO/IEC 9899:1999, также известный как С99, который был принят в 2000 году.
Среди новшеств стандарта С99 стоит обратить внимание на изменение правила, касающегося места объявления переменных. Теперь новые переменные можно было объявлять посреди кода, а не только в начале составного блока или в глобальной области видимости. Это уводит Си от концепции объявления переменных в начале функции, которая присутствует в Паскале. Меня, как и многих программистов, привыкших писать на С++ (где это ограничение отсутствует) такое поведение компилятора вызывало недовольство. Тем не менее, даже с принятием стандарта С99, в программе Borland Embarcadeo RAD Studio 2010, ограничение на объявление переменных в начале блока кода всё ещё действует. Также можно указать другие места, в которых стандарты Си не до конца соблюдаются. Есть мнение, что это связано с тем, что основное внимание больших компаний, таких как Microsoft и Borland сосредоточено на более новых языках программирования. Однако, согласно заверениям компании Sun Microsystems, её среда разработки Sun Studio полностью поддерживает С99.
Стандарт С99 сейчас в большей или меньшей степени поддерживается всеми современными компиляторами языка Си. В идеале, код написанный на Си с соблюдением стандартов и без использования аппаратно- и системно-зависимых вызовов, становился как аппаратно- так и платформенно-независимым кодом.
В 2007 году начались работы над следующим стандартом языка Си: С1x.
Как был написан первый компилятор?
Я слышал о курице, яйце и бутстрепе. У меня есть несколько вопросов.
Что написал первый компилятор, преобразовавший что-то в двоичные инструкции?
Сборка скомпилирована или переведена в двоичные инструкции?
. Мне трудно поверить, что они написали компилятор в двоичном формате.
6 ответов
Однако в большинстве случаев проще использовать ассемблер для «компиляции» ассемблерного кода, который автоматически выполняет эти поиски кода операции, а также помогает при вычислении адресов / смещений для именованных меток перехода и т. Д.
Первые ассемблеры писались вручную. Затем эти ассемблеры можно было бы использовать для сборки более сложных ассемблеров, которые затем можно было бы использовать для сборки компиляторов, написанных для языков более высокого уровня, и так далее. Этот процесс итеративного написания инструментов для упрощения создания следующего набора инструментов называется (как упомянул Дэвид Рабиновиц в своем ответе) начальная загрузка.
Воз сказал в одном из своих публичных выступлений, что когда он только начинал, он не мог позволить себе компилятор, поэтому скомпилировал его в двоичный код вручную на бумаге. Если вы хотите увидеть что-то еще более дикое, прочтите об условиях, при которых Билл Гейтс и Пол Аллен написали Бейсик для Альтаир 8800.
Если вы хотите сломать барьер, который заставляет компьютеры чувствовать себя волшебными, Я НАСТОЯТЕЛЬНО рекомендую прочитать CODE Чарльза Петцольда и / или Элементы вычислительных систем. Обладая базовыми знаниями программирования, эти чудесно доступные книги помогут вам разобраться в компьютерах сверху донизу. Очевидно, что нельзя получить комп. наука или степень EE после всего 2 книг, но я могу сказать как программист-самоучка, пропустивший формальное обучение: эти книги потрясли мой мир!
Что написал первый компилятор, преобразовавший что-то в двоичные инструкции?
Человек сделал. Прочтите о системе A-0 :
В 1952 году Грейс Хоппер завершила свой первый компилятор для Sperry, известный как A-0. Система A-0 представляла собой набор инструкций, которые могли переводить символьный математический код на машинный язык. Создавая A-0, она взяла все подпрограммы, которые собирала на протяжении многих лет, и записала их на магнитную ленту. Каждой программе был присвоен номер вызова, чтобы машина могла найти его на ленте. «Все, что мне нужно было сделать, это записать набор номеров для звонков, позволить компьютеру найти их на ленте, перенести и внести дополнения. Это был первый компилятор», как описывает Грейс.
Эти программы иногда использовались для обработки текстовых файлов для создания других программ, и были созданы языки программирования вуаля.
Идея состоит в том, чтобы написать очень простой компилятор непосредственно в машинном коде, использовать его для написания более сложного компилятора, использовать второй для создания третьего и так далее, пока вы не получите полнофункциональный компилятор.
За какой компилятор дали «Нобелевку по информатике»
Изобретатели компилятора получат премию Тьюринга и 1 миллион долларов. Погодите, какого такого компилятора?! Их же куча!
Премия Тьюринга — это Нобелевка в сфере информатики и 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 Ахо и Ульман сосредоточились на разработке эффективных алгоритмов для анализа и перевода языков программирования. В то время вычислительные машины были устройствами, с которыми работали небольшие группы математиков и специалистов.
Потом Ахо и Ульман работали в разных компаниях и университетах, но продолжали совместные исследования: написали множество книг и статей, разработали новые подходы к алгоритмам, языкам программирования, компиляторам и программным системам. Вот две их главные книги:
« Разработка и анализ компьютерных алгоритмов»
Классика в сфере компьютерных технологий. Более десяти лет была одной из самых цитируемых книг в своей сфере и до сих пор остаётся главным учебником по алгоритмам во всём мире.
« Принципы проектирования компиляторов»
Подробная книга об устройстве компиляторов. В ней чётко описаны этапы перевода языка программирования высокого уровня в машинный код, эффективные методы лексического анализа, методы синтаксического анализа и генерация кода. Последняя версия книги (2007) остаётся главным учебником по проектированию компиляторов.
«Ахо и Ульман обосновали фундаментальные идеи в области алгоритмов, формальных языков, компиляторов и баз данных. Эти идеи сыграли важную роль в развитии современного программирования и софтверной отрасли. А учебники Ахо и Ульмана стали золотым стандартом для студентов, исследователей и практиков».
Джефф Дин,
старший научный сотрудник Google и старший вице-президент Google AI, отзыв на сайте премии Тьюринга
По сути, именно Ахо и Ульману мы обязаны тем, что компьютеры стали доступны не только узкой горстке математиков и гиков. На основе их книг до сих создаются современные компиляторы, которые переводят программы с высокоуровневых языков в машинный код. Только вдумайтесь: почти всё, что питается от электричества и хоть что-то вычисляет, работает благодаря фундаментальным исследованиям Ульмана и Ахо. Сейчас им уже за 70, но они по-прежнему преданы своему делу, пишут научные работы, преподают и проводят исследования.
Хотите получить премию Тьюринга и разработать теорию суперсовременных компиляторов? Начните с курса из раздела «Программирование» Skillbox.
обложка: Анастасия Телесницкая для Skillbox