Современные языковые модели прекрасно умеют выплевывать куски кода, когда их об этом попросят. Зачастую эти куски даже работают и делают то, что нужно.
Эксплуатацию этого явления программистами уже не остановить. ИИ‑автокомплит теперь неотъемлемая часть программирования — наравне с обычным автокомплитом и линтером.
Впрочем, сравнивать стоит скорее с подрезанием готового кода на Stack Overflow. Кстати, трафик этого кладезя знаний уже вошел в крутое пике — именно благодаря вездесущим LLM.
Пользу языковых моделей признают и некоторые мастодонты кодинга. Вот, например, недавний твит Джона Кармака:
ИИ‑программирование часто используется для генерации большого объема кода, который нередко принимается бездумно. Но похоже, у ИИ есть не меньше потенциала и для того, чтобы делать кодовую базу красивее.
Поддерживать код в хорошем состоянии или распутывать клубок старого хаоса требует усилий… и неутомимый ИИ‑помощник, который постоянно просматривает код и предлагает улучшения, может быть очень полезен. ИИ — как прилежный член команды, а не волшебник, исполняющий желания.
Как видишь, среди похвалы есть и наезд: Кармак осуждает «бездумное применение большого объема сгенерированного кода». А это, друзья мои, и есть наш вайбкодинг.
При некоторой изворотливости LLM можно использовать, чтобы писать код вообще без знаний о языке. Точно так же, как диффузионные модели позволяют «рисовать», не притрагиваясь к инструментам.
Да, такой код часто потом не работает, но вайбкодер, раскачиваясь под классную музычку, шлет ошибку и трейс обратно модели и требует починить. Если прокатило, то можно просить новую фичу, и она тоже появится как по волшебству.
Совру, если скажу, что сам никогда так не делал. Например, прошлая колонка была проиллюстрирована картинкой, где золотой ZX Spectrum стоит на пьедестале. Она, между прочим, сделана по всем правилам спектрум‑арта.
info
ZX Spectrum имел интересное ограничение: при наличии восьми цветов и двух уровней яркости, в квадрате 8 на 8 пикселей могло присутствовать только два разных цвета. Отсюда и квадратики на сконвертированных картинках. Настоящие художники‑спектрумисты умеют ловко избегать этого эффекта.
Сначала я пытался выпросить что‑то в духе «Спектрума» у ChatGPT, но быстро разочаровался: соблюдать такие четкие правила при генерации картинок он, конечно, не умеет.
Зато нейронка может накатать несколько сот строк на Python, которые будут конвертировать любую картинку в формат ZX Spectrum. Хоть записывай на кассету и смотри на ЭЛТ‑телевизоре!


При этом я не объяснял ни что такое ZX Spectrum, ни какая у него палитра, не давал примеров формата SCR — все это LLM уже знает и бодро выдает готовый конвертер строчка за строчкой.
Глядя на результаты, я подумал: выходит в целом ничего, но вот бы еще вручную подкручивать порог, при котором какой‑то оттенок переходит в целевой цвет палитры ZX Spectrum...
Сказано — сделано! Еще пара запросов, и у меня есть GUI: крутишь ползунки и сразу смотришь, что получится.

Можно ли так делать код для продакшена? Да нет, конечно! Даже если все запустится, это прямая дорога в ад.
Ты обязательно нарвешься на баги, проблемы с масштабируемостью и безопасностью. При этом программа быстро раздуется настолько, что нейронка сама перестанет в ней ориентироваться. В этот момент весь «вайбкод» нужно выкинуть на помойку и делать всё заново — по‑человечески.
В принципе, на этом дискуссию можно закрывать — как минимум до тех пор, пока модели не выйдут на принципиально новый уровень. Но я все же вижу случаи, когда вайбкодинг — не совсем безумная затея.
В одной из предыдущих колонок я уже защищал казуальное умение кодить — с целью лучше управлять компьютером, а не создавать продукты.
Например, если у тебя есть трактор, хорошо бы уметь на нем пахать, а не только кататься. Ну а в случае с компьютером — заставлять машину делать рутинные операции в цикле.
У «вайбкодинга», на мой взгляд, огромный потенциал именно в создании инструментов, которые выполняют одну задачу для одного пользователя. Думаю, ты много раз сталкивался с ситуациями, когда нужно по‑быстрому что‑то наколхозить для решения сиюминутной проблемы. И тут я могу привести далеко не только экзотические примеры про ZX Spectrum.
По работе у меня то и дело возникают задачи, связанные с манипуляцией данными. Скажем, подключиться к базе и сделать какой‑то запрос, отсортировать результаты, сохранить как JSON, отфильтровать так и этак по одним полям, что‑то поискать в других регулярками, соскрэпить что‑то с веба, составить статистику и так далее.
Все это требует несложного, но утомительного кодирования. Каждый второй скрипт делает одно и то же: чтение данных откуда‑то, итерация по ним, проверка какого‑то условия, сохранение.
С LLM можно не писать все циклы и условия, а только показать, как выглядит ввод, описать вывод и перечислить условия сортировки. Остальное компьютер делает сам, и в большинстве случаев в код действительно можно не вчитываться — по результатам работы и так всё ясно.
То есть то, для чего раньше нужно было разбираться со скриптовым языком и писать программу, теперь делается простым описанием на естественном языке. И это очень серьезный и важный сдвиг в компьютинге.
Больше не обязательно с трудом вспоминать ключи к развесистым программам вроде ImageMagick, youtube-dl или FFmpeg. Заодно можно спокойно забыть синтаксис jq и XPath.
Только не подумай, что я кого‑то отговариваю учиться кодить. «Не обязательно» не значит «не нужно». Чтение мануалов по языкам — это по‑прежнему прекрасное вложение времени и сил, даже если цель — программировать с помощью LLM.
Если человек способен прочитать код, выдаваемый ИИ, ему открываются качественно другие возможности. При минимальных архитектурных навыках можно заставить нейронку написать тысячи строк рабочего кода, а не сотни.
Проси небольшие функции с понятным входом и выходом, заставляй модель использовать типизацию и писать докстринги (если речь о Python), требуй понятные датаклассы вместо структур, и вместе сможете делать намного более мощные инструменты.
А еще из нейронки всегда можно извлечь не только готовый код, но и ценные знания. Попалась неизвестная конструкция? Проси объяснить и показать на примерах. Не знаешь, как лучше сделать? Запроси варианты со сравнением. Есть подозрение, что код багованный? Докопайся, и будешь знать больше.
Короче, от вайбкодинга — к вайблернингу!