Система Orphus

Основания языков программирования

Foundations for Programming Languages

Автор: Дж. Митчелл
Издательство: НИЦ "Регулярная и хаотическая динамика"
720 страниц

Материал предоставил: DarkGray
Найти в магазинах

Аннотация

От издателя
Содержание
Комментарии

Аннотация

Если Вы хотите написать или уже пишете свой язык программирования №1 в мире, то стоит заботать данную книгу. Книга большая, очень много математики, читается тяжело, но создание языка программирования №1 - требует жертв. Книга представляет собой теоретическое введение в лямбда-исчисление (основу современных языков программирования). Материал книги использовался при проведении 3-х семестровых курсов в Стэнфорде. Изучение книги позволяет при создании своего языка встать "на плечи гигантов" и переиспользовать опыт по выделению базовых абстракций из которых строятся языки программирования.

От издателя

Книга "Основы языков программирования" написана для студентов старших курсов и аспирантов. В ней используется серия типизированных лямбда-исчислений для изучения аксиоматической, операциональной и денотационной семантики последовательностных языков программирования. По ходу книги происходит постепенное достраивание лямбда-исчисления всё более сложными системами типов. Отличительной чертой данной книги по сравнению с другими работами по данной теме является то, что в ней содержится материал по универсальной алгебре и алгебраическим типам данных, императивным языкам и Флойд-хоаровской логике, а в последних главах рассматриваются полиморфные типы, модули, подтипы и объектно-ориентированные понятия, а также вывод типов. Книга предназначена прежде всего для изучающих математику, но благодаря включению соответствующих вопросов и примеров материал книги доступен и студентам, специализирующимся по системам программного обеспечения, теории вычислительных систем или математической логике.

Книга может использоваться в качестве справочника специалистами, занимающимися языками программирования, проверкой и аттестацией компьютерных программ и программированием, в том числе теми, кто работает с программными модулями или занимается объектно-ориентированным программированием.

Содержание

Содержание
Предисловие редактора перевода
Предисловие

ГЛАВА 1. Введение
1.1. Модель языков программирования
1.2. Лямбда-обозначения
1.3. Уравнения, редукция и семантики
1.4. Типы и системы типов
1.5. Обозначения и математические соглашения
1.6. Введение в теорию множеств
1.7. Синтаксис и семантика
1.8. Индукция

ГЛАВА 2. Язык ПВФ
2.1. Введение
2.2. Синтаксис ПВФ
2.3. ПВФ-программы и их семантики
2.4. ПВФ-редукция и символьная интерпретация
2.5. Примеры ПВФ. Выразительная мощь и ограничения
2.6. Вариации и расширения ПВФ

ГЛАВА 3. Универсальные алгебры и алгебраические типы данных
3.1. Введение
3.2. Предварительный обзор алгебраических спецификаций
3.3. Алгебры, сигнатуры и термы
3.4. Уравнения, корректность и полнота
3.5. Гомоморфизмы и инициальная алгебра
3.6. Алгебраические типы данных
3.7. Системы переписывания термов

ГЛАВА 4. Строго типизированное лямбда-исчисление
4.1. Введение
4.2. Типы
4.3. Термы
4.4. Формальные системы
4.5. Модели Хенкина, корректность и полнота

ГЛАВА 5. Модели типизированного лямбда-исчисления
5.1. Введение
5.2. Модели Скотта и неподвижные точки
5.3. Индукция по неподвижным точкам
5.4. Вычислительная корректность и полная абстракция
5.5. Теоретико-рекурсивные модели
5.6. Отношения частичной эквивалентности и рекурсия

ГЛАВА 6. Императивные программы
6.1. Введение
6.2. while-программы
6.3. Операционная семантика
6.4. Денотационная семантика
6.5. Пред- и постусловия для while-программ
6.6. Семантика дополнительных программных конструктов

ГЛАВА 7. Категории и рекурсивные типы
7.1. Введение
7.2. Декартово замкнутые категории
7.3. Ламбда-модели Крипке и категории функторов
7.4. Модели областей рекурсивных типов

ГЛАВА 8. Логические отношения
8.1. Введение в логические отношения
8.2. Логические отношения на аппликативных структурах
8.3. Результаты теории доказательств
8.4. Частичные сюръективности и особые модели
8.5. Независимость от представления
8.6. Обобщения логических отношений

ГЛАВА 9. Полиморфизм и модульность
9.1. Введение
9.2. Предикативное полиморфное исчисление
9.3. Импредикативный полиморфизм
9.4. Абстрактные типы данных и объемные типы
9.5. Обобщенные произведения, суммы и программные модули

ГЛАВА 10. Подтипы и связанные с ними понятия
10.1. Введение
10.2. Строго типизированное лямбда-исчисление с подтипами
10.3. Записи
10.4. Семантические модели для подтипов
10.5. Рекурсивные типы и модель объектов через записи
10.6. Полиморфизм с ограничениями на подтипы

ГЛАВА 11. Вывод типов
11.1. Введение
11.2. Вывод типов для лямбда> с типовыми переменными
11.3. Вывод типов с полиморфными объявлениями

Комментарии

bravit

Первое и основное впечатление: Непейвода испортил хорошую книгу. Т.е. понятно, что мы должны быть ему (и двоим его аспирантам, выполнившим перевод) благодарны за появление первой книги на русском языке по этой тематике, но его подстрочные примечания отвратительны. Кстати, при личном общении (имел счастье), он производит очень приятное впечатление. Необычные и иногда провокационные суждения приятно послушать, но когда он излагает свою философию прямо в примечаниях к серьёзной книге, это ужасно. В некоторых примечаниях он поправляет автора, ссылаясь на достижения «российской информатики», иногда высказывается по политическим вопросам, порой рассуждает о разнице в менталитетах между русскими и американцами. Примерно в каждом десятом примечании он ругает систему грантов, благодаря которой «милейшие американские учёные» придумывают новые термины и понятия взамен давно существующих старых, при том что у нас в России всё это давно уже было известно. В общем, научный редактор перевода слишком уж одиозен.

Теперь по существу: книжка очень сложная. Для её чтения необходима крепкая подготовка в математической логике (а главное, навыки формальных рассуждений), теории алгоритмов (особенно теории рекурсивных функций), теории категорий. Многие понятия автор вводит, но очень поверхностно и быстро, так что если чего-то заранее не знать, то понятно не будет. Радует, что главы довольно независимы, сам автор пишет, что в книге собран материал для трёх разных курсов: по формальной семантике, по типизированному лямбда-исчислению и теории доменов (вот здесь и нужна теория категорий) и по теории типов. Последняя, впрочем, изложена довольно бегло, поэтому имеет смысл дождаться Пирса. Большая часть результатов даётся в виде упражнений, раздолье хорошему студенту. Много нестрогостей и неясностей (на них указывает Непейвода, зачастую внося ещё большую неопределённость).