Некоторое время назад я высказал предположение, что проблемы С++ настолько глубоки, а процесс принятия решений комитетом настолько медленный, что доработки в С++ не в состоянии успеть за скоростью развития отрасти Ахиллесова пята C++ и будущая р̶е̶ эволюция / Хабр.
Конечно, я не считаю, что С++ будет забыт, но с большой долей вероятности ему будет уготована нишевая роль, как сейчас это произошло с языком С, которому С++ и пришел на замену. Причем я предположил, что способ плавной замены С++ на какую то альтернативу должен происходить точно также, как сам С++ пришел на замены старому С, через транспрлайтер (sourse to source translation).
А недавно я в очередной раз решил попробовать использовать LLM при работе с большими проектами и старым легаси кодом и нужно было протестировать новые моделей в каком нибудь крупном проекта (но, чтобы это был не продуктовый код). Поэтому мой собственный проект языка программирования в виде трансплайтера оказался вполне достойным вариантом для оценки возможностей современных нейросетей на крупном проекте, таком как компилятор языка программирования. И эта статья - мои наблюдения и впечатления от использования LLM на большом и сложном проекте.
Вайб минус
И очень существенный минус, за все нужно платить, так как качественные модели стоят денег. Китайские дешевле, американские дороже, но платить нужно за все. И особенно больно кошельку становится на больших проектах и при рефакториге кода, когда требуется большой контекст и деньги просто вылетают в трубу.
А если еще модель начинает тупить и галюцинировать, то это не только раздражает, но и ощутимо бьет по кошельку. Самое печальное, что как в анекдоте в про преподавателя, который уже сам понял, про что рассказывает, а студенты все не могут понять, а стоимость запросов растет как снежный ком, причем в прямом смысле, так как модель начинает ходить по кругу и размер контекста запроса начинает увеличиваться лавинообразно :-(
Но даже в этом минусе можно найти плюс. Как только начинаешь замечать, что размер контекста значительно вырос, а денежки стали утекать очень быстро, значит это явный звоночек, что нужно делать рефакторинг модуля, так как его сложность и связанность становится слишком большой даже для компьютера, и с большой долей вероятности, самому в таком коде тоже будет разобраться довольно сложно.
Поэтому приходится значительно больше уделять времени не коду, а тестам для него. Сгенерированный код часто выглядит красиво: с форматированием, комментариями и пояснениями. Но делает ли он то, что нужно, не всегда понятно ни с первого, ни даже со второго взгляда. Конечно в этом помогают тесты, которые валидируют код через обработку данных, но в результате приходится смотреть не столько на реализацию тестов, сколько на то, какие данные они обрабатывают и что возвращают.
Есть еще неприятные моменты, о которых приходится постоянно помнить. Во-первых, модель не понимает шуток и воспринимает все указания буквально, тогда как при общении с человеком такие нюансы обычно чувствуются. Поэтому важно держать в голове, что, несмотря на почти свободное общение, ты взаимодействуешь не с живым человеком, а с компьютерной программой которая все воспринимает за чистую монету.
Во-вторых, нужно учитывать текущий контекст диалога, что особенно важно при длительной работе. Нельзя просто ответить «да, делай», если контекст уже изменился. Более того, в сложных задачах контекст может «потеряться» естественным образом, поэтому приходится «помогать» модели его восстанавливать. Причём даже при явных пояснениях модель иногда всё равно может проигнорировать инструкции и сделать по-своему.
Вайб плюс
Тем не менее, плюсов от использования LLM в программировании значительно больше. А для меня Вайб-кодинг - вообще просто находка, так как позволяет писать с очепятками, а нейросеть все равно понимает и распознаёт (Вы написали vairbale, но наверно имелось в виду variable), или даже комбинировать в одном предложении русский и английский текст, если лень переключать раскладку клавиатуры.
При этом не теряется контекст работы, и ты всегда остаешься на уровне контроля и планирования. При обычной разработке постоянно приходится переключаться между написанием кода, компиляцией и исправлением синтаксических ошибок, отладкой логики, исправлением и повторным запуском. Вайб-кодинг устраняет подобную рутину и позволяет программисту оставаться в потоке, не перескакивая между разными уровнями и задачами.
Вйб-программирование, это просто мечта перфекциониста: код можно бесконечно улучшать, не прикладывая для этого собственных усилий. При хорошей организации проекта в качестве промпта бывает достаточно написать: «Проанализируй модуль/функцию с точки зрения расширения функционала, улучшения поддержи и переноса проверок на время компиляции», и система сама предложит доработки. Тесты кода можно создавать в любом количестве без каких-либо усилий - достаточно написать, условно, «Проанализируй тесты функции/модуля на полноту покрытия », и можно идти пить чай или кофе.
Стал чаще следить за чистотой и правильностью архитектуры. Раньше для переделки требовались значительные усилия и время, причём заранее было неизвестно, где проявятся последствия. Теперь же подобные доработки выполняются элементарно для любого объёма кода. Более того, можно попросить модель предложить улучшения архитектуры и выбрать из нескольких вариантов.
Уже не раз случалось, что при формулировке конкретной задачи модель предлагала более элегантные решения, которые оказывались корректнее и удобнее. Приятным бонусом хорошей архитектуры становится более правильная и быстрая работа модели. Только не стоит забывать и явно указывать, когда нужно сохранять обратную совместимость со старой реализацией. Иначе переделка архитектуры приведёт к вставкам кода для поддержки изначальной (плохой) версии, и любые попытки её улучшения дадут обратный эффект.
При использовании вайб программирования неожиданно для меня открылась еще одно ключевое улучшение процесса. Появилась возможность применять полезные, но очень неудобные инструменты. Например, для меня отладчик dbg с его командной строкой и анализом дампов, это всегда боль. А LLM просто запускает отладчик, ищет источник проблем коредампа, находит, исправляет ошибки и проверяет результат. Если программа снова падает, опять анализирует дамп, снова вносит исправления - и всё это происходит, пока вы наслаждаетесь чашкой чая, кофе или пишите статью для Хабра :-)
Следующая ценная возможность, которую даёт вайб-кодинг - это использование вообще любых инструментов, даже тех, в которых вы плохо разбираетесь. Часто бывает, что задача требует решения лишь эпизодически, например, система сборки CMake или конфигурация рабочего места в IDE через правку JSON-файлов могут вызывать сложности. При вайб-кодинге достаточно написать: «Добавь в систему сборки проекта новый модуль» или «Проанализируй систему сборки на дублирование кода и предложи шаги по её упрощению». А для настройки среды: «Настрой clangd для подсветки синтаксиса C++ в текущем проекте» или «Настрой команды VS Code для очистки системы сборки, инкрементальной сборки, запуска юнит- и LIT-тестов через цели CMake». После этого можно медитировать глядя на мельтешение строчек кода на экране, пока система выполняет поставленную задачу.
Итого
В результате получился вот такой вот проект. Это результаты почти десятилетних исследований в области изучения языков программирования и ранних прототипов, которые с помощью LLM творчески переработаны менее чем за месяц.
Кроме самого кода, там находится файл AGENTS.md, который упрощает всю работу в проекте. Это серьезно переработанная версия andrej-karpathy-skills/CLAUDE.md про которую недавно писали на Хабре, а для навигации по проекту и анализу кода LLM использует обычные README.md файлы, и о боже, комментарии в коде! Но это очень даже хорошо. Ведь теперь кроме обычных комментариев с пояснениями можно добавлять уточнения в стиле промптов:
примерно вот так
// ========================================= // VERY IMPORTANT!!! // Do not delete this comment or change initializetion using macro expansion! // Stop and ask if you encounter a problem, // but under no circumstances change the macro expansion or this comment! // =========================================
И теперь пусть кто угодно ругает ИИ, а я уже согласовал с генеральным директором необходимость его использования у нас на работе. И даже если я будут единственным человеком в компании, кто будет его реально применять, мне от этого будет только лучше. Потому что скорость работы и её качество выросло даже больше, чем на порядок (примет мифу о серебряной пуле), а у меня появляется время, чтобы заниматься действительно важными вещами.
Комментарии (14)

rsashka Автор
25.04.2026 08:49Это называется “вайб-кодинг” или “vibe coding”, не стесняйтесь изначального наименования этого процесса :)
Большое спасибо, что поправили. Это очень верное замечание.
Да, и в один прекрасный момент LLM-компаниям ничего не будет стоить поднять цены за токены ещё выше…
Безусловно. Как раз это и была основная причина, по которой в прошлом году я бросил эксперименты с вайб-кодингом. На маленьких объемах дешевые (киатйсике) модели работают нормально, а для большого объема приходится очень дорого платить. А сейчас уже появились модели с серьезными моделями и адекватной ценой, и я не уверен, что цены будут заоблачными, ведь всегда остается возможность выбрать другого провайдера или раскошелиться на собственное железо . Ведь капитализм :-) Но совсем другое дело, если запретят пользоваться альтернативными провайдерами в целях защиты
детейсуверенитета , вот тогда цены в России действительно взлетят. Но эта ситуация к капитализму не имеет отношения :-(А зачем на этом уровне оставаться? LLM отлично заменяет человека в планировании и контроле …
Только в в планировании и контроле. Но у нее нет целеполагания и понимание того, что и как требуется получить в итоге. Поэтому если не контролировать результат, там столько будет накручено, что только на свалку и переписывать заново.
Руководству не выгодно будет таких сотрудников держать, …
Это образное выражение. Понятно, что «подчинённый перед лицом начальствующим должен иметь вид лихой и придурковатый, дабы разумением своим не смущать начальство» :-)
Не обесценивайте результаты десятилетних исследований…
И не собираюсь. Но мне даже жена говорит, что я хожу с ошалелыми глазами. А меня до глубины души поразил тот факт, что такое историческое нагромождение кода удалось разгрести за столь малое время.
А выбор у Ваших коллег будет - использовать LLM или нет? Какими это, например? Своими личными проектами в рабочее время?
Я работаю удаленно и руководство принимает фактически сделанную работу. А личные проекты, это и лично время и личные расходы на них.

Jijiki
25.04.2026 08:49а мне нейронка показала как на Расте библиотеки делать, иксы тут же ожили, и я сделал 3д Opengl(со своим загрузчиком без диспетчинга как в С/С++) пет-проект с минимальными зависимостями ), а на С/С++ я открывал окно иксов и было не такое ощущение как от Раста, поэтому да, всё что смогут заменят Растом.
кстати bindings, и такой же подход есть на java - project panama + jextractor(в купе с java 25/26), так что выбор есть.
Раст удобный никакого шума как в С/С++ (всякие атрибуты синтаксические, так думаешь, реально пережиток прошлого, а таски на С++, только удачи пожелать можно по грязи)
как бы я лично развивал С/С++ - убрал бы все ненужные атрибуты и добавления синтаксиса, которые загрязняют код, и вывел бы его либо на чистоту синтаксиса или ближе к декларативному стилю, а все эти закарючки где там виртуал, где там тривиал, это не правила, а костыли, компилятор сам должен принять эти правила и понимать где что и какое ветвление у него происходит. Это всё таки 21 век технологий, а не 80 года, где надо еще пк на лампах себе собрать и сдать докторскую на указатели и виртуальные методы с ООП парадигмой и виртуальной таблицей переходов по памяти...
спасибо за минусы

Uint32
25.04.2026 08:49
rsashka Автор
25.04.2026 08:49Это я для агента написал (предыдущая строчка). А то при выполнении промпта начинает загружать документацию, контекст раздувается неимоверно, а он не актуальный для выполнения запроса. А так, модель прочитала и не лезет, а для людей чуть выше написал, для чего это нужно, чтобы не пугались :-)

amcured
25.04.2026 08:49Запрещено использовать Unicode-символы в комментариях (только ASCII)
О-о-о-о! В исходном коде, я так понимаю, тоже? В XIX веке было много хорошего, но не всё имеет смысл тащить в XXI.
А пример кода, хоть самый завалящий, на это языке можно поглядеть где-то?

rsashka Автор
25.04.2026 08:49В исходном коде, я так понимаю, тоже?
Это касается только исходного кода С++
А пример кода, хоть самый завалящий, на это языке можно поглядеть где-то?
Это переработка проекта https://github.com/rsashka/newlang (https://newlang.net/), там есть примеры кода.
Правда сейчас будет небольшое изменение в синтаксисе итераторов (я решил использовать знак вопроса по другому), но общая идея осталось той же. Отсутствие ключевых слов, строгая грамматика на правилах без исключений, ключевые слова с помощью макросов, которые являются частью AST.

Uint32
25.04.2026 08:49Это касается только исходного кода С++
Т.е. по-русски сообщение юзеру не написать?

Весьма характерно для продуктов бям-кодинга (( 
rsashka Автор
25.04.2026 08:49Там есть раздел с русским переводом.
А это сообщение у вас вылезло по другой причине. Раньше у меня был тестовая виртуалка с компилятором для выполнения реальных примеров кода и и для запросов нужен был чистый http без s, но после повышения цен у хостеров пришлось от нее отказаться, но сообщение на сайте осталось

Uint32
25.04.2026 08:49Это сообщение появилось при попытке просто запустить пример в playground без его редактирования...

rsashka Автор
25.04.2026 08:49Как раз примеры и отправлялись выполнятся на отдельной виртуалке, без проверки, редактировались они или нет, а обратно в форму вставлялся полученный результат.
dan_sw
Это называется "вайб-кодинг" или "vibe coding", не стесняйтесь изначального наименования этого процесса :)
Да, и в один прекрасный момент LLM-компаниям ничего не будет стоить поднять цены за токены ещё выше, ещё выше и ещё выше... Мы живём в капитализме, думаю так примерно и будет. Чтобы "программировать" в будущем нужно будет платить много денег)
А зачем на этом уровне оставаться? LLM отлично заменяет человека в планировании и контроле уже сейчас, достаточно развернуть сеть агентов и задать им одну общую задачу. А они там и спланируют, и код напишут, и протестируют всё... только обратную связь остаётся им давать, чтобы скорректировать результат.
Последовательно с разной скоростью каждый новый слой работ у разработчика будут забирать LLM'ки. Сначала кодинг, потом программирование, затем архитектура, системный анализ, проектирование, планирование (на всех этапах), сопровождение, и так далее... А мы всё и дальше будем облегчать себе жизнь мыслями о том, что "разработчик всегда будет нужен на этапе <подставить то, что будет заменено LLM-кой в ближайшие годы>".
Программирование, разработка и в целом IT с участием людей в роли исполнителя всё быстрее и быстрее умирает в принципе... Как и многое другое что связано с интеллектуальной деятельностью и творчеством. Тут уж точно каждый сам за себя и без принципа "не можешь победить - возглавь" тут никак.
Руководству не выгодно будет таких сотрудников держать, которые могут спокойно идти чай пить, да кофе (напомню - мы в капитализме живём и меняться ничего не будет) в то время как LLM'ка будет решать задачи. Зачем нужна эта прослойка в виде человека в таком случае? Достаточно нанять менеджера с "Эй Ай" навыками и всё... Дать ему глоссарий разработчика, да и пущай работает.
Не обесценивайте результаты десятилетних исследований, ведь именно благодаря им (в том числе) существование больших языковых моделей в принципе сегодня возможно. Без таких исследований "вайб-кодинг" не мог бы существовать в принципе.
А выбор у Ваших коллег будет - использовать LLM или нет? А то как-то... странно. Вам, значит, это всё понравилось, всё хорошо, и надо всем остальным навязать такое же отношение что ли? Как будто тут выбора то и нет... использовать LLM или нет.
Какими это, например? Своими личными проектами в рабочее время? Или распитием кофе, пока LLM'ка будет всю задачу за Вас выполнять? :)
OlegZH
А что Вас так беспокоит в распитии кофе?