Udemy [Udemy] Язык программирования с LLVM (2023)

  • Автор темы Trinity
  • Дата начала
[Udemy] Язык программирования с LLVM (2023)

ffngQMF.png


Как работают языки программирования под капотом? В чем разница между компилятором и интерпретатором? Что такое виртуальная машина и JIT-компилятор? А в чем разница между функциональным и императивным программированием?

Есть много вопросов, когда речь идет о реализации языка программирования!

Проблема с "курсами по компиляторам" в школе заключается в том, что такие курсы обычно представлены как "тяжелая ракетная наука", которая предназначена только для опытных инженеров.

Более того, классические книги по компиляторам начинаются с наименее значимой темы, такой как лексический анализ, и переходят к теоретическим аспектам формальных грамматик. И к моменту реализации первого модуля Токенизатора студенты просто теряют интерес к теме, не имея возможности начать реализацию собственного языка программирования. И все это распространяется на целый семестр работы с токенизаторами и грамматиками BNF без понимания фактической семантики языков программирования.

Я считаю, что мы должны быть способными создавать и понимать семантику языка программирования от начала до конца за 4-6 часов - с содержанием, направленным прямо на цель.

В курсе мы сосредотачиваемся на компиляции нашего языка в LLVM IR и создаем низкоуровневый язык программирования. Близко работая с инфраструктурой компилятора LLVM, вы поймете, как работает компиляция на более низком уровне и как работают языки производства, такие как C++, Rust и т. д.

Реализация языка программирования также повысит ваш практический уровень в других языках программирования и сделает его более профессиональным.

Предварительные требования

Для этого курса существуют три предварительных требования.


Курс "Язык программирования с LLVM" является естественным продолжением предыдущих курсов - "Построение интерпретатора с нуля" (также известного как "Основы интерпретации"), где мы также создавали полноценный язык программирования, но на более высоком, уровне AST, а также "Построение виртуальной машины". Если у вас уже есть понимание того, как работают языки программирования на этом уровне, то есть что такое eval, замыкание, цепочка областей видимости, окружения и другие конструкции, - вам нужно пройти курс по интерпретаторам как предварительное условие.

Кроме того, чтобы перейти на более низкий уровень (биткод/IR), где работают производственные языки, нам нужно иметь базовый опыт работы с C++. Однако этот класс не о C++, поэтому мы используем только очень базовые конструкции (и переносимые в другие языки).

Для кого этот курс ?

Этот курс предназначен для любого любознательного инженера, который хочет приобрести навыки создания сложных систем (и создание языка программирования - это сложная инженерная задача!) и получить передовые знания для создания таких систем.

Если вы интересуетесь именно LLVM, его инфраструктурой компилятора и способами создания собственного языка, то этот класс также для вас.

Что используется для реализации?

Поскольку низкоуровневые компиляторы ориентированы на производительность, они обычно реализуются на низкоуровневом языке, таком как C или C++. Это именно то, что мы используем, однако в основном базовые функции из C++, не отвлекаясь на особенности C++. Код должен быть легко преобразуемым и переносимым на любой другой язык, например, на Rust или даже более высокоуровневые языки, такие как Python. Использование C++ также облегчает реализацию JIT-компилятора в будущем.

Материал на английском языке

Подробнее:
Скачать:
 

Похожие темы

Trinity
Ответы
0
Просмотры
136
Udemy.com
Trinity
Trinity
Trinity
Ответы
0
Просмотры
300
Udemy.com
Trinity
Trinity