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