V> "рефакторинг тулом" vs "рефакторинг ИИ-кой" это как "считать на калькуляторе" vs "считать ИИ-кой"
Это ложная аналогия. Она приравнивает принципиально разные по сложности задачи. Использование ИИ для простой арифметики действительно избыточно — так как всегда есть то самое детерминированное решение, универсальный алгоритм вычисления (в прочем хорошая ИИ-шка, как и не глупый человек без проблем и выражения вычислит). Рефакторинг — это
сложная, многокритериальная и часто творческая задача, для которой не всегда существует единый детерминированный алгоритма и даже если такой существует для частных случаев, часто он просто
не реализован в IDE, а стало быть не может быть применён. ИИ решает не ту же задачу, что и тулинг (синтаксические преобразования), а задачу более высокого уровня — семантический и архитектурный анализ и осмысленное переписывание кода, как это делает человек. И ИИ способен генерировать сотни слов в секунду в отличии от человека, что и позволяет использовать его в качестве тулзы рефакторинга.
Я не спорю, что если есть готовый рефакторинг, применять вместо него ИИ довольно бессмысленно хотя бы потому, что рефакторинг работает намного быстрее и детерминировано. Но автоматические рефакторинги покрывают лишь часть совсем простых случае. А ИИ может сделать рефакторинг почти любой сложности, так как он может понимать контекст и производить анализ, как и человек. Все что нужно сделать — качественно поставить задачу и предоставить необходимый контекст (код).
V> В основе тулов лежат детерминированные вычисления... А в основе ИИ-ки лежит и случайная интерпретация задачи и случайное её применение — примерно так работает джун.
Твое понимание работы ИИ детское и наивное ну или устарело. Современные LLM — это не генераторы случайных токенов, а системы, выявляющие
сложные логические и семантические паттерны на основе обучения на огромных массивах качественного кода. Их работа — это не "случайное применение", а предсказание наиболее вероятного корректного решения, аналогичное процессу мышления опытного разработчика. Сравнение с джуном некорректно: ИИ обладает "опытом", на порядки превышающим человеческий, так как "видел" больше паттернов.
V> Перепроверка имеет такие показатели, как затраты, вероятность пропустить ошибку.
Именно поэтому ИИ — мощный инструмент.
Проверить и доработать качественное предложение от ИИ дешевле, чем писать решение с нуля. Он резко повышает качество исходного варианта, сокращая пространство для ошибок и снижая общие затраты. Ревью кода от коллеги ты тоже проверяешь, но это не делает его работу бесполезной.
Когда ты проверяешь, что сделал ИИ
ты просто используешь diff. Ты видишь, что изменила ИИ-шка и можешь или откатить ненужные изменения, или
уточнить в промпте, что делать надо, а что не надо. Что сложного в том, чтобы понять, что изменила ИИ-ка по diff-у? Ниже будет пример промпта и их diff. Можешь оценить сам.
Писать и отлаживать код куда медленнее нежели читать его. Ну и должны быть тесты или тестовый запуск с проверкой функционала. Именно так делают люди когда сами пишут код. Ни всегда получается написать корректный код сразу (даже человеку). Всегда есть место для ошибки. Лично я всегда смотрю свой код при коммите и потом в PR-е. Ну и по возможности стараюсь его запускать и тестировать или запускать тесты.
V>Оба пункта странные — потому что они никак не следуют из того, как работают ИИ.
Не как работает ИИ, а твоим заблуждениям по этому поводу. Давай будем точными в формулировках.
V> ...ты воспринимаешь ИИ как волшебный черный ящик... на всем множестве задач это не работает.
Не надо за меня додумывать. ИИ — не волшебный ящик, а инструмент с конкретными сильными и слабыми сторонами. Его сила — в работе с
неформализованными, контекстно-зависимыми задачами, где нет детерминированного алгоритма. Для таких задач (к которым относится большая часть сложного рефакторинга) он часто работает и работает хорошо. Критиковать его за не идеальность на "всем множестве задач" — это требовать от отвёртки, чтобы она хорошо забивала гвозди.
Твоя основная ошибка — в дихотомии "либо детерминированный алгоритм, либо бесполезная случайность". Реальность сложнее: ИИ — это
статистически обобщённый алгоритм высокого уровня, который дополняет детерминированные тулы, решая те задачи, которые им недоступны в принципе или не автоматизированы на сегодня.
Вот тебе пример который придумал на ходу. В студии нет встроенного рефакторинга правильно расставляющего ключевые слова sealed и abstract на типах. Но дав ИИ-шке просто промпт и код (в данном случае фалы:
DotAst.cs и
DotVisitor.cs) в качестве контекста легко заставить её расставить sealed и abstract на заданном множестве типов. При этом тебе не надо объяснять где можно ставить sealed-ы, а где нельзя. ИИ-шка без проблем создает граф наследования "в голове" и логически выводит куда можно впихнуть sealed, куда abstract, а куда ни то, ни другое. Это не случайность. Чтобы ей было сложнее я специально
удалил abstract с тех типов где они уже были расставлены человеком и при этом их отсутствие не ломало бы компиляцию. Вот результат:
https://chat.deepseek.com/share/bmp62sq0iab4bikx97
Вот diff изменений:
Тебе будет сложно оценить, что ИИ сделал всё как следует? Всё что тебе нужно сделать — это перед внесением изменений засташить старые. Ну разные IDE вроде Cursore или Antigravity делают это автоматом.
Специально включил режим рассуждений, хотя ИИ-шка все сделала бы правильно и без него. И что интересно, так как у данной задачи есть только одно решение, то оно всегда будет одинаковым (детерминированным), как бы ты не заявлял обратного. По сути недетерминизм скорее определяется множеством возможных решений, а не природой ИИ. И ИИ всегда можно подтолкнуть в том направлении, что тебе требуется, даже если изначально ты получил не то решение, что ожидал. Просто добавил уточняющих промптов и всё. Главное, чтобы ИИ-шка была не тупой от рождения и умела следовать инструкциям. Это достижение буквально последнего года. Еще 1-2 года назад ИИ-шки плохо следовали инструкциям.
V>То, что ты увидел черную корову (в своей работе получил вау-эффект) — не значит, что все коровы черные и даже не значит, что она со второго бока тоже черная.
Я не однократно использовал ИИ для решения конкретных задач, вроде той, что я тебе привел в качестве примера. Не скажу, что всегда удавалось добиться желаемого. Но очень часто. В отличи от тебя я предпочитаю оценивать вещи на практике, а не по пересказу одной бабки.
Что там тебе за коровы мерещатся, я не знаю. Я вполне реалистично оцениваю ИИ и часто критикую оные за тупость.