Вашему вниманию предлагается электронный курс, из которого вы узнаете, как написать компилятор. Узнаете, с чего начинать, если вы хотите написать свой язык программирования. Узнаете, что какая магия происходит, когда вы нажимаете build в вашей любимой IDE. Узнаете, как компилятор понимает, что вы написали в исходнике. Узнаете, почему разные компиляторы генерируют код с разным быстродействием, и как помочь компилятору сделать быстрый код. Узнаете, почему Java медленнее, чем C, и как производительность JavaScript увеличилась на порядки. Я постараюсь показать, что сев за компьютер или взяв планшет в руки вы неизбежно сталкиваетесь с компиляторами, и что понимая теорию компиляции вы можете изменить свою жизнь к лучшему.
Работа над курсом не завершена. Каждую пятницу курс расширяется. Следите за обновлениями.
Для просмотра теории установка не требуется. Вы можете открыть первую страницу учебника в любимом браузере и погрузиться в теорию. Для выполнения лабораторных работ вам потребуется установить некоторые программы, но не беспокойтесь, курс основан на бесплатном программном обеспечении:
- Вам потребуется JDK, его можно скачать здесь.
- Если у вас нет бороды и свитера, то вероятно вам будет легче писать код в одной из IDE: IntelliJ IDEA, NetBeans или Eclipse.
- Для генерации синтаксического анализатора нам потребуется ANTLR, загрузите, также плагин для выбранной вами IDE.
- Для генерации байткода нам потребуется библиотека ASM.
Если вы не знаете, как установить что-то из вышеперечисленного, не волнуйтесь, мы вернемся к установке, когда нам потребуется что-то из этого программного обеспечения.
Проходить курс рекомендуется в порядке, указанном в этом документе. Курс содержит примеры решения типовых задач теории компиляторов, вы можете использовать этот код в своих проектах. Загрузить все исходники можно командой
git clone https://github.com/alepoydes/writing-compiler-for-neophytes.git
Вместе мы можем сделать курс лучше. Вы нашли ошибку, вам есть, что добавить, или у вас есть предложение? Создавайте сообщение на Issue Tracker, или пишите на почту lobanov.igor@gmail.com.
- Лобанов Игорь Сергеевич lobanov.igor@gmail.com
Учебник и код могут быть свободно использованы в некоммерческих целях при условия сохранения ссылок на авторство. По вопросам коммерческого использования обращайтесь по адресу lobanov.igor@gmail.com.