Автор | Дэниел П. Фридман , Митчелл Ванд , Кристофер Т. Хейнс |
---|---|
Предмет | Языки программирования |
Жанр | Учебник |
Издатель | Издательство Массачусетского технологического института |
Дата публикации | Апрель 2008 г. (3-е изд.) |
Страницы | 416 |
ISBN | 0-262-06279-8 (3-е изд.) |
Класс LC | QA76.7 .F73 2008 |
«Основы языков программирования» ( EOPL ) — учебник по языкам программирования, написанный Дэниелом П. Фридманом , Митчеллом Уондом и Кристофером Т. Хейнсом.
EOPL рассматривает принципы языков программирования с точки зрения эксплуатации. Он начинается с интерпретатора в Scheme для простого функционального базового языка, похожего на лямбда-исчисление , а затем систематически добавляет конструкции. Для каждого добавления, например, назначения переменных или потокоподобного управления, книга иллюстрирует увеличение выразительной силы языка программирования и спрос на новые конструкции для формулировки прямого интерпретатора. Книга также демонстрирует, что систематические преобразования, скажем, стиль передачи хранилища или стиль передачи продолжения , могут исключить определенные конструкции из языка, на котором сформулирован интерпретатор.
Вторая часть книги посвящена систематическому переводу интерпретатора(ов) в регистровые машины . Преобразования показывают, как устранить замыкания высшего порядка; объекты продолжения; рекурсивные вызовы функций; и многое другое. В конце читатель остается с «интерпретатором», который не использует ничего, кроме хвостовых рекурсивных вызовов функций и операторов присваивания плюс условные операторы. Становится тривиальным перевести этот код в программу на языке C или даже в программу на ассемблере. В качестве бонуса книга показывает, как предварительно вычислять определенные части «смысла» и как генерировать представление этих предварительных вычислений. Поскольку это суть компиляции, книга также готовит читателя к курсу по принципам компиляции и языкового перевода, связанной, но отдельной теме. Помимо текста, объясняющего ключевые концепции, книга также содержит ряд упражнений, позволяющих читателям исследовать альтернативные конструкции и другие вопросы. [1]
Как и SICP , EOPL представляет собой значительный отход от преобладающего подхода учебников в 1980-х годах. В то время книга о принципах языков программирования представляла от четырех до шести (или даже больше) языков программирования и обсуждала их идиомы программирования и их реализацию на высоком уровне. Наиболее успешные книги обычно охватывали ALGOL 60 (и так называемое семейство языков программирования Algol), SNOBOL , Lisp и Prolog . Даже сегодня довольно много учебников по языкам программирования представляют собой именно такие обзоры, хотя их сфера применения сузилась.
EOPL был начат в 1983 году, когда Индиана была одним из ведущих факультетов в исследовании языков программирования. Юджин Кольбекер, один из аспирантов Фридмана, расшифровал и собрал его «311 лекций». Другие преподаватели, включая Митча Ванда и Кристофера Хейнса, начали вносить свой вклад и превратили «Путеводитель по Мета-Вселенной для автостопщиков» — как назвал его Кольбекер — в систематический, основанный на интерпретаторах и преобразованиях обзор, которым он является сейчас. За 25 лет своего существования книга стала почти классической; сейчас она находится в третьем издании, включая дополнительные темы, такие как типы и модули . Ее первая часть теперь включает идеи по программированию из HtDP , еще одного нетрадиционного учебника, который использует Scheme для обучения принципам проектирования программ. Авторы, а также Мэтью Флэтт , недавно предоставили плагины DrRacket и языковые уровни для обучения с помощью EOPL.
EOPL породил по крайней мере два других связанных текста: «Lisp in Small Pieces » Квиннека [ 2] и «Языки программирования: применение и интерпретация» Кришнамурти .