Линус Торвальдс об AI: форкните Linux или уходите
Linus Torvalds опять вломил. На этот раз — всем, кто считает, что AI скоро заменит программистов. Его ответ на очередной раунд хайпа про AGI и нейросетки был коротким и злым: «форкните Linux или проваливайте».
Поводом стала дискуссия на конференции Linux Foundation Europe, где очередной спикер из Big Tech вещал, что через пару лет AI будет писать код лучше людей. Торвальдс, сидевший во втором ряду с ноутбуком (он всегда сидит с ноутбуком, я замечал — у него там, скорее всего, почта и патчи, которые он ревьюит прямо во время докладов), не выдержал. Он поднялся, отложил макбук и сказал примерно следующее: если кто-то всерьёз считает, что может написать ядро Linux качественнее, чем текущие мейнтейнеры — пусть форкнёт репозиторий и докажет делом. А не болтает на сцене про «сингулярность». Зал затих, кто-то зааплодировал, кто-то, наоборот, зашикал.
Я пересматривал это видео раза три. Потому что Торвальдс, хоть и славен своими вспышками (помните его «Nvidia — худшая компания, с которой мы имели дело»? или «меня не волнует ваше мнение, у меня есть данные»?), здесь был абсолютно прав. За последние пару лет я слежу за тем, что AI генерирует в плане низкоуровневого C и ассемблера. И знаете что? Результат пока что ниже плинтуса. Да, Copilot умеет дописать за тебя шаблонный код на Python — функцию для парсинга JSON, простой Flask-роут, тест к уже написанному модулю. Но попробуйте скормить нейросети драйвер для сетевого адаптера или обработку прерываний на ARM. Там AI генерирует такую дичь, что проще написать самому с нуля. Я серьёзно — однажды я попросил ChatGPT сгенерировать драйвер для I2C-сенсора. Он выдал красиво отформатированный код с комментариями, который даже компилировался. На реальном железе сенсор показал -127°C при комнатной температуре. Оказалось, AI неправильно обработал регистры конфигурации — использовал константы от другой модели сенсора. Внешне код выглядел идеально, а по факту — опасная ерунда.
Я сам потратил вечер на эксперимент — попросил ChatGPT написать драйвер под ядро Linux 6.x для простенького GPIO-сенсора. Потратил час, переписывал промт десять раз, уточнял версию ядра, архитектуру, шину. В итоге выбросил сгенерированный код и написал руками за 20 минут. Сгенерированный код был красивый, синтаксически верный, с правильными отступами и комментариями. Но абсолютно нерабочий в реальных условиях. Потому что AI не понимает контекст: аппаратные особенности конкретного чипа, кэши, барьеры памяти, тайминги, порядок инициализации. Я потом разбирал, что именно сгенерировала нейросеть. Она использовала устаревшие вызовы, которые в 6.x ядре уже выпилили. Она не знала про новый API для работы с DMA, который появился в 6.2. Она просто смешала в кучу всё, что видела в обучающей выборке — куски драйверов для ARM, для x86, для разных версий ядра — и выдала нечто, похожее на драйвер. Похожее — но не рабочее. И это главная проблема AI-кода: он выглядит убедительно, если ты новичок. Опытный разработчик увидит ошибку за 5 секунд, а новичок скопирует и будет гадать, почему не работает.
Торвальдс в своём стиле сказал главное: программирование — это не про «написать синтаксически правильный код». Это про понимание системы целиком. AI этого пока не умеет. И Linux — прекрасный тому пример: монструозный проект с 30-летней историей, 28 миллионами строк кода, где каждый коммит проверяется десятками глаз, несколько раз ревьюится, тестируется на сотнях разных конфигураций железа. Если когда-нибудь нейросеть сможет поддерживать такое — вот тогда я поверю в AGI. Но, судя по текущим результатам, до этого ещё очень далеко.
Мне нравится его подход: хочешь изменить мир — сделай форк и покажи код. А не пиши манифесты и не продавай стартапы про «революцию в разработке». В последнее время слишком много шума вокруг AI-кодинга. Каждый второй стартап обещает, что «их модель перепишет всю кодовую базу за вас». Я на это насмотрелся за 15 лет в IT. Когда я слышу «AI заменит программистов», я вспоминаю, как в 2023 мне обещали, что Web3 похоронит централизованные сервисы, в 2021 — что NFT изменят искусство, а в 2017 — что блокчейн перевернёт мир. Технологии приходят, шум уходит, а код писать всё равно надо. Каждый раз одно и то же: сначала эйфория, потом разочарование, потом спокойное принятие того, что технология — просто инструмент, а не серебряная пуля.
Кстати, реакция сообщества была предсказуемой. Кто-то в твиттере писал, что Торвальдс «отстал от жизни», «динозавр, который боится нового». Но большинство мейнтейнеров ядра его поддержали. Потому что они каждый день видят, как AI-сгенерированные патчи выглядят красиво, а работают через раз. Один мейнтейнер поделился статистикой в рассылке: за последние полгода через их очередь прошло около 40 AI-сгенерированных патчей. Из них приняли ровно ноль. Все были с ошибками, которые заметны только человеку с опытом — неправильные locking-примитивы, нарушение порядка инициализации периферии, отсутствие проверок на коды возврата, игнорирование энергосберегающих режимов. Патчи выглядели хорошо, но ломали работу оборудования.
Я не говорю, что AI бесполезен. Я сам использую Copilot для написания тестов и скриптов автоматизации. Для шаблонного кода — отлично. Для документации — супер. Но называть это «заменой программисту» — смешно. Это как сказать, что калькулятор заменил математиков. AI — это инструмент, а не замена. И Торвальдс, при всей своей резкости, сказал именно это. Просто сказал так, как умеет — чтобы дошло до каждого. Прямо, грубо, но по делу.
Меня больше всего бесит в этой дискуссии одно: люди путают «написать код» и «создать программу». Код — это просто текст. Программа — это решение проблем реального мира, это архитектура, это понимание требований, это работа с людьми. AI генерирует текст, который статистически похож на код. Но он не понимает, какую задачу решает. Он не знает про edge cases, про нештатные ситуации, про твою архитектуру, про бизнес-логику, про требования безопасности. Он просто выдаёт вероятностную последовательность токенов, которая выглядит как код. И если ты не можешь отличить одно от другого — проблема не в AI, а в тебе. Потому что хороший программист — это не тот, кто пишет код, а тот, кто понимает, какой код нужно написать.
Torvalds, как всегда, polarizing figure. Его можно любить или ненавидеть, но игнорировать его мнение невозможно. В этот раз я с ним на 100%. Его слова про форк — это не про гнев. Это про ответственность. Если ты считаешь, что можешь лучше — сделай. Покажи код. А не пророчествуй со сцены.
Что думаете? Пробовали AI для написания системного кода? У меня опыта пока мало на этом фронте — только пара экспериментов, описанных выше. Интересно, есть ли реальные кейсы, где нейросеть написала что-то сложнее CRUD, что реально работает в продуктиве. Я пока таких не встречал, но буду рад ошибиться. Расскажите в комментариях — может, я просто плохо промты пишу, и AI на самом деле умеет писать драйверы, просто я не тот подход выбрал. Я готов признать ошибку, если увижу работающий пример. Главное, чтобы это был не hello world и не генерация CSS-стилей.
Кстати, я заметил забавную закономерность. Почему-то самые громкие заявления про «смерть программирования» делают люди, которые сами давно не писали код. Основатели AI-стартапов, инвесторы, CEO — они говорят о том, что скоро не нужно будет уметь программировать. А сами разработчики, которые реально пишут каждый день, в массе своей относятся к AI-помощникам спокойно. Как к автодополнению получше. Никто из моих знакомых сеньоров не боится, что AI отнимет работу. Боятся в основном джуниоры, которые ещё не научились отличать работающий код от красивого. И это, наверное, самая большая опасность AI-кодинга: он даёт ложное чувство компетентности. Джуниор копирует сгенерированный код, не понимая, почему он работает именно так. А потом баги вылезают в продуктиве, и разбираться приходится кому-то другому.
В целом, я рад, что Торвальдс поднял эту тему. Потому что дискуссия про AI в программировании давно скатилась в крайности. Одни кричат, что мы все умрём и нас заменят роботы. Другие — что AI никогда не научится писать код и это пузырь, который лопнет завтра. Истина, как обычно, посередине. AI — это мощный инструмент, который меняет профессию, но не отменяет её. И такие люди, как Линус, которые не боятся говорить неудобные вещи, помогают сохранять баланс.
Линус, как обычно, оказался голосом разума в этом гаме. Форкни или заткнись — грубо, но честно. Возможно, именно такого разговора не хватало всей индустрии. Потому что хайп вокруг AI-кодинга раздут до небес, а реальные результаты пока скромные. И это нормально — технологиям нужно время. Но признавать это вслух почему-то никто не хочет.
Я думаю, проблема ещё и в том, что AI-маркетинг работает на страхах. «AI заменит программистов» — отличный заголовок для статьи, он собирает клики и просмотры. А «AI — это полезный инструмент для автоматизации рутины, но до замены человека ещё далеко» — скучно и не продаётся. Поэтому нам каждый день впаривают очередную революцию. Но если посмотреть на статистику вакансий и зарплат разработчиков за последние два года — они только растут. Спрос на инженеров не падает, а структура работы меняется. AI берёт на себя шаблонные задачи, и это хорошо — у разработчика остаётся больше времени на архитектуру, ревью, общение с заказчиком.
Единственное, о чём реально стоит беспокоиться — это качество кода. Когда все начнут использовать AI-генерацию без понимания, мы получим лавину кода, который работает «вроде бы», но ломается в нестандартных ситуациях. И отлавливать такие баги будет сложно, потому что синтаксически код будет идеальным. Но это уже проблема процессов разработки, а не технологии как таковой. Код-ревью, автотесты, статический анализ — эти практики станут ещё важнее, чем сейчас. И те, кто их игнорирует, утонут в AI-сгенерированном техническом долге.
В плане качества, не думаю чтоб прям сильно что-то поменялось. Хочешь — декопмпозируй и ставь таски джунам, хочешь кидай нейронке. Чумокод в любом случае обеспечен. Это нормально. Слышал про комбайны на агентах, не знаю на сколько это помогает, но пока звучит как манипуляция сложностью и протечки ответстсвенности. Ну и качество нейронки под капотом может решать как мне кажется. Не зря все так напряглись про железо и энергию. Надеются на распараллеливание и перекрестные проверки, круто конечно, но не по человечески уже как-то.
Александр, спасибо за развёрнутый комментарий! Полностью согласен на счёт «не по-человечески» — сам ловлю себя на мысли, что читать AI-код иногда даже приятнее, чем человеческий, но в этом и проблема. Когда нейронка пишет идеально ровно, теряется та самая «душа», из-за которой мы вообще любим программирование. А по поводу комбайнов на агентах — пробовал, пока сыровато. Одна ошибка в промпте и разворачивается целый легион не туда. Лучше пока по-старинке, но с AI как помощником, а не как заменой.