<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Компиляторы on Digitable courses</title>
    <link>https://courses.digitable.life/tags/%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D1%8B/</link>
    <description>Recent content in Компиляторы on Digitable courses</description>
    <generator>Hugo</generator>
    <language>ru-RU</language>
    <lastBuildDate>Sat, 01 Aug 2026 00:12:59 +0300</lastBuildDate>
    <atom:link href="https://courses.digitable.life/tags/%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D1%8B/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>JIT-компиляция: профилирование, горячие пути, деоптимизация</title>
      <link>https://courses.digitable.life/post/compilers/11-jit/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/11-jit/</guid>
      <description>Почему компилятор, работающий во время исполнения, может обогнать статический: счётчики и горячие пути, обратная связь по типам и инлайн-кэши, спекуляции с guard&amp;rsquo;ами, деоптимизация и OSR — с работающим baseline-JIT, трассирующим JIT и настоящей эмиссией машинного кода x86-64 на Python.</description>
    </item>
    <item>
      <title>Абстрактное синтаксическое дерево: представление, обход, паттерн Visitor</title>
      <link>https://courses.digitable.life/post/compilers/03-ast/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/03-ast/</guid>
      <description>Как спроектировать узлы AST, обходить дерево в трёх порядках и не уронить стек, зачем нужен Visitor и почему в языках с алгебраическими типами он не нужен — с работающим AST-интерпретатором языка Mini, который считает fib(10).</description>
    </item>
    <item>
      <title>Виртуальные машины: стековые и регистровые, байткод, интерпретация</title>
      <link>https://courses.digitable.life/post/compilers/09-virtual-machines/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/09-virtual-machines/</guid>
      <description>Второй бэкенд компилятора: как спроектировать набор инструкций, чем стековая машина отличается от регистровой, как устроены кадры, диспетчеризация и представление значений — с работающим компилятором Mini в байткод и двумя виртуальными машинами на Python.</description>
    </item>
    <item>
      <title>Генерация кода: целевые архитектуры, распределение регистров, ABI</title>
      <link>https://courses.digitable.life/post/compilers/08-code-generation/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/08-code-generation/</guid>
      <description>Как оптимизированное IR превращается в машинные инструкции: выбор инструкций и покрытие дерева плитками, анализ живости, распределение регистров раскраской графа и linear scan, вытеснение, System V ABI и устройство кадра вызова — с работающим генератором x86-64 для языка Mini, который собирается ассемблером и линкуется с C.</description>
    </item>
    <item>
      <title>Инструменты языка: LSP, форматтеры, линтеры, отладчики</title>
      <link>https://courses.digitable.life/post/compilers/13-language-tooling/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/13-language-tooling/</guid>
      <description>Почему компилятор-функция не годится для IDE и во что он превращается: протокол LSP до последнего байта заголовка, компилятор как база данных запросов, устойчивый парсер и полное синтаксическое дерево, алгебра документов в форматтере, линтер и цена ложных срабатываний, отладчик через 0xCC и DWARF — с работающим кодом на Python.</description>
    </item>
    <item>
      <title>Компиляторы: карта трека и что происходит между кодом и процессором</title>
      <link>https://courses.digitable.life/post/compilers/00-overview/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/00-overview/</guid>
      <description>Обзор трека: как текст программы превращается в исполняемые инструкции, из каких фаз собран компилятор, чем он отличается от интерпретатора и JIT, и какой маленький язык мы построим за четырнадцать статей — с работающим мини-компилятором уже здесь.</description>
    </item>
    <item>
      <title>Лексический анализ: токены, регулярные языки, свой лексер с нуля</title>
      <link>https://courses.digitable.life/post/compilers/01-lexer/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/01-lexer/</guid>
      <description>Первая фаза компилятора: как поток символов превращается в поток токенов, почему для этого хватает конечного автомата, где проходит граница регулярных языков — и полный рабочий лексер языка Mini на Python со спанами, комментариями, строками и человеческими ошибками.</description>
    </item>
    <item>
      <title>Лямбда-исчисление в живых языках: от Lisp до современных стрелочных функций</title>
      <link>https://courses.digitable.life/post/lambda-calculus/10-in-practice/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/lambda-calculus/10-in-practice/</guid>
      <description>Где именно лямбда-исчисление живёт в языках, на которых вы пишете каждый день: стрелочные функции как абстракции, вызов как бета-редекс, let как сахар, замыкания как оптимизация подстановки, и почему compiler-разработчики до сих пор мыслят термами.</description>
    </item>
    <item>
      <title>Оптимизации: свёртка констант, инлайнинг, устранение мёртвого кода</title>
      <link>https://courses.digitable.life/post/compilers/07-optimization/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/07-optimization/</guid>
      <description>Как компилятор переписывает программу, не меняя её смысла: решётки и анализ потока данных, SCCP, нумерация значений, DCE, инлайнинг и проблема порядка проходов — с работающим оптимизатором на Python, который схлопывает функцию Mini из девяти инструкций в одну.</description>
    </item>
    <item>
      <title>Проверка и вывод типов: системы типов, унификация, Хиндли-Милнер</title>
      <link>https://courses.digitable.life/post/compilers/05-type-checking/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/05-type-checking/</guid>
      <description>Как компилятор доказывает, что программа не сложит число со строкой: суждения типизации, бидирекциональная проверка, унификация с occurs check и полный алгоритм Хиндли — Милнера с let-полиморфизмом — с работающей реализацией на Python.</description>
    </item>
    <item>
      <title>Проектирование языков и DSL: синтаксис, ошибки, эргономика</title>
      <link>https://courses.digitable.life/post/compilers/12-dsl-design/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/12-dsl-design/</guid>
      <description>Язык — это интерфейс: когда свой DSL оправдан, а когда достаточно конфига; как проектировать синтаксис, однозначный и для человека, и для парсера; почему сообщение об ошибке важнее половины оптимизаций — с работающим движком диагностик, подсказками did-you-mean и разбором эволюции языка.</description>
    </item>
    <item>
      <title>Промежуточное представление: IR, SSA, зачем нужен средний слой</title>
      <link>https://courses.digitable.life/post/compilers/06-intermediate-representation/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/06-intermediate-representation/</guid>
      <description>Почему после проверки типов дерево выбрасывают: трёхадресный код, базовые блоки и граф потока управления, доминаторы и фронт доминирования, построение SSA по Cytron и выход из неё — с работающим конвертером AST языка Mini в SSA-форму на Python.</description>
    </item>
    <item>
      <title>Сборка мусора: подсчёт ссылок, mark-sweep, поколения, паузы</title>
      <link>https://courses.digitable.life/post/compilers/10-garbage-collection/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/10-garbage-collection/</guid>
      <description>Как рантайм решает, что память больше не нужна: достижимость против живости, подсчёт ссылок и его циклы, трассирующая сборка и трёхцветный инвариант, копирование по Чейни, поколения и барьеры записи, конкурентные сборщики и природа пауз — с работающим mark-sweep и копирующим сборщиком для ВМ языка Mini.</description>
    </item>
    <item>
      <title>Семантический анализ: области видимости, таблицы символов, разрешение имён</title>
      <link>https://courses.digitable.life/post/compilers/04-semantic-analysis/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/04-semantic-analysis/</guid>
      <description>Фаза, связывающая каждое имя с его объявлением: лексические области видимости, таблица символов, слоты кадра и захват переменных замыканиями, порядок объявлений в разных языках и рабочий резолвер для языка Mini на Python.</description>
    </item>
    <item>
      <title>Синтаксический анализ: грамматики, рекурсивный спуск, приоритеты операторов</title>
      <link>https://courses.digitable.life/post/compilers/02-parsing/</link>
      <pubDate>Thu, 16 Jul 2026 10:00:00 +0300</pubDate>
      <guid>https://courses.digitable.life/post/compilers/02-parsing/</guid>
      <description>Как из плоского потока токенов получается дерево: контекстно-свободные грамматики, BNF, неоднозначность, левая рекурсия, FIRST/FOLLOW, рекурсивный спуск и Pratt-разбор — с полным работающим парсером языка Mini на Python.</description>
    </item>
  </channel>
</rss>
