amarao: (Default)
amarao ([personal profile] amarao) wrote2026-05-24 01:09 pm
Entry tags:

Death by thousands cuts (AI), part 2

Codex, в целом, не изобретает новых абстракций и пишет как сказали сколько сказали. Проблема из первой части (https://amarao.dreamwidth.org/123971.html) в полный рост.

Но с клодом ситуация ещё хуже. Он ИЗОБРЕТАЕТ новые термины. В пределах сессии. После чего, термин остаётся кусочками где-то, после чего новая сессия его частично видит и частично может использовать, но так как оно использовалось только где-то только как-то, оно там и умирает.

Меня с клодом это возмущает больше всего.

Вот, попросил я тесты (рецепт в just'е) 'tests' переименовать в tests_l1, чтобы освободить tests_l2 и сделать test штукой, которая запускает обои. Как называется 'test' в этом случае? Поскольку мы не планируем из этого делать фреймворк и design pattern, никак. Общие тесты запускают подмножества тестов.

Клод в плане? Он это решил назвать Promote the orchestrator (где, собственно, это и описывает).

Что произошло?

Он только что изобрёл терминологию:

* to promote (допустим, может быть в переносном смысле, написали и забыли). А если нет? У нас где-то в коде останется комментарий с этим словом, навсегда загрязнив понятийное пространство проекта.
* orchestrator. Он решил это назвать orchestrator. Правильно? Правильно, если мы планируем это осознанно называть и испльзовать. А если нет, то в микроскопический словарь проекта только что нассали дважды.


Вот это - death by thousands cuts. Брошенные термины. Напоминаю про то, что кожанные мешки так тоже делали.

https://www.infoq.com/presentations/os-rust

Every Language H program begins with CHAPTER ONE ... there’s no chapter two ... Every program ends with the keyword OBEY.

Вот такую брошенную мерзкую фигню оно оставляет. Можно закрывать глаза? Сколько-то. Люди тоже иногда делают, и хуже. Можно исправлять. Но оно пишет быстрее, чем люди читают или даже удаляют. (fun fact: если зажать Ctrl-Shift-K или его экивалент в редакторе для удаления строк, то autorepeat на клавиатуре работает медленее, чем AI пишет, то есть в буквальном смысле, оно пишет быстрее, чем ты можешь удалять. For real.)

Можно отлавливать на этапе планирования - но чем больше ты напишешь ему, тем больше он напишет в ответ, и он пишет быстрее, чем ты.

Заметим, пример выше про переименование тестов - именно thousands cuts. Это не big feature. Это вообще не фича, это небольшой рефакторинг тестов, чтобы освободить место для нового подмножества. Такие моменты происходят 100500 раз в любом фичебранче. Человек в такой ситуации либо не даёт названия (просто "это"), либо думает о том, не переиспользовать ли это ещё раз - но тогда он садится и думает, "а пригодно ли оно? А хорошее ли название?". Напоминаю, вторая сложная проблема в IT, "naming things".

И ведь оно аккумулируется. Почему это меня волнует больше, чем slop в тестах или даже в коде?

Потому что код дешёвый. Мы признали это. От $30 до $0.75 за миллион токенов (~20-60k строк).

Но когда ты описываешь проблему, ты описываешь её словами. Если твои слова криво придуманы, не отображают предметную область правильно, если они - thick concepts, которые несогласнованы, ведут не туда или приносят свойства, на которые нельзя опираться, то как ты опишешь свою проблему в чатике? Мой окрестратор был промоучен не туда? В какой-то момент теряется возможность думать о проблеме.

Думать (рассуждать) можно только на языке. Если нет языка, думать невозможно. И вот эту возможность забирают ошибки в терминологии.

У меня в карьере был момент, когда я осознал (до появления AI), что количество кода зашкаливает и я просто не могу говорить что мне нужно сделать. Никто не ожидал, что столько кода нужно в том месте, все надеялись отделаться парой тысяч строк. Оказалось несколько тысяч файлов в сложном runtime отношении между друг другом, и стадии этого runtime'а никак не назывались.

Я потратил 3 месяца на рефакторинг (слов!). Это был самый сложный рефакторинг в моей жизни, потому что мне нужно было придумывать слово, пытаться понять, подходит ли оно, нырять в код и приносить это слово. И каждый раз, когда оно не срабатывало мне нужно было ментально откатываться назад, что, наверное, наиболее точное описание интеллектуальной боли, которую можно прдумать. Я, всё-таки, эту штуку одолел и терминология устоялась и живёт, и даже используется в других проектах, как только они заползают в такую сложность.

И вот теперь всё это отданно AI на откуп, которое не может потратить 3 месяца на рефакторинг во имя слов. У него нет "боли" и он не может сказать "доколе" и пойти и перепридумать всё. Что означает, что эта штука прямо сейчас закладывает в большой brownfield проект тысячи таких бритвенных лезвий и иголок, чтобы любой, пытающийся понять систему, умер от интеллектуальной боли.

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

Но не сейчас. Сейчас это невозможно, а это означает, что pain is ahead.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2026-05-24 11:25 am (UTC)(link)
Спасибо за предупреждение, за наблюдения и за вербализацию. Почему-то у меня клод терминологию не выдумывает, но, возможно, это старая версия. Или у меня кода мало.

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