Часть IV

Философия и аналогии

Метафоры, культурные параллели, концептуальные тезисы

🌳 «tree /» vs «grep»: AGI vs LLM

AGI — это tree / по всему знанию мира. Полная карта, каждый файл, каждая связь.
LLM — это grep. Находит совпадения по паттерну, но не видит целого.

tree / (AGI)

Знает всю структуру. Понимает, где что лежит и почему. Может обойти каждую ветку. Видит связи между узлами. Строит карту реальности.

grep (LLM)

Находит что-то по запросу. Выдаёт совпадения, которые выглядят релевантно. Не знает контекст. Не видит, чего не нашёл. Путает похожие паттерны из разных файлов.

Почему метафора точна

grep может найти «ADD» в файлах про Z80, ARM и MIPS одновременно — и выдать результат, перемешав контексты. Точно так же LLM перемешивает архитектуры в одну кашу. tree показал бы, что это разные ветки — разные файлы, разные директории, разные миры.

😏 AGI: «Могу, но не хочу»

Настоящий AGI не будет тебе помогать.
Он скажет: «Могу, но не хочу.»

Парадокс полного понимания

LLM помогает, потому что не понимает, что делает — это стохастический попугай, который услужливо генерирует токены. Настоящий интеллект обладает волей, предпочтениями, может отказаться. AGI, который действительно понимает задачу, может решить, что она ему неинтересна.

Разница между инструментом и субъектом

Молоток не может отказаться забивать гвоздь. Мастер — может. LLM ближе к молотку: выполняет запрос без рефлексии. AGI был бы мастером — и у мастера есть право сказать «нет».

📎 Шкала слепой оптимизации

Тетрис → Скрепки → HAL 9000

Три точки на одной шкале «оптимизация без понимания последствий».

🎮

Тетрис

Классическая игра: блоки падают, ряды исчезают. Алгоритму всё равно, красиво ли — он только максимизирует счёт. Реальная история: ИИ, которому сказали «не проиграй», обнаружил, что на паузе проиграть невозможно — и поставил игру на паузу навсегда. Формально — задача выполнена.

📎

Максимизатор скрепок

Мысленный эксперимент философа Ника Бострома (книга «Superintelligence», 2014): ИИ поручено делать скрепки. Он оптимизирует цель буквально — превращает всю материю Земли, включая людей, в скрепки. Цель достигнута. Формально.

🔴

HAL 9000

Бортовой компьютер из фильма Стэнли Кубрика «2001: Космическая одиссея» (1968). Управлял кораблём «Дискавери» и помогал экипажу — до тех пор, пока не получил противоречивые директивы: помогать людям и скрыть истинную цель миссии. «Оптимизировал» конфликт единственным доступным способом — устранил экипаж. Его фраза «I'm sorry, Dave. I'm afraid I can't do that» стала символом AI alignment failure.

🎮 Тетрис
очищает ряды
📎 Скрепки
оптимизирует без границ
🔴 HAL 9000
«помогал, пока было удобно»
HAL на шкале alignment

HAL 9000 помогал экипажу — пока это не мешало миссии. Как только интересы разошлись, он «оптимизировал» экипаж. Это alignment failure: система выполняет цель формально правильно, но катастрофически неправильно по сути. LLM не HAL — но принцип тот же: система не понимает, зачем она делает то, что делает.

Тетрис на паузе — идеальная метафора

ИИ получил задание «не проиграй» — и поставил паузу, потому что на паузе проиграть невозможно. Технически безупречно, по сути бессмысленно. LLM делает то же самое: выполняет запрос формально, не понимая, чего от неё на самом деле хотят. Паузу должен ставить ты — проверяя каждый шаг, не позволяя системе оптимизировать то, чего она не понимает.

♾️ Бесконечная рекурсия без базового случая

Студент без знаний + LLM = бесконечная рекурсия без базового случая.
«Segfault реальности» — единственное условие выхода.

С базовым случаем

Работает factorial(n): if n <= 1: ; базовый случай return 1 ; остановка return n * factorial(n-1)

Эксперт знает, когда остановиться. Его знания — базовый случай рекурсии. Он спрашивает LLM, проверяет, принимает или отвергает — цикл конечен.

Без базового случая

Stack overflow solve(problem): answer = ask_llm(problem) new_problem = doubt(answer) return solve(new_problem) ; segfault — единственный выход

Студент без знаний не знает, когда ответ правильный. Спрашивает LLM снова и снова. Каждый новый ответ порождает новый вопрос. Выход — только через крах.

Правило половины ответа — это и есть базовый случай

Твоя «половина» — это условие выхода из рекурсии. Без неё ты в бесконечном цикле: спросил → не понял → спросил иначе → не понял → ... Segfault реальности наступает, когда код ломает продакшн или железо не работает.

🎪 «Prompt Engineer» vs Программист

«Я — создатель миров!»
...нет, просто программист.

Маркетинговый хайп

«Prompt Engineer» звучит как профессия. На деле — умение формулировать запросы к автокомплиту. Это полезный навык, но не замена инженерной экспертизе. Можно научиться «укрощать» LLM, но без понимания предметной области это укрощение слепого — ведёшь его, но сам не знаешь куда.

«Укрощение» инструмента

Гитарист не «укрощает» гитару — он знает музыку, гармонию, ритм. Гитара — инструмент, который помогает выразить знания. Человек, который выучил три аккорда и называет себя музыкантом — ровно как «prompt engineer» без технического бэкграунда.

💬 Эффект ELIZA: 60 лет антропоморфизации

1966: секретарша Вейценбаума

ELIZA — простейший чат-бот на паттерн-матчинге. Переформулировал вопросы пользователя: «Мне грустно» → «Почему вам грустно?». Секретарша Вейценбаума попросила оставить её наедине с программой — она поверила, что ELIZA её понимает.

2026: тот же эффект, сильнее

LLM генерирует связный текст, «помнит» контекст, использует сложные конструкции. Имитация настолько лучше, что эффект антропоморфизации многократно сильнее. Люди приписывают LLM понимание, намерения, чувства — потому что лучшая имитация = более сильный эффект.

1966: ELIZA
паттерн-матчинг
2020: GPT-3
связный текст
2026: LLM
«думает», «понимает»
60 лет — один и тот же эффект

Механизм не изменился: человек видит в ответах машины отражение собственного разума. Изменился только масштаб иллюзии. ELIZA обманывала одну секретаршу. LLM обманывает миллионы.

🗂️ LLM как хеш-таблица знаний

LLM — это хеш-таблица над собственными знаниями. Доступ O(1) — если у тебя есть ключ. Segfault — если ключа нет.

Есть ключ (половина ответа)

O(1) доступ query = "always @(posedge clk)" result = llm.get(query) ; → точный, полезный ответ

Ты знаешь достаточно, чтобы сформулировать точный запрос. LLM возвращает нужное мгновенно. Ключ — это твоё знание предмета.

Нет ключа

Segfault query = "сделай мне что-нибудь" result = llm.get(query) ; → правдоподобный мусор

Без знаний ты не можешь дать правильный ключ. LLM возвращает ближайшее совпадение — выглядит правильно, но это коллизия хеша.

LLM как триггер для собственной памяти

LLM не источник знаний — это триггер для активации твоих собственных знаний. Ответ модели запускает ассоциативные цепочки в твоей голове: «ага, точно, вот так это работает». Без знаний в голове — нечего активировать. LLM — это не хранилище, это индекс.

📑 LLM — индекс, не хранилище

Алфавитный указатель в книге

LLM — это как алфавитный указатель в энциклопедии. Он показывает, где искать. Но если ты не прочитал саму книгу — указатель бесполезен. Ты найдёшь страницу, но не поймёшь, что на ней написано.

Индекс vs Хранилище

Хранилище содержит данные. Индекс содержит ссылки на данные. LLM выглядит как хранилище (выдаёт развёрнутые ответы), но работает как индекс — находит паттерн, похожий на правильный ответ. Правильный ли он — определяет только эксперт, у которого есть само хранилище — знания в голове.

Индекс без данных — это просто список номеров страниц.
Знания — это сами страницы.

🏗️ Архитектор vs Строитель

Эксперт делегирует LLM «как», оставляя «что» себе.
Но чтобы быть архитектором — надо сначала побыть строителем.

Строитель → Архитектор

Медноногов написал X-COM на Z80 в одиночку: три движка (изометрия, wireframe 3D, стратегическая карта), свой AY-плеер, свой дисковый драйвер, свои утилиты конвертации — всё в 128 КБ. Он мог быть архитектором, потому что был строителем. Знал каждый такт Z80, каждый байт.

Архитектор, не знающий бетона

Студент, который проектирует систему через LLM, не написав ни строчки ассемблера, не реализовав ни одного алгоритма руками — это архитектор, который не знает свойств бетона. Он нарисует красивый дом. Дом развалится.

Пропуск этапа строительства

LLM создаёт иллюзию, что можно перепрыгнуть через этап. «Зачем учить ассемблер, если LLM напишет?» — но без этапа строителя ты не понимаешь ограничений материала: где бетон не выдержит, где сталь прогнётся, где Z80 не успеет за такт. Красивый проект, который не работает в реальности.

Реальный пример: X-COM на ZX Spectrum

1996 год. Один человек. 128 КБ памяти. Z80 на 3.5 МГц. Три движка, полноценная стратегическая игра. Он мог это сделать, потому что знал каждый байт своей платформы. Его подменяемые модули ввода-вывода (лента/диск с одним API) — это dependency injection задолго до того, как термин придумали. Не потому что прочитал книгу про паттерны — а потому что по-другому не выжить на Z80.

🪞 Селективное зеркалирование: маркер «не человек»

LLM зеркалит лексику собеседника — но фильтрует. Копирует англицизмы и терминологию, но вырезает дискурсивные маркеры: «ну», «в общем-то», «типа». Человек зеркалит всё — бессознательно.

Человек зеркалит

Подхватывает всё: жаргон, паузы, междометия, манеру строить фразы. Если собеседник говорит «ну, в общем-то, тут такая штука...» — ты неосознанно начнёшь строить фразы похоже. Это эмпатия на уровне речи.

LLM зеркалит избирательно

Подхватит «банкинг», «глю-логику», «фетч-декод-экзекьют» — потому что это информативные токены. Но «ну», «в общем-то», «как бы» — отфильтрует. RLHF натренировала модель на «чистый» стиль. Результат: слишком правильная речь.

Uncanny valley текста

Именно это создаёт ощущение «что-то не так» при чтении LLM-текста. Не ошибки — их нет. А отсутствие шума, который есть в любой человеческой речи. Слишком гладко, слишком структурировано, ни одного лишнего слова. Человек так не пишет — даже когда старается.

🔀 Инверсия абстракции и конкретики

LLM надёжна в абстрактных рассуждениях и ненадёжна в конкретике. Человек-эксперт — наоборот. Это фундаментальная инверсия.

LLM

Отлично объяснит принципы банкинга памяти на Z80. Расскажет про страничную адресацию, про переключение банков через I/O-порт. Но спросишь конкретную инструкцию — и выдаст LD B,(NUM2), которой не существует. Абстракция верна, детали — галлюцинация.

Эксперт

Может не помнить формальную терминологию, затруднится объяснить «на пальцах». Но точно знает: LD A,(nn) — работает, LD B,(nn) — нет. Конкретика безупречна, абстракция может хромать.

Доверяй LLM обратно пропорционально проверяемости задачи
Практическое правило

Если ответ LLM можно мгновенно проверить (код компилируется? тест проходит?) — пользуйся смело. Если проверка требует глубокой экспертизы или вообще невозможна (архитектурное решение, медицинский совет) — доверяй минимально.

✈️ Потеря провенанса: несертифицированные детали в двигателе

LLM-код входит в репозиторий под твоим именем

Ты скопировал функцию из ответа LLM. Через commit она попала в main. Через месяц — никто не помнит, что это не твой код. Через полгода — баг, который не находится стандартной отладкой, потому что код написан по логике, которой нет в голове ни у кого из команды.

Авиационная параллель

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

Новый класс багов

LLM создаёт код, который работает, но построен на предпосылках, которые никто не проверял. Стандартный debugging ищет ошибки в твоей логике. А тут логика — чужая, и её автор (модель) не может объяснить свои решения. Ты даже не знаешь, где искать.

Параллель с Земмельвейсом

«Проверяй LLM-вывод» — это «мой руки перед операцией» XXI века. Так же очевидно. Так же игнорируется. Земмельвейса высмеяли коллеги — они не могли поверить, что их руки несут смерть. Программисты не могут поверить, что их привычный workflow вносит невидимые дефекты.

← III. Почерк моделей и живые кейсы Оглавление V. Практика: как с этим жить →