Если ты всегда мечтал написать свой язык программирования — добро пожаловать. Здесь ты наверняка найдёшь для себя что-нибудь интересное.
GitHub-юзер yawnt собрал чудесную подборку ссылок для любителей драконов, языков и прочих вкусных внутренностей. А знающие камрады в комментариях наверняка поделятся с тобой и другими яствами.
Пишет yawnt следующее:
С каждым днём мне всё интереснее тема компиляторов, интерпретаторов и дизайна языков программирования в целом. И я решил поделиться с народом ссылками на собранные мной материалы (большую часть мне самому ещё предстоит прочитать :<). Надеюсь, кому-нибудь они окажутся полезными.
Я не включил (и не собираюсь) в список ссылки на официальную документацию, т. к. считаю очевидным, что первым делом следует смотреть именно туда ;P.
Всё, конечно же, на английском. Делимся ссылками на русскоязычные материалы (и на существующие переводы перечисленных трудов) в комментариях, господа! Тема безумно увлекательная.
Ссылки
LLVM
- Обсуждение на HN со ссылками на разные туториалы;
- Создание работающего компилятора на LLVM: часть 1, часть 2;
- Глава о LLVM из книги «Архитектура open-source приложений»;
- Описание GHC-бекенда для LLVM;
- Основы и инфраструктура LLVM-компилятора;
- Жизнь инструкции в LLVM;
- LLVM — инфраструктура для многоэтапной оптимизации.
Виртуальные машины
- TerrorVM;
- Виртуальные машины для языков программирования;
- Sol — маленькая солнечная виртуальная машина [картинка выше — отсюда];
- Достаточно быстрая VM за довольно короткое время;
- Виртуальные машины: абстракции и реализации;
- Виртуальная машина для мультиязыкового исполнения;
- Joeq — виртуальная машина и компилятор;
- Черновик спецификации «органической» виртуальной машины Falcon;
- Параллельный планировщик для VM Falcon;
- Куча разных ссылок по языку Self.
Компиляторы
- Проектирование компилятора: теория, инструменты и примеры;
- Создание компилятора;
- Компиляторы и компиляторы компиляторов.
Интерпретаторы
- Как написать lisp-интерпретатор на Python;
- Как написать lisp-интерпретатор на Python ещё круче;
- Создание прототипно-ориентированной объектной модели;
- Реализация правил из «Микроруководства по LISP» на C (спасибо icon за уточнение);
- Крохотные, читабельные интерпретаторы Scheme.
Сборщики мусора
Книги
Компиляторы
Интерпретаторы
Сборщики мусора
Всякий разный код
- LISP.c;
- TinyClojure;
- Прототипная объектная система на функциях;
- TinyVM;
- Homoiconic JS;
- TinyScheme;
- VM и JIT компилятор на стеке;
- MiniScheme;
- Kaleidoscope, написанный на LLVM-C.
Оставайтесь на связи.
Оригинальный пост выложен на github, предлагайте автору ссылки, он добавит их в пост.
Уверен, вы знаете ещё миллиард интереснейших источников информации по заданной теме (например, хороший курс есть на Coursera). Делитесь знаниями!