Описание услуги
Я пишу программы на языке Oz — мультипарадигменном языке системы Mozart — и отношусь к парадигмам как к инструментам, а не как к догмам. В рамках одной программы я свободно перехожу между функциональным вычислением, реляционной логикой, распространением ограничений и потоковой (dataflow) конкурентностью, выбирая ту модель, которая делает конкретную часть задачи ясной и корректной. Это иной способ разработки, чем привычное императивное кодирование, и он окупается именно там, где обычные подходы буксуют: в задачах поиска, планирования, конфигурирования, символьных рассуждений и в прототипах языковых идей.
Большая часть моей работы связана с constraint-программированием и поиском. Я моделирую задачу переменными конечных областей, выражаю правила через пропагаторы и управляю решателем собственными стратегиями распределения и ветвления, чтобы огромные комбинаторные пространства оставались обозримыми. В Oz конкурентность встроена в язык через логические переменные и dataflow-синхронизацию: это позволяет строить чистые конвейеры «производитель-потребитель», агентов и лёгкие потоки без обычной боли с блокировками. Я уверенно рассуждаю о детерминизме, инкапсулированном поиске и о тонком взаимодействии ленивости, портов и ячеек, которое и даёт Oz его выразительность.
Помимо решения задач, я использую Oz для обучения и поддержки исследований. Я помогал студентам и исследователям разбираться в идеях книги «Concepts, Techniques, and Models of Computer Programming», превращая сложные понятия о состоянии, конкурентности и декларативном вычислении в запускаемые примеры с подробными комментариями. Могу перенести алгоритм из статьи в Oz, сравнить альтернативные стратегии распределения по производительности или обернуть компонент Mozart для связи с внешним миром. Если у вас есть задача, которая «пахнет» поиском, ограничениями или изящной конкурентностью, честно скажу, подходит ли для неё Oz.
— Моделирование конечных областей и ограничений с собственными пропагаторами
— Инкапсулированный и параллельный поиск, стратегии распределения и ветвления
— Dataflow-конкурентность, логические переменные, потоки, порты и агенты
— Функциональное и реляционное программирование в одной кодовой базе
— Поддержка обучения по мультипарадигменным идеям в духе CTM
— Прототипирование языковых возможностей и символьные вычисления в Mozart
Большая часть моей работы связана с constraint-программированием и поиском. Я моделирую задачу переменными конечных областей, выражаю правила через пропагаторы и управляю решателем собственными стратегиями распределения и ветвления, чтобы огромные комбинаторные пространства оставались обозримыми. В Oz конкурентность встроена в язык через логические переменные и dataflow-синхронизацию: это позволяет строить чистые конвейеры «производитель-потребитель», агентов и лёгкие потоки без обычной боли с блокировками. Я уверенно рассуждаю о детерминизме, инкапсулированном поиске и о тонком взаимодействии ленивости, портов и ячеек, которое и даёт Oz его выразительность.
Помимо решения задач, я использую Oz для обучения и поддержки исследований. Я помогал студентам и исследователям разбираться в идеях книги «Concepts, Techniques, and Models of Computer Programming», превращая сложные понятия о состоянии, конкурентности и декларативном вычислении в запускаемые примеры с подробными комментариями. Могу перенести алгоритм из статьи в Oz, сравнить альтернативные стратегии распределения по производительности или обернуть компонент Mozart для связи с внешним миром. Если у вас есть задача, которая «пахнет» поиском, ограничениями или изящной конкурентностью, честно скажу, подходит ли для неё Oz.
— Моделирование конечных областей и ограничений с собственными пропагаторами
— Инкапсулированный и параллельный поиск, стратегии распределения и ветвления
— Dataflow-конкурентность, логические переменные, потоки, порты и агенты
— Функциональное и реляционное программирование в одной кодовой базе
— Поддержка обучения по мультипарадигменным идеям в духе CTM
— Прототипирование языковых возможностей и символьные вычисления в Mozart