Вайб-кодинг

Эскиз

Что такое вайб-кодинг?

Вайб-кодинг — это метод программирования с поддержкой ИИ, представленный Andrej Karpathy в 2024/2025 годах. С вайб-кодингом вы описываете, чего хотите, в естественных языковых подсказках, и обычно большие языковые модели (LLMs) генерируют большую часть, зачастую весь, рабочий код за вас. Если у вас есть время, загляните в Искусство вайб-кодинга, адаптированное Rick Rubin, чтобы узнать больше о пути вайб-кодинга.

Одним из больших преимуществ этого нового метода является доступность, поскольку люди без опыта программирования могут создавать проекты, в то время как опытные разработчики могут быстро прототипировать новые идеи перед тем, как полностью в них погрузиться. Это особенно полезно для стартапов. Недостаток в том, что разработчики, скорее всего, не будут полностью понимать, как работает сгенерированный код. Для небольших побочных проектов это приемлемо, но для программного обеспечения уровня продакшн это может привести к долгосрочным проблемам и техническому долгу.

Существует множество инструментов, которые делают вайб-кодинг более плавным. Cursor IDE, Claude Code CLI, GitHub Copilot, Loveable, Replit, v0 и другие позволяют работать с ИИ прямо в вашей среде или предоставляют специализированные интерфейсы для вайб-кодинга. Лично я в основном использовал Cursor IDE и Claude Code CLI для этих проектов.

Но вот в чем дело. Эти инструменты и модели стоят денег. При традиционном кодировании вы в основном платите своим временем. При вайб-кодинге вы платите кошельком. И если вы не знаете, что делаете, вы платите и кошельком, и временем. Каждый из проектов на этой странице стоил примерно $10$20 для создания. Это складывается, если вы много экспериментируете. Я думаю, что по мере улучшения и повышения эффективности этих моделей стоимость в конечном итоге снизится. Пока что это стоит учитывать при принятии решения, имеет ли смысл вайб-кодинг для вашего проекта.

Заинтригованный тем, что возможно, я сам опробовал вайб-кодинг и создал эту страницу, чтобы исследовать сам принцип через реальные проекты. Я не просто создаю продукты, я тестирую и демонстрирую, на что действительно способен вайб-кодинг. Это просто ради удовольствия, но это даёт представление о том, как может выглядеть программирование в будущем по мере улучшения этих моделей.

Теорема бесконечной обезьяны

Писатель

Слышали ли вы о теореме бесконечной обезьяны? Это философский мысленный эксперимент, который гласит, что если дать бесконечному количеству обезьян бесконечные печатные машинки и бесконечное время, в конце концов одна из них создаст полное собрание сочинений Шекспира, просто случайно нажимая клавиши.

Звучит нелепо, верно? Но вот в чем странность. Вайб-кодинг чем-то похож на это, только вместо обезьян у нас модели ИИ, вместо печатных машинок — языки программирования, а вместо Шекспира мы получаем рабочее программное обеспечение.

Подумайте об этом. Большие языковые модели обучены на миллиардах строк кода, шаблонах и примерах. Когда вы даёте модели LLM подсказку, она на самом деле не «обдумывает» вашу задачу шаг за шагом, как это сделал бы человеческий разработчик. Вместо этого она предсказывает следующий наиболее вероятный токен на основе шаблонов, которые она изучила во время обучения. По сути, она делает обоснованные предположения, генерируя код на основе того, что статистически кажется правильным.

И каким-то образом, чаще чем нет, это работает. Модель выдаёт код, который действительно компилируется, запускается и решает вашу задачу. Не через понимание, а через вероятностное сопоставление шаблонов в абсолютно огромном масштабе. Это похоже на то, как будто самый сложный генератор случайного текста во Вселенной нашёл «правильный» ответ. Но здесь разница в скорости. Тем обезьянам потребовалась бы буквальная бесконечность. Вашему ИИ? Несколько секунд или минут.

Так что в некотором смысле, когда вы используете вайб-кодинг, вы используете миллионы строк кодовых шаблонов, дистиллированных в модель, чтобы генерировать решения. Это не осознанное решение задач, а статистическая магия. И поэтому это настолько мощно и, признаюсь, почему понимание того, что на самом деле делает код, по-прежнему имеет значение.

Вопрос важнее, чем ответ

Вот что важно и часто упускают из виду. Вайб-кодинг — это не просто получение любого ответа, это умение задать правильный вопрос. Вспомните суперкомпьютер Deep Thought из «Автостопом по Галактике». Он потратил миллионы лет на вычисление ответа на окончательный вопрос жизни, вселенной и всего такого, чтобы в итоге выдать число 42. Ответ технически был верным, но бесполезным, потому что настоящая проблема заключалась в том, чтобы выяснить, какой вопрос задавать изначально.

Вайб-кодинг работает так же. Ваши подсказки — это всё, но также важна и работа с контекстом. Расплывчатая подсказка даст вам расплывчатый код, и если вы не предоставите правильные файлы, документацию или примеры как контекст, модель не поймёт, что вам действительно нужно. Если вы человек, который понимает программирование, архитектуру и проектирование систем, вы можете составлять подробные подсказки и курировать правильный контекст, чтобы направлять LLM к отличным решениям. Но если вы не знаете, что просить или какой контекст предоставить, ИИ этого тоже не сделает.

Именно поэтому вайб-кодинг так мощен для опытных разработчиков. Мы знаем, как выглядит хороший код, понимаем подводные камни и умеем писать подсказки, которые отводят модель от них. Для новичков без технического бэкграунда это становится реальным ограничением. Вы можете получить рабочий код, но не понимая, что пошло не так или что просить дальше, вы застрянете.

Когда вайб-кодинга недостаточно

Последние модели ИИ впечатляют, но они не панацея. Вайб-кодинг может работать в продакшене, но только если вы серьёзно к этому относитесь. Вам нужны надёжные модульные тесты. Вам нужны ясные источники истины для того, что должна делать ваша система. Вы должны фиксировать, когда что-то ломается или уходит от заданного поведения. И вам нужно мышление хакера. Думайте нестандартно и пытайтесь сломать ваш вайб-кодированный проект неожиданными способами. Какие крайние случаи вы не рассмотрели? Какие уязвимости безопасности кто-то может эксплуатировать? Это то, что отделяет код, который просто работает, от кода, который действительно надёжен.

Но вот что ещё. ИИ не владеет вами. Вы владеете ИИ. Не принимайте просто то, что он генерирует. Просматривайте это. Тестируйте. Ломайте. И честно говоря, для некоторых частей кодовой базы вам придётся вернуться к старой школе программирования. Сосредоточьтесь, думайте глубоко, пишите сами. Вайб-кодинг ускоряет процесс, но он не заменяет реальное программирование там, где это важно.

Я также извлёк ещё один урок. Иногда просто нужно закончить сессию с ИИ и начать новую. По мере того как история ваших разговоров становится всё больше, производительность модели ухудшается. Она делает больше ошибок, генерирует менее связный код и начинает чаще галлюцинировать. Если вы этого не заметите и не остановитесь, эти ошибки накапливаются, делая всё постепенно хуже. Это как читать документ, который много раз копировали на ксероксе. Начать заново — значит сохранить чистоту и остроту.

Проекты, созданные с помощью вайб-кодинга

Ниже приведены два проекта, stairs (repo) и transcendental (repo), которые я создал, используя методологию вайб-кодинга. В основном сгенерированы подсказками, при этом ручная работа ограничивалась предоставлением контекста, отладкой и деплоем на GitHub Pages. Это забавные эксперименты со статическими сайтами, демонстрирующие, что возможно, когда вы сочетаете творческие идеи с кодом через вайб-кодинг. Оба размещены на GitHub.

Просмотреть проекты

Stairs

Transcendental