Хотите создать собственный язык программирования, но не знаете, с чего начать? Этот практический курс поможет вам шаг за шагом разобраться в ключевых принципах языкового дизайна, создании синтаксиса, разборе структуры кода и построении интерпретатора. Материал подходит как для энтузиастов, так и для разработчиков, которым нужен кастомный DSL или расширение для JavaScript.
Что вы изучите на курсе
Курс последовательно проведет вас по всему пути создания языка — от идеи до реализации и интеграции в рабочий проект.
Базовые концепции языкового дизайна
Как устроены современные языки программирования.
Основы синтаксиса, семантики и проектирования возможностей языка.
Примеры удачных и неудачных решений в реальных языках.
Создание структуры языка
Вы шаг за шагом разберетесь, как превратить исходный код в понятную для компьютера структуру.
Лексический анализ
Разбиение кода на токены.
Определение переменных, функций, операторов и управляющих конструкций.
Построение абстрактного синтаксического дерева (AST)
Понимание структуры программы через AST.
Анализ логики и определение выполняемых действий.
Создание интерпретатора
Вы научитесь писать интерпретатор, который сможет выполнять ваш код и обеспечивать корректную логику работы вашего языка.
Практика и применение
После изучения фундаментальных принципов вы перейдете к использованию своего языка на практике.
Транспиляция в JavaScript
Преобразование вашего языка в JavaScript.
Возможность интеграции в веб‑приложения и существующие проекты.
Расширение JavaScript
Вы также узнаете, как создавать гигиенические макросы, позволяющие расширять и модифицировать возможности JavaScript без нарушения структуры его кода.
Кому подойдет этот курс
Разработчикам, желающим попробовать себя в создании языков.
Тем, кто хочет создать DSL или шаблонный язык для продукта.
Программистам, стремящимся глубже понимать работу парсеров и интерпретаторов.
Энтузиастам, исследующим ReasonML, Elm, CoffeeScript и другие языки.
Удален по просьбе правообладателя
Урок 1.00:07:51
Introduction
Урок 2.00:04:49
Compilers & Interpreters Overview
Урок 3.00:02:43
Course Project
Урок 4.00:02:38
Lexing: Lexical Analysis
Урок 5.00:02:48
Identity Helpers & Lexer
Урок 6.00:11:26
Lexing White Space & Parenthesis
Урок 7.00:07:37
Lexing Numbers & Letters
Урок 8.00:05:35
Lexing Characters & Strings
Урок 9.00:03:50
Internal Representations & ASTs
Урок 10.00:02:30
Steps to Build an AST
Урок 11.00:05:14
Parsing Exercise
Урок 12.00:13:49
Parsing Solution
Урок 13.00:04:14
REPLs
Урок 14.00:02:12
Adding the Standard Library
Урок 15.00:13:55
Evaluating Expressions
Урок 16.00:06:07
Looking Up Identifiers
Урок 17.00:02:23
Adding to the Standard Library
Урок 18.00:08:54
Building the REPL CLI
Урок 19.00:07:23
Running Files from the CLI
Урок 20.00:04:08
Generation & Babel generate
Урок 21.00:05:39
Transformation: Visitor Pattern
Урок 22.00:14:49
Implementing Traverse
Урок 23.00:04:11
Testing Traverse
Урок 24.00:05:18
Transform Practice
Урок 25.00:10:14
Transpiling to JavaScript
Урок 26.00:12:08
Transforming to Variable Declarations
Урок 27.00:03:21
Variable Evaluation
Урок 28.00:06:11
Transpiling Variable Declarations to JavaScript
Урок 29.00:05:02
Parser Generators
Урок 30.00:03:06
Wrapping Up
Авторы - master.dev (ex FrontendMasters), Steve Kinney
Master.dev — это образовательная платформа для разработчиков, которая помогает совершенствовать инженерные навыки: от изучения языков программирования и веб-разработки до работы с базами данных, облачной инфраструктурой, DevOps и искусственным интеллектом. Ранее известная как Frontend Masters, платформа расширила фокус и теперь обучает разработчиков всему спектру современной разработки ПО.
Стив - архитектор фронтенда в компании Temporal. Ранее он занимал аналогичную должность в Twilio и SendGrid. Стив также является основателем и почетным директором программы обучения фронтенд-разработке в Turing School for Software and Design в Денвере, Колорадо — это некоммерческая программа подготовки разработчиков. В прошлой жизни Стив был учителем в государственных школах Нью-Йорка, где он преподавал специальное образование и веб-разработку в