Специализируюсь на Standard ML — языке из семейства ML, у которого есть строгое формальное определение, а не только реализация. На нём я делаю то, где ошибка стоит дорого: компиляторы, интерпретаторы, анализаторы, встроенные предметные языки и обвязку для формальной верификации. Выбираю инструмент под задачу: SML/NJ, когда важна интерактивная разработка и живой REPL; MLton, когда нужна сквозная оптимизация всей программы и быстрый нативный результат; Poly/ML для больших проектов с отзывчивой средой. Сознательно отделяю это от Haskell, OCaml и F#: у Standard ML своя школа — алгебраические типы, полное сопоставление с образцом и система модулей из структур, сигнатур и функторов, вокруг которой и строится крупная архитектура.
Что именно я делаю: перевожу грамматику и семантику в аккуратный код. Проектирую абстрактное синтаксическое дерево, пишу лексер и парсер, реализую вывод и проверку типов, проходы элаборации, понижение до промежуточного представления, генерацию или интерпретацию. Стараюсь, чтобы недопустимое состояние вообще нельзя было выразить в типах — тогда часть багов отсекается компилятором, а не тестами. Где корректность нужно доказать, подключаю пруверы и средства спецификаций, пишу эталонные интерпретаторы и тесты на свойствах, фиксирующие поведение однозначно.
Готов подключиться к исследовательской группе или к команде, унаследовавшей зрелую SML-кодовую базу: разберу чужие функторы и сигнатуры, добавлю функциональность, не ломая границы абстракций, и опишу логику решений так, чтобы её было легко продолжить. Сформулируйте язык, инвариант или конкретный проход — верну понятный, типобезопасный и хорошо структурированный Standard ML.
— Компиляторы и интерпретаторы: SML/NJ, MLton, Poly/ML
— Лексический и синтаксический разбор, проверка и вывод типов
— Архитектура на модулях: структуры, сигнатуры, функторы
— Встроенные и предметные языки под задачу заказчика
— Эталонные интерпретаторы и тестирование на свойствах
— Верификация, спецификации, работа с системами доказательств
— Сопровождение и рефакторинг существующего кода на Standard ML
Что именно я делаю: перевожу грамматику и семантику в аккуратный код. Проектирую абстрактное синтаксическое дерево, пишу лексер и парсер, реализую вывод и проверку типов, проходы элаборации, понижение до промежуточного представления, генерацию или интерпретацию. Стараюсь, чтобы недопустимое состояние вообще нельзя было выразить в типах — тогда часть багов отсекается компилятором, а не тестами. Где корректность нужно доказать, подключаю пруверы и средства спецификаций, пишу эталонные интерпретаторы и тесты на свойствах, фиксирующие поведение однозначно.
Готов подключиться к исследовательской группе или к команде, унаследовавшей зрелую SML-кодовую базу: разберу чужие функторы и сигнатуры, добавлю функциональность, не ломая границы абстракций, и опишу логику решений так, чтобы её было легко продолжить. Сформулируйте язык, инвариант или конкретный проход — верну понятный, типобезопасный и хорошо структурированный Standard ML.
— Компиляторы и интерпретаторы: SML/NJ, MLton, Poly/ML
— Лексический и синтаксический разбор, проверка и вывод типов
— Архитектура на модулях: структуры, сигнатуры, функторы
— Встроенные и предметные языки под задачу заказчика
— Эталонные интерпретаторы и тестирование на свойствах
— Верификация, спецификации, работа с системами доказательств
— Сопровождение и рефакторинг существующего кода на Standard ML