Evgenii Moiseenko
То есть курс по компиляторам условно можно было бы разбить на следущие темы, каждая из которых по-хорошему должна быть отдельным курсом:
1) Парсинг
2) Статический анализ
3) Кодогенерация и платформоспецифичные оптимизации
4) Реализация рантайма, сборка мусора, управление памятью
5) Виртуальные машины
6) Теория ЯП и теория типов
На 1/2 это всё уже есть в рамках одного курса Design Concepts in Programming Languages, где почти всё это разобрано и хорошо структурировано (в отличии от многих учебников). В DCPL не хватает только прагматики: платформеннозависимых оптимизаций, сборки мусора, ВМ. Фактически, всё заканчивается там на SSA-представлениях, откуда можно начинать курс по оптимизациям для конкретных машин.
А, да, парсинга ещё нет во всех его проявлениях. Но, вроде как, других учебников по парсингу предостаточно.
То есть, не нужно делать 6 различных курсов. Хватит 3-ёх.
1. Парсинг (хотя, разве всё ещё не изобретены всевозможные грамматики, которых достаточно?).
2. Теория языков программирования (включая динмическую и статическую семантики, теорию типов, компиляцию в SSA, стратегии вычислений и всё-всё-всё). Но это годовой курс, конечно.
3. ВМ, рантайм, оптимизации.