Понравилась статья от @aorst о гибридном программировании с типами и ChatGPT
andreyorst.gitlab.io/posts/2…y-around
tl;dr
Описываем на очень-очень высокоуровневом псевдокоде предметную область, а ИИ-помощник синтезирует для нас и доменные модели.
По идее получается, гибко и быстро в написании, à la динамические языки типа Clojure. С другой стороны, ИИ-помощник может написать код и типы для языка довольно низкого уровня, после чего "классический" компилятор оптимизирует программу и выплюнет ещё более быстрый байт-код.
Частично такой синтез типов из кода уже есть, правда не настолько продвинутый. Ниже на скриншотах есть пример как синтезирует type spec эликсировский dialyzer и Copilot. Причём dialyzer - это чисто алгоритмический инструмент, который выводит спецификацию по известным формальным правилам.
Как по мне, это действительно перспективный подход, схожий с парным программированием: один участник генерирует идеи, а другой тут же их прототипирует. Генератор идей корректирует свои концепции, писатель подправляет свой код и так далее.
В общем и целом, своё взаимодействие с ИИ-помощником я вижу вот так: есть код, а сбоку открыта помесь чата и REPLа. Для каждой строки кода я могу открыть свой экземпляр такого REPLа и обсудить её с помощником. И это обсуждение обязательно нужно сохранить в текстовый файлик в систему контроля версий :3
Note: I’m not an expert in type systems, and my knowledge of compilers is limited. This is more of an actual random thought I had for some time, and I’ve just decided to capture it here, not to be used as an argument on static vs dynamic types.