Добавить в корзинуПозвонить
Найти в Дзене
Охота на математику

Назад в подвалы

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

Иллюзия, что ИИ-агенты отменяют необходимость в фундаментальной Computer Science, снимается наблюдением: агенты возвращают CS на уровень архитектурной семантики, освобождая программиста от синтаксической возни, но не от мышления о сложности.

Тезис: «Агенты пишут код → программисту не нужна CS»

Достаточно уметь формулировать промпты, и агент сам разложит задачу на модули, выберет структуры данных и оптимизирует. На малых масштабах это действительно работает. CRUD, простая форма на React, изолированный парсер — агент справляется, и CS кажется избыточной.

Противоречие возникает при переходе к сложным системам. Агент не обладает глобальным инвариантом системы. Он решает локальную задачу, максимизируя вероятность правильного ответа по токенам, а не глобальную сложность, консистентность или предсказуемость во времени.

Антитезис: без CS агенты порождают новый тип спагетти-кода

Наблюдаемые эффекты при проектировании сложных систем выглядят так.

Когда агент выбирает структуру данных, без знания теории сложности он почти всегда использует список или словарь. В критическом пути это даёт квадратичную сложность. Программист с CS-мышлением укажет, где нужен хэш, B-дерево, immutable вектор или фильтр Блума.

Когда агент проектирует контракты между сервисами, он даёт текстовое описание вроде «тут должна быть синхронная REST ручка». Программист, понимающий теорему CAP, согласованность, идемпотентность, саги и CRDT, задаст формальные границы.

Когда агент исправляет баг гонки, он добавляет sleep или лочит всё подряд. Программист, знакомый с happens-before, безблокировочными структурами и транзакционной памятью, выберет правильную модель синхронизации.

Когда несколько агентов правят один модуль, они начинают галлюцинировать на гранях, дублировать логику и ломать инварианты. Программист с CS-мышлением требует формальных границ — типов, трейтов, контрактов, — иначе код не пройдёт статическую проверку.

Результат без CS: система работает первые недели, затем фрагментируется. Агенты начинают «лечить» последствия непонимания сложности, порождая ещё больше кода и ошибок. Токенов уходит всё больше.

Синтез: агенты как исполнители, программист как архитектор инвариантов

Из Computer Science критическими становятся несколько областей.

Теория сложности. Чтобы указать агенту «найди путь в графе, но не экспоненциально», без CS не получится. Агент напишет BFS там, где нужен A* с эвристикой.

Параллелизм и распределённость. Агент не отличит случайный дедлок от принципиальной невозможности консенсуса в асинхронной системе — результата FLP. Программист должен задать модель отказоустойчивости.

Инварианты и формальные методы. В сложной системе без CS программист не может верифицировать код агента. Только зная пред- и постусловия, теорию типов, алгебраические спецификации, он ограничивает пространство галлюцинаций.

Композиция и модульность. CS учит открыто-закрытому правилу, границам контекстов, закону Деметры. Без этого агенты создадут хрупкие связи, которые невозможно развивать.

Роль программиста меняется. Раньше он писал код. Теперь он пишет правила порождения кода: архитектурный каркас, сигнатуры, контракты, property-based тесты. Раньше отлаживал синтаксис. Теперь отлаживает некорректные инварианты — то, что агент не нарушил технически, но сделал логически неверно. Раньше читал документацию API. Теперь проектирует семантические слои, которые агенты не могут пересечь, например слой домена не видит БД. Раньше знал один язык. Теперь знает парадигмы и модели вычислений — агент переведёт на любой язык, но архитектуру должен задать человек.

Что меняется в обучении программистов

Усиливается важность теории типов — чтобы агент не мог сгенерировать некорректное склеивание. Теории категорий для композиции: монады и функторы здесь не философия, а способ запретить агенту делать неправильно. Парадигм ограничений — constraint programming и логическое программирование, где агент заполняет, но не нарушает. Статического анализа и рерайтинга AST — программист учит агента переписывать код в безопасном стиле. Тестирования на основе свойств — QuickCheck-подход, где программист задаёт свойства, а агент генерирует контрпримеры.

Менее важным становится запоминание синтаксиса стандартной библиотеки — агент знает его лучше. Ручное написание шаблонного кода — это задача агента. Микрооптимизации уровня «поставить const» — линтер с агентом сделают.

Новый метанавык формулируется так: описывать не то, что нужно сделать, а то, чего нельзя нарушить ни при каких изменениях. И это чистая Computer Science — инварианты, сохранение семантики, спекл, контрактная модель.

Код как правило для агентов

Если вы возвращаетесь от вайбкодинга к коду как правилу для агентов, программист без CS не сможет отличить, где правило выражено правильно — типом, трейтом, модульным тестом или property, — а где просто «здесь так принято». Агент скопирует «принято», но не поймёт почему. При изменении системы он сломает инвариант, потому что инвариант не был формализован.

Формализация инвариантов — это и есть Computer Science в чистом виде: дискретная математика, логика, теория вычислений, теория типов.

ИИ-агенты не заменяют CS. Они наказывают за её отсутствие, размножая ошибки со скоростью генерации токенов. Программист учит агента коду как закону, но чтобы составить законы, нужно понимать природу вычислений.

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