«Конструирование компиляторов», преподаватель — Николай Дмитриевич Кудасов
Одним из самых запоминающихся и сложных предметов для меня стал курс «Конструирование компиляторов». Он открыл мне внутреннюю кухню языков программирования и дал глубокое понимание того, как код, написанный на высокоуровневом языке, в итоге превращается в исполняемую программу.
Особенно интересным оказался блок про сборку мусора: мы подробно разобрали и классические алгоритмы (пометок, подсчета ссылок, копирования), и более продвинутые решения вроде алгоритма Бейкера или инкрементальной сборки. Занятия по многопоточному сборщику мусора для функциональных языков вообще стали настоящим открытием и показали многие нюансы и инженерные решения, о которых я раньше даже не задумывался. Также очень ценными оказались темы, связанные с SSA-представлением и анализом потока данных — это не только про компиляторы, но и вообще про то, как делать программы эффективнее и оптимальнее.
Отдельно хочется отметить подход преподавателя, Николая Дмитриевича Кудасова. Он не просто объяснял материал, а делал акцент на современных исследованиях и часто опирался на свежие научные статьи, что позволило взглянуть на тему с исследовательской точки зрения. Это вдохновляло копаться глубже, читать дополнительные источники и задавать вопросы.
Входной порог на курс далеко не самый низкий: желательно понимать работу памяти и иметь хотя бы базовое представление о компиляторах и устройстве языков программирования, а также функциональном подходе к программированию. Однако даже если вы чего-то не знаете, преподаватель всегда объяснит, направит, порекомендует статьи и другие материалы. В целом курс отлично сочетает теорию, практику и современный взгляд на тему, что и делает его по-настоящему классным, но сложным.