«It’s over»: Лінус Торвальдс випробував вайб-кодинг

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Лінус Торвальдс, творець Linux і Git, несподівано вирішив долучитися до лав «вайбкодерів». Цього тижня він оприлюднив на GitHub новий open‑source проєкт AudioNoise, у якому частину коду створено за допомогою славнозвісного vibe coding.

Проєкт опублікований під GPLv2 і містить набір простих цифрових аудіоефектів, натхненних його хобі — розробкою ефект‑педалей для гітари. Основна частина логіки, включно з фільтрами та ефектами обробки сигналу, написана власноруч мовою C, але Python‑скрипт для візуалізації аудіосемплів був здебільшого згенерований AI‑інструментом від Google — Antigravity.

У README репозиторію Торвальдс каже:

«Зверніть увагу, що інструмент візуалізації на Python фактично написаний через vibe‑coding. Я знаю про аналогові фільтри більше, ніж про Python, і спочатку робив так, як зазвичай — „гуглив і робив по прикладу“. Але потім я прибрав посередника — себе — і просто використав Google Antigravity для створення візуалізатора».

Реакція спільноти

Після публікації AudioNoise репозиторій швидко набрав сотні зірок на GitHub та викликав жваву реакцію у соцмережах і форумах. Вайбкодинг зараз дуже популярний серед розробників, незалежно від тайтлу та посади, але водночас не варто забувати, що важливо розуміти те, як працює код, згенерований ШІ, особливо якщо ви плануєте додавати його на прод :)

Нагадаємо, що раніше Лінус Торвальдс сказав, що позитивно відноситься до ідеї вайбкодингу.

👍ПодобаєтьсяСподобалось7
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Все нормально. Всі через це проходять. Пару великих проєктів «навайбкодить», поматюкається разів 10 від «вибачте, от так точно правильно», і відпустить.

Автор не прав.
Головна фішка вайб колінгу — не розбиратися і взагалі нічого не розуміти в згенерованому коді.

Ну то й що, я вайбкукiнг спробував.
Поклав грудинку гусака в духовку, у процесi фоткав та кидав в модель, яка давала правки, додати температуру, пiдняти трохи вище i т.п. Смачно вийшло

Це той самий Лінус, який принципово забороняв мержити дебагер в ядро, тому що «користуючись дебагером люди фіксять баги без розуміння коду».
Ех, пішла епоха (

Та ваще не має дебагу. ГОЛО!

— KGDB
— kprobes/uprobes
— ftrace / perf
— lockdep, KASAN, KCSAN, KMEMLEAK і ще купа інших інструментів дебагу.

мержити дебагер в ядро

!= ваще не має дебагу.

Це все — частина ядра.

Чи той... розумник думав, що дозволять якийсь IDE дебагера в ядро втягнути? :-D Я б теж одразу на звук бив тому, хто таке запропонує :-D

чекаємо на нову версію linux — зібрану виключно AI

Цікаво скільки google заплатив Лінусу за таку гарну рекламу їхнього продукту)

написана власноруч мовою C

Ну якщо то сішечка написана саме торвальдсом, то скажу так, по міркам сішників торвальдс ще той гівнокодер. У нього там UB на UB і UB поганяє, а ще чогось весь його код написаний в різних стилях, наче саме сішка писалась вайбкодінгом.

Це так і є. Прод пишеться руками. А ось всякі тести, допоміжні скрипти, якісь майже одноразові тулзи — вже майже на 100% — AI. Зберігає просто уйму часу.

Якось фіолетово якшо чесно. Він вже давно думає про вихід на пенсію, і я не думаю, що йому є діло до того, хто і що подумає про використання ним LLM/AI assistant.

Я б взагалы не писав на DOU на цей рахунок, бо виглядаэ як хайп посту заради хайпу, і то більше як facepalm.

Я б взагалы не писав на DOU на цей рахунок, бо виглядаэ як хайп посту заради хайпу, і то більше як facepalm.

Це ж ДОУ — тут 80% статей/постів «хайп заради хайпу».

Ми не можемо використовувати термін «вайбкодинг» як синонім «генерація коду за допомогою ШІ», чи «AI-assisted розробка», бо це різні речі. Адже вайбкодинг в оригінальному значенні не передбачає (та навіть забороняє) розуміння згенерованого коду. Вайбкодинг не передбачає навіть код рев’ю, не кажучи вже про розуміння архітектури побудови застосунків.

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

Наприклад, Вікіпедія, пояснюючи підхід, прямо каже:

На відміну від традиційного AI-assisted coding або парного програмування, розробник-людина уникає перевірки коду, приймає запропоновані штучним інтелектом доповнення без людської перевірки і більше зосереджується на ітеративному експериментуванні, ніж на правильності або структурі коду.

Тобто, вайбкодинг чітко протиставляється AI-assisted coding, обидва терміни вербалізуються напроти один одного. Обидва використовують AI-generated code — термін що описує джерело походження коду, тобто технічний бік процесу.

А також:

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

Повертаючися до Лінуса, чи ми дійсно вважаємо, що він просто використав згенерований код без жодного розуміння, як він працює та тестував лише фінальну роботу програми? Віддавався вайбу ідей, тоді як код на 100% довіряв «ШІ»? Адже лише це може називатися вайбкодингом.

Відкритим залишається запитання, чи можна казати про вайбкодинг одного компонента, всередину якого розробник справді не зазирав, але який інтегрувався з низкою інших, які він писав сам або робив їх рев’ю та продумував загальну архітектуру? Я б не остерігався використання терміну вайбкодинг навіть у цьому випадку, бо ніякої користі це не дає, а лише заплутує.

Подивився у репозиторій. 18 коммітів, 11 з них про trial and error чи інкрементне прототипування для візуалізації, 1 про стартовий комміт, 3 про тюнінг бізнес логіки, 3 про форматування оформлення репозиторію.
Тобто LLM генерація візуалізації зайняла 11 комміттів для людини яка є ключовим інженером у світі. І додатково, успіх vibe coding тут є завдяки тому що це новий проект з нуля. Я би подивився скільки ітерацій trial and error було би у проєкті на 100,000+ рядків.
Чи змогла би це зробити людина з меншим левелом та за скільки коммітів?
Напевно це вже є варіантом роботи, але питання — чи став би Лінус — Лінусом якщо б це був його стартовий підхід до роботи зараз?

Думаю, можна стверджувати, що ні — Лінус не став би Лінусом в описаному ймовірному сценарії. Взагалі апеляції до наявної кваліфікації розробника є максимально коректною та корисною для розуміння ролі «ШІ» та тому, чому Лінус помилився, використавши у README термін «вайбкодинг» (вочевидь, під впливом популярного тлумачення, що відчутно відійшло від оригінального значення та підходу, що його запропонував та описав Карпати).

Лінус точно не вайбкодив у цьому популярному сенсі. Але використовував генерацію коду моделлю. Нам залишилося визначилися з правильною назвою такого підходу, бо називаючи все «вайбкодингом», ми виплескуємо з водою дитину — кваліфікацію фахівця, що погано.

Адже вайбкодинг в оригінальному значенні не передбачає (та навіть забороняє) розуміння згенерованого коду. Вайбкодинг не передбачає навіть код рев’ю, не кажучи вже про розуміння архітектури побудови застосунків.

Це твоє розуміння і певної аудиторії ДОУ. Ви самі в голові придумуєте міфи, а потім з розумним лицем розвінчуєуте ці міфи.

А ось оригінальне визначення від Карпати хто ввів термін:

There’s a new kind of coding I call «vibe coding», where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It’s possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good.

Він нічого не говорить про розуміння, код ревью, архітектуру. Він говорить генерацію архітектури, коду, змін в коді з допомогою промта. Що не забороняє потім правити код, чи дописувати руками, чи генерувати код в певних місцях в певних модулях. Він, Карпати, сам багато вайбкодить, і пише про це називаючи вайбкодингом, по вашому він код не розуміє? архітектуру? роуками взагалі нічого не пише?

Короче, не придирайтесь до термінів. Простіше в народі сказати «навайбкодив проект» (якщо хоча б половина проекту таки згенерована) ніж «написав проекти с використанням інструментів автоматичної генерації коду побудованих поверх LLM моделей». Перше всі зрозуміють, ну крім зануд типу тебе :), а вот друге зрозуміють одиниці.

forget that the code even exists
Що не забороняє потім правити код, чи дописувати руками

/0

А сегодня в завтрашний день не все могут смотреть. Вернее смотреть могут не только лишь все, мало кто может это делать

це в конетксті коду, який гегенерується, а не всього проекту

Головне у розслідуванні — не вийти на самого себе. Адже:

and forget that the code even exists
I barely even touch the keyboard
I don’t read the diffs anymore
but it’s not really coding — I just see stuff, say stuff, run stuff, and copy paste stuff

Також показовим є спосіб фіксу багів:

Sometimes the LLMs can’t fix a bug so I just work around it or ask for random changes until it goes away.

А наступний текст підкреслює, що навіть на дрібниці Карпати пропонує не дивитися, коли вайбкодить:

I ask for the dumbest things like “decrease the padding on the sidebar by half” because I’m too lazy to find it

Це все цитати з оригінального допису Карпати, в якому він декілька разів, як ми бачимо, підкреслює суть: віддатися вайбу, не думати про код.

це не те саме що:

не передбачає (та навіть забороняє) розуміння згенерованого коду. Вайбкодинг не передбачає навіть код рев’ю, не кажучи вже про розуміння архітектури побудови застосунків.

Як мінімум це:
I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.

це:
I just vibe coded a whole iOS app in Swift (without having programmed in Swift before, though I learned some in the process) and now ~1 hour later it’s actually running on my physical phone. It was so ez... I had my hand held through the entire process. Very cool.

виманає знань архітектури, коду, технічні скіли в принципі.

Можна звісно навайбкодити взагалі без знань і взагалі не дивлячись і редактуючи код, не вживаючи технічних термінів типу добавь oauth аутентифікацію, але це будуть невеликі проекти.

Хоча, бе технічних знань ти даже агентом не зможеш користуватися для вайкодинга.

Та просто хтось читати не вміє, йому вже пояснювали це саме)) А він далі вперто своє гне про Карпатого, не вистачає розуму почати аргументувати з позиції зміни терміну з часом хоча б 😀

Ну добре, у всього світу ІТшного світу буде одне визначення, а у Володимира і Олекса інше

Цей ІТшний світ з вами зараз в одній кімнаті?)

Я вже приводив:
www.reddit.com/r/vibecoding

Знайди там хоч одного хто взагалі не розуміє код, архітектуру, і не ревьювить згенерований код (хіба що в випадках де він робить навмисне)

но ти ігноруєш незручні тобі коментарі

Звісно, посилання на реддіт з закликом знайти того хто не розуміє код, це дійсно незручний коментар в контексті визначення терміну vibe coding 😂

ну не я є заявляю що вайбкодери це ті, хто зовсім не розуміють ні код, ні архітектури, і не перевіряють згенерованого коду взагалі

Ладно, ось що експерт каже

1. «Вайбкодинг... не передбачає (та навіть забороняє) розуміння коду»
Оцінка: 2/10
Чому так низько:
У загальноприйнятому (мемному) розумінні вайбкодинг — це швидке, інтуїтивне, напівхаотичне програмування «по відчуттю», часто за допомогою AI, але не заборона розуміння коду. Ідея вайбкодингу — «кодити по вайбу», не заморочуючись над чистою архітектурою чи ідеальними патернами, але не в тому, що ти принципово не повинен розуміти, що виходить.
Фрази про «заборону розуміння» — це гіпербола, але не точне визначення.

2. «Вайбкодинг — стиль програмування, що передбачає повне чи часткове використання коду, згенерованого AI»
Оцінка: 7/10
Чому:
Це значно ближче до сучасного використання терміну. Більшість людей реально використовують «вайбкодинг» саме в сенсі:
— швидко накидати код через AI,
— не надто вникаючи в деталі,
— часто імпровізуючи та експериментуючи,
— а вже потім звертаючи увагу на структуру.

Але це визначення трохи спрощене: вайбкодинг може бути і без AI, просто як стиль «не надто формального, інтуїтивного» програмування. AI — дуже часто частина вайбкодингу, але не є строгою вимогою.

Підсумок
2/10 — сильно неточно, занадто радикально.
7/10 — досить близько до загальноприйнятого сенсу, але не повністю охоплює поняття.

1) Що таке «vibe coding» у першоджерелі і в похідних визначеннях

Першоджерело (Карпати) у повному вигляді — це не лише фраза «forget that the code even exists», а й уточнення: «Accept All», не читати diffs, просто копіювати помилки в чат, код виростає «beyond my usual comprehension», баги інколи «обходяться» або «випадково гасяться» змінами. Це прямо описує режим мінімальної/нульової перевірки коду.

Саймон Віллісон формалізує відмінність так: якщо ти переглянув/протестував/зрозумів усе — це не vibe coding, це нормальна AI-assisted розробка (LLM як «typing assistant»).

Wikipedia (як вторинне джерело) узагальнює так само: девелопер уникає огляду коду, приймає підказки без людської перевірки й фокусується на ітеративних експериментах замість коректності/структури.

Окремо важливий нюанс: термін поповз у «популярне» вживання (ЗМІ/словники інколи зводять його до «AI допомагає писати код»), і саме про цей дрейф Віллісон публічно «горить».

Висновок: у треді реально зіштовхнулися дві моделі:

строге/оригінальне: «генерую → не читаю/майже не читаю → оцінюю лише результат → ще ітерація»

популярне/розмите: «пишу з допомогою AI швидко, прототиплю, але можу й рев’ювити».

2) Чому користувач з нікнеймом «Donald Trump» тут (переважно) не правий — по пунктах

Cherry-picking (виривання з контексту).
Він цитує лише перше речення Карпати і каже «нічого не говорить про код-рев’ю/розуміння/архітектуру». Але у повному тексті є прямі маркери відмови від рев’ю («I don’t read the diffs anymore», «Accept All always»).

Підміна тези «не сказано слово ‘заборонено’» → «значить дозволено і це те саме».
Так, там немає юридичного «forbidden». Але опис процесу фактично визначає практику, де читання/перевірка відсуваються в нуль або майже нуль.
Тому заперечення «не забороняє потім правити код» — це відхід від ядра визначення до «а взагалі можна все».

Плутанина «здатність розуміти» vs «поведінка в режимі vibe».
Карпати може бути суперсеньйор і в принципі все розуміти, але описаний режим — це «я не читаю діфи, я просто жену ітерації». Це не про IQ/кваліфікацію, а про workflow.

Аргумент «не придирайтесь до термінів» не працює саме в треді про терміни.
Якщо дискусія — «чи коректно називати будь-яку AI-assisted розробку vibe coding», то «не будь занудою» не спростовує визначення, а лише знімає відповідальність за точність.

Апеляція до «всього ІТ-світу» без нормальної опори на джерела.
Його «доказ» — лінк на Reddit. Але навіть у правилах r/vibecoding прямо фігурує ідея «створення софту з little to no code review» (тобто радше підтримка «строгого» прочитання, а не його позиції).

Внутрішні суперечності.
Спочатку: «не говорить про рев’ю/розуміння». Потім: «це в контексті згенереного коду, не всього проекту». Потім: «якщо хоча б половина проекту згенерована». Це вже не визначення, а рухомі ворота — критерій змінюється під аргумент.

Тон/риторика шкодять аргументу.
«зануди типу тебе» — це ad hominem (не по суті) і зменшує довіру до позиції навіть там, де він міг би мати часткову рацію про «дрейф значення».

Єдине, де він частково має рацію: термін справді у масовому вживанні часто означає «AI-assisted кодинг» ширше, ніж у Карпати. Але щоб це довести коректно, треба було прямо сказати: «значення змінилося» + показати джерела дрейфу.

Доречі ШІ оцінив ваші аргументи в дискусії на 3/10, навіть мої саркастичні відповіді вище, LOL

i.ibb.co/hxRyvQT9/image.png

Який чудовий метагумор вийшов з оцінкою «ШІ» дискусії про вайбкодинг!

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

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

А далі вже (поза контекстом вайб-кодингу) традиційно — побачив, усвідомив, аналіз, ретроспектива і по колу — безперервна ітерація в контексті розробки. Процес доставки це вже далекий третій план, оскільки цей код в сукупності потрібно інтегрувати в архітектуру, добряче протестувати і отримати robust продукт. Але це вже точно не про вайб :)

Доповнення:
«вайб» — це також про отримання задоволення від процесу не напружуючи мозок і не забиваючи його багатолітнім досвідом та вивченням документацій із 100500 сторінок тексту, який ще потрібно усвідомити.

З реального прикладу:
Мені потрібно було швиденько створити Android аппку, для опрацювання MQTT протоколу. Оскільки я не маю таких поглинених знань в андроїд розробці, я використав ШІ і за кілька днів вдосконалень отримав кінцевий результат.

Вот в добавку, ціле комьюніті вайбкодерів на 200к розробників:
www.reddit.com/r/vibecoding

Йди розкажи їм що вони не правильно розуміють слово «вайбкодинг», тобі ж мабуть видніше ніж всіма прийняте розуміння слова.

Якщо зараз скажеш що 200к це не всі, то набагато старіший сабреддіт codding наліковує 600к мемберів, лише в 3 рази більше (половина з яких мабуть вже мертві, тобто по факту в 1.5 рази більше). Ти же не скажеш що в світі лише 600к (300к) кодерів?

У масовому використанні існує купа не коректних термінів, типу «санітарне тестування», «функціональне програмування» чи «функціонал» (софту). Якось люди існують із цим, згоден. В той самий час таке не коректне використання заважає зрозуміти суть речей (якщо є така мета, звісно).

В тестуванні слово sanity пояснює набагато більше, ніж «санітарне», яке є просто не правильним перекладом sanity. В результаті майже всі тестувальники не знають, як розуміти sanity testing, просто завчають визначення.

У функційному програмуванні велику роль відіграють функції та їх розуміння, тоді як «функціональне» в нашій культурі ближче до «працездатний», «утилітарний» чи «практичний», що уводить від суті. Термін, замість того, щоб допомагати у розумінні, створює додаткове когнітивне навантаження на студента.

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

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

У випадку з вайбкодингом я зазначив проблему. Як розрізняти два абсолютно різні підходи, якщо в одному випадку вайбкодер це людина, що ніколи не писала код до цього, а в іншому — розробник з експертизою, що використовує багато знань та професійних інструментів, щоб створювати програми? Термін йде «у народ» та починає сприйматися різними групами людей по різному.

Наприклад, одні бачать результат від досвідченого розробника, що «навайбкодив» застосунок та думають про «вайбкодинг» в оригінальному значенні — що кожен так зможе. Це призводить до викривленого бачення «ШІ» як такого. Це роздуває гайп навколо «ШІ», де люди у захваті від нього, але базуються на хибних аргументах. Наприклад, всі починають масово стверджувати, що «ШІ» вже може створювати програми точнісінько, як розробники з досвідом. Потім...

Можна ще довго описувати те, що викривлення реальності не дає нічого гарного ані суспільству, ані, зрештою, кожному з його учасників.

Підписатись на коментарі