Вайб-кодування

Мініатюра

Що таке вайб-кодування?

Вайб-кодування — це метод програмування на основі ШІ, представлений Andrej Karpathy у 2024/2025 роках. З вайб-кодуванням ви описуєте те, що хочете, природними мовними підказками, і зазвичай великі мовні моделі (LLM) генерують більшу частину, часто весь, робочий код за вас. Якщо маєте час, ознайомтеся з Мистецтвом вайб-кодування, адаптованим Rick Rubin, щоб дізнатися більше про шлях вайб-кодування.

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

Існує багато інструментів, які роблять вайб-кодування плавнішим. Cursor IDE, Claude Code CLI, GitHub Copilot, Loveable, Replit, v0 та інші дозволяють працювати зі ШІ безпосередньо у вашому середовищі або надають спеціалізовані інтерфейси для вайб-кодування. Особисто я переважно використовував Cursor IDE та Claude Code CLI для цих проєктів.

Але ось у чому справа. Ці інструменти та моделі коштують грошей. У традиційному кодуванні ви здебільшого платите часом. З вайб-кодуванням ви платите гаманцем. І якщо ви не знаєте, що робите, ви платите і гаманцем, і часом. Кожен із проєктів на цій сторінці коштував приблизно $10$20 для створення. Це накопичується, якщо ви багато експериментуєте. Я вважаю, що коли ці моделі покращаться та стануть більш ефективними, вартість зрештою знизиться. Поки що це те, про що варто подумати, вирішуючи, чи має сенс використовувати вайб-кодування для вашого проєкту.

Зацікавившись можливостями, я сам спробував вайб-кодування і створив цю сторінку, щоб дослідити сам принцип через реальні проєкти. Я не просто створюю продукти — я тестую й демонструю, на що справді здатне вайб-кодування. Це робиться заради розваги, але дає уявлення про те, як кодування може виглядати в майбутньому, коли ці моделі продовжать покращуватися.

Теорема нескінченної мавпи

Письменник

Чи чули ви про теорему нескінченної мавпи? Це філософський мисленнєвий експеримент, який стверджує, що якби ви дали нескінченній кількості мавп нескінченну кількість друкарських машинок і нескінченний час, зрештою одна з них створила б повні твори Shakespeare, просто випадково стукаючи по клавішах.

Звучить абсурдно, правда? Але ось дивна річ. Вайб-кодування трохи схоже на це, за винятком того, що замість мавп у нас моделі ШІ, замість друкарських машинок — мови програмування, а замість Shakespeare ми отримуємо робоче програмне забезпечення.

Подумайте про це. Великі мовні моделі навчені на мільярдах рядків коду, патернів і прикладів. Коли ви даєте LLM підказку, вона фактично не «обмірковує» вашу проблему покроково, як це робив би людський розробник. Замість цього вона прогнозує наступний найбільш ймовірний токен на основі патернів, які вивчила під час тренування. Це по суті обґрунтовані здогади, генеровані на основі статистики того, що здається правильним.

І якимось чином, частіше ніж ні, це працює. Модель виводить код, який насправді компілюється, запускається і вирішує вашу проблему. Не через розуміння, а через ймовірнісне зіставлення патернів у величезному масштабі. Це як найвитонченіший у світі генератор випадкового тексту, який знайшов «правильну» відповідь. Але тут різниця в швидкості. Тим мавпам знадобиться буквальна нескінченність. Вашому ШІ? Воно дістається туди за секунди або хвилини.

Отже, певною мірою, коли ви використовуєте вайб-кодування, ви використовуєте мільйони рядків кодових патернів, дистильованих у модель, для генерації рішень. Це не свідоме вирішення проблем — це статистична магія. І саме тому воно таке потужне і, чесно кажучи, саме тому розуміння того, що код робить, досі має значення.

Питання важливіше за відповідь

Ось щось важливе, що часто упускають із уваги. Вайб-кодування — це не про те, щоб отримати будь-яку відповідь, це про те, щоб поставити правильне питання. Згадайте суперкомп’ютер Deep Thought з Путівника автостопом по галактиці. Він витратив мільйони років на обчислення відповіді на остаточне питання про життя, всесвіт і все інше, лише щоб дати вам число 42. Відповідь технічно була правильною, але марною, тому що справжня проблема полягала в тому, щоб зрозуміти, яке питання треба було поставити спочатку.

Вайб-кодування працює так само. Ваші підказки — це все, але так само важливе управління контекстом. Нечітка підказка дасть нечіткий код, і якщо ви не надасте потрібні файли, документацію або приклади як контекст, модель не зрозуміє, що вам справді потрібно. Якщо ви — людина, яка розуміє кодування, архітектуру та проєктування систем, ви можете створювати детальні підказки та кураторити потрібний контекст, щоб спрямувати LLM до відмінних рішень. Але якщо ви не знаєте, що просити або який контекст надати, ШІ також не знатиме.

Саме тому вайб-кодування таке потужне для досвідчених розробників. Ми знаємо, як виглядає хороший код, розуміємо підводні камені і можемо писати підказки, які відводять модель від них. Для початківців без технічного бекграунду це стає реальною обмеженням. Ви можете отримати робочий код, але без розуміння того, що пішло не так або що попросити далі — ви застрягли.

Коли вайб-кодування недостатнє

Останні моделі ШІ вражаючі, але вони не панацея. Вайб-кодування може працювати в продакшені, але лише якщо ви серйозно до цього ставитеся. Вам потрібні надійні модульні тести. Вам потрібні чіткі джерела істини для того, що повинна робити ваша система. Вам потрібно помічати, коли щось ламається або відходить від очікувань. І вам потрібний мисленнєвий підхід хакера. Думайте поза рамками і намагайтесь зламати свій вайб-кодований проєкт нестандартними способами. Яких крайніх випадків ви не розглянули? Які вразливості в безпеці хтось міг би експлуатувати? Саме це відрізняє код, який просто працює, від коду, що насправді надійний.

Але річ у тім, що ШІ не володіє вами. Ви володієте ШІ. Не просто приймайте те, що він генерує. Переглядайте це. Тестуйте це. Ламаєте це. І, чесно кажучи, для певних частин вашого коду доведеться повертатися до старої школи програмування. Зафіксуйтеся, подумайте глибоко, напишіть це самі. Вайб-кодування пришвидшує роботу, але воно не заміна справжнього програмування тоді, коли це важливо.

Я також дізнався ще одну річ. Іноді просто потрібно завершити сесію зі ШІ і почати нову. Коли історія вашої розмови стає все більшою й більшою, продуктивність моделі погіршується. Вона робить більше помилок, генерує менш зв’язний код і починає частіше галюцинувати. Якщо ви не помітите цього і не зупинитесь, ці помилки накладаються одна на одну, роблячи ситуацію поступово гіршою. Це як намагатися читати документ, який багато разів фотокопіювали. Починати спочатку допомагає зберегти чистоту і чіткість.

Проєкти, створені за допомогою вайб-кодування

Нижче наведено два проєкти, stairs (репозиторій) та transcendental (репозиторій), які я створив, використовуючи методологію вайб-кодування. Переважно згенеровані з підказок, а ручна робота обмежувалась наданням контексту, налагодженням і розгортанням на GitHub Pages. Це веселі експерименти зі статичними сайтами, які демонструють, що можливо поєднуючи креативні ідеї з кодом через вайб-кодування. Обидва розміщені на GitHub.

Переглянути проєкти

Сходи

Трансцендентальний