Как написать свой язык программирования

Workshop Мастер-класс Целый день Вячеслав Слинько Make Lang + Good Code(зал №9) :   Jun 18 10:00
Вячеслав Слинько
Веб разработчик вот уже 10 лет. Начинал по классике, с бекенда на PHP. Постепенно расширял кругозор: пробовал разные языки и технологии, занимался DevOps и поднимал сервера, управлял проектами и собирал команды. Последние 4 года акцентирую свое внимание на front-end и на работе с командами. Работаю в компании ЦИАН руководителем группы front-end разработки.

Разрабатывал транспиляторы для ES6, когда babel еще не существовал. Создавал собственные языки программирования (на поиграть) и DSL (для работы). Сейчас работаю над оптимизирующем компилятором для React и TypeScript.

У каждого программиста рано или поздно появляется желание создать собственный язык программирования :-) У меня это желание появилось несколько лет назад и тогда я не знал с чего начать.

На этом мастер-классе я хочу концентрированно поделиться своим опытом и показать вам на примерах, как сделать так, чтобы из исходного кода придуманного вами языка получилась работающая программа.

После мастер-класса вы будете обладать всеми знаниями, чтобы быстро продолжить свое погружение в удивительный и интересный мир языков программирования. Также эти знания позволят вам лучше понимать то, что происходит под капотом у тех языков программирования, которые вы используете каждый день.


На мастер-классе мы создадим простейший интерпретируемый язык и пройдем через несколько этапов:

- Как прочитать исходный файл (токенизация);
- Как понять, что написано в исходном файле (парсинг);
- Как из исходного файла сделать исполняемый код (компиляция);
- Как запустить исполняемый код (интерпретация).

Бонус темы:
- Как оптимизировать исполняемый код (оптимизация);
- Как проверить валидность кода (статический анализ).

В работе будем использовать JavaScript, потому что это самый общеизвестный язык программирования в веб отрасли. Подготовьтесь заранее и установите себе на компьютер стабильную LTS версию Node.js (>=6.10.0 <7.0.0).
Постоянная ссылка на доклад: https://devconf.ru/offer/311