Поводом для этой статьи стали неутихающие споры о вайбкодинге. В узком смысле так называют способ создания программ, при котором человек формулирует пожелания на естественном языке, оценивает получившийся результат и направляет модель новыми указаниями, не обязательно изучая созданный код. Этот режим следует отличать от AI-ассистированной разработки, где модель генерирует или изменяет код, но человек сохраняет контроль над архитектурой, проверкой и выпуском продукта. Ниже я рассмотрю оба режима и постараюсь выяснить, что изменилось в создании программного продукта, какие задачи можно передать вычислительной системе и какая ответственность остаётся у человека.
1. Программирование на уровне намерений
Начать следует с определения места вайбкодинга среди уже известных способов создания программ. Сделать это не так просто, поскольку вайбкодинг — не новый язык программирования в привычном смысле. У него нет формальной грамматики, однозначной семантики или собственного исполняющего устройства. Это способ взаимодействия с системой, способной превращать человеческое намерение в программный код.
Историю программирования можно представить как последовательное повышение уровня абстракции. Первые программисты непосредственно задавали машинные команды. Ассемблер заменил числовые коды символическими обозначениями. Языки высокого уровня позволили описывать алгоритмы независимо от конкретной архитектуры процессора. Предметно-ориентированные языки подняли описание ещё выше: вместо алгоритма…