Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Компиляторы

1. Альфред Ахо — Компиляторы. Принципы, технологии, инструменты (Dragon Book)

  • Что изучаем:

    • Основы лексического, синтаксического и семантического анализа.
    • Построение деревьев разбора, абстрактного синтаксического дерева (AST).
    • Оптимизация кода, генерация промежуточного представления и машинного кода.
    • Принципы работы синтаксических анализаторов (парсеров), сканеров, компиляторов целиком.
  • Что получаем:

    • Глубокое понимание как язык программирования превращается в исполняемый код.
    • Навыки проектирования простого компилятора или интерпретатора.
    • Основы для изучения языков программирования и инструментов анализа кода.

2. Вирт Н. — Построение компиляторов (Классика программирования, 2010)

  • Что изучаем:

    • Практический подход к построению компилятора для учебного языка (например, Pascal или Modula-2).
    • Разбор пошаговой генерации кода от исходного текста до исполняемого файла.
    • Внимание к деталям, которые упрощают учебное понимание компиляторов.
  • Что получаем:

    • Понимание принципов построения компиляторов “с нуля” на практике.
    • Возможность экспериментировать с собственными мини-языками или интерпретаторами.
    • Хорошая база для более сложных систем компиляции или анализа исходного кода.

Итог по разделу “Компиляторы”:

КнигаЧто изучаемПрактическая польза
Ахо — КомпиляторыЛексический и синтаксический анализ, AST, генерация кода, оптимизацияПонимание устройства компилятора, основ построения интерпретаторов
Вирт — Построение компиляторовПошаговое построение компилятора для учебного языка, практический подходОпыт реализации компилятора и тестирование языковых конструкций

Главный эффект: После прочтения этого раздела у тебя будет:

  • Полное понимание процесса трансляции исходного кода в исполняемый.
  • Навыки создания собственного компилятора или интерпретатора.
  • Базовое понимание структур и алгоритмов, лежащих в основе современных языков программирования.