Разработка
December 11

Instant Legacy (продолжение)

Мне тут накидывают панамку, что «ти не понимаешш!» и нейрокод обязательно захватит мир, потому что код ничего не значит, он расходник, и важно только решение задачи. Сомневаюсь.


В контексте предыдущей статьи, см Time to Legacy.

Целиком предложенные встречные пойнты выглядят так:

— какая разница, что там за код написан и кем, если он генерится инструментом, при этом решение задачи можно проверить. А если задача проверяется и решена, то код = всего лишь врЕменный ситуативный артефакт и малоценный расходник

— если нужны правки и задача изменится, просто перегенери код, это дешево (really?), делов то

— абсолютно пофиг чем решается задача, если она решается

Подход, чисто абстрактно, имеет право на существование. Если бы он работал.
Вот только он не очень работает.

Я могу поиграть в визионерство и написать «пока не работает», то есть дать автоматике некоторую фору и кредит доверия. Но я не хочу так делать, потому что — когда-нибудь в светлом будущем всё обязательно изменится. Вкалывают роботы, отдыхает человек, все дела. Но это пока сослагательное наклонение, зачем мне так делать.


С точки зрения бизнеса, всё что угодно, чем вы там решаете задачи — расходник. Абсолютно неважно, что у вас в черном ящике: инженеры, прорывные айти-решения, миллион обученных обезьян, языковые модели, швабры держат потолок, и даже черная магия вне хогвартса. Если задача в моменте решается, и соответствует приемочным требованиям.

В приемочных требованиях у нас, чтобы поближе к реальному миру, есть (кроме самого решения задачи) следом поддерживаемость, оперируемость, поведение в нештатных ситуациях (обработки отказов), и так далее. Возможность отладки. Проверяемость. Хорошо, я соглашусь на вводные: критерия «понятность человеком» у нас в рассмотрении нет, выкинули его.

Это не так страшно, и достаточно честно, потому что даже сейчас вы понятия не имеете, как ваш код и решение — например — работает на низком уровне, на уровне железа.

Если языки и средства высокого уровня обеспечивают понимабельность человеком и всё прочее, то дальше пачка слоёв компилятор/оптимизатор/планнер/конвейер/диспетчеризация/изоляция выдадут вам малопонятный (человеку!) черный ящик, который там как-то сам живёт своей жизнью на уровне машины. Человеку туда лезть не надо, это не для него.

А то, что оно работает — ну, статистика больших чисел.

Можно в принципе экстраполировать подход и на высокий уровень, «ну вот там машина чего-то сама себе пишет, чего ты доебался».


Можно, но не нужно.

Потому что суть и способ решения проблемы, в моменте, обеспечивает ее проверяемость. И главным образом, должен делать это сравнительно дёшево, и сравнительно быстро. Ход решения, и структура решения — такой же артефакт. От которого мы, в общем-то, хотим получить дополнительные плюшки: например, гибкость, тиражируемость, и сокращенное время на внесение изменений. В противовес полному решению задачи каждый раз с нуля.

Решать задачу каждый раз с нуля, анализировать с нуля, и собирать решение — вообще-то нифига не дёшево. Даже с учетом LLM: ну давайте, начните пересобирать проект на сотни тысяч строк и операций, каждый раз, когда надо что-то подкрутить. Счёт за вычислительные ресурсы быстро вас вернет с небес на землю (как у многих уже и происходит). Да, возможно это дешевле полной пересборки людьми, и вы даже возможно сумеете обеспечить приемлемое качество.

Ключевой пойнт в том, что посредством корректного структурного и архитектурного решения вы — в конвенциональном, «человеческом» подходе — подобных затрат и перепробега стараетесь избежать. Даже успешно.

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

Но что-то сомнительно, пока что. Радужные фантазии «как железка там сама всё себе сделает» (обычно, менеджмента) разбиваются об мрачных инженеров эксплуатации и внедрения, которым вот прямо сейчас в полях гаечным ключом и зубилом надо приводить желаемое к действительному, в сжатые сроки.

А что нейросетка. Она железная, с нее ни спроса ни ответственности. Ни в лоб дать, ни отпеть(ц). Ебитесь как хотите.


Штука, которую вам какие-то инструменты нагенерили «сами», и которую можно либо использовать, либо выкинуть и пересобрать — всё равно то же самое «моментальное легаси». Даже высокоуровневое. Тут мое мнение не поменялось.

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


Инструментарий обильно прокачался за пару лет. К примеру, у меня китайский электро-разум даже дебажит уже сильно лучше и внимательнее, чем некоторые кожаные. А дебаг и поиск концов — задача вовсе не тривиальная, как правило.

Самостоятельно пока не может: главным образом потому, что связь с реальным миром достаточно электрическая и условная. Да, спасибо MCP, можно сказать «че ты как маленький, пойди открой себе проект, и сам разберись».

Вот «в чем разберись?» все равно надо формализовывать и выявлять. Потом скармливать железке. И следить, чтобы аналитика и разбор проблем были выполнены в виде достаточном, для формирования решения — то есть, сделать больше половины значимой работы. Далее надеяться, что инструментик справится с решением.

Полностью научить железку в цикл научного метода — «наблюдение, анализ, гипотеза, эксперимент, результат, проверка» — не очень работает. Можно, как и в начале, оптимистично добавить «пока что». Нагородить агентских фреймворков, прописать процессы… ah shi, примерно то же самое, как приходится для кожаных людей делать.

На этом моменте — опа! — опять без моделей, структуры и архитектуры почему-то не работает. Или работает так, что лучше бы не работало.

Интересно почему: может, потому что это блять важно??!


Короче. Я практик, мне бы прикладные результаты, осязаемые. Хотите считать код и прочие артефакты (включая модели решений) расходником, и отдать их железке — да любой каприз за ваши деньги. Завоюете мир, покажете всем как надо.

Реальность пока что против. Как минимум, в части понимаемости, отладки и стоимости всего этого процесса. Могу предположить, что «такая фигня» потому что вокруг все равно (рано или поздно) оказывается реальный мир, а мир гораздо круче наших представлений о нём.

Концепцию надо докрутить. Возможно, мы придём к еще более высокоуровневым абстракциям, когда для воплощения технического решения (предсказуемо и дёшево) достаточно будет вгрузить в инструментарий подробный design document, а дальше «оно само».

Но пока не пришли.
Разбудите меня, как придём, вместе порадуемся.

Hope that helps.


UPD: окей, этот юмор пускай тоже тут будет (принёс Max S)
https://sw.vtom.net/hn35/pages/90099890.html