Статическая и динамическая семантика для векторного языка

Программирование сигнальных процессоров (DSP) --- сложная задача, плохо поддающаяся автоматизации. Это связано со спецификой архитектуры таких процессоров, при программировании которых требуется сложное планирование активностей параллельно работающих блоков. Несмотря на то, что DSP уже используются достаточно давно, трансляторы для них с традиционных языков (таких, как С/С++) недостаточно эффективны и сильно уступают по эффективности генерируемого кода ручному программированию на языке ассемблера.

Все темы предполагают работу над "векторным" языком ("array language") --- языком, в котором основным типом данных являются массивы и основные операции предназначены для обработки массивов. Особенностью данного конкретного языка является то, что в нем все данные имеют статический размер и статическое распределение.

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

Требования к студенту

Основным требованием к соискателям является готовность изучать современные подходы в области разработки и реализации языков программирования, компиляции, оптимизирующих преобразований и статического анализа. Желательно также владение основами функционального программирования и дискретной математики; в области практического программирования --- make, bash, git, командная строка unix-систем.

Уровень

2 курс, 3 курс, Бакалаврская ВКР


Руководитель

еще не назначен


Консультант

Булычев Дмитрий Юрьевич


Источник

Софтком