Детерминированная vs вероятностная генерация кода: почему конверсия Bun в Rust через Vibe-Coding вызывает тревогу

Ной Холл, пишущий для The Tech Enabler, проводит четкую границу между детерминированной и вероятностной генерацией кода. В качестве предостережения он использует недавнюю конвертацию миллионной кодовой базы Bun с Zig на Rust, выполненную в стиле «vibe coding». Его главный аргумент: детерминированные системы дают согласованные, проверяемые результаты; LLM вносят неопределенность, делающую проверку кода в масштабе невозможной.
Детерминированная генерация кода
Холл указывает на устоявшиеся детерминированные инструменты: Python 2to3 для миграции с Python 2 на 3, и транспиляторы для таких языков, как Elm, PureScript и TypeScript, которые всегда выдают одинаковый JavaScript. Его собственный язык Derw может выводить JavaScript, TypeScript или английский; Tegan выводит JavaScript или Go; Mojie нацелен на JavaScript, Python или английский. Все они основаны на AST-to-AST трансформации — при одинаковом входе вы всегда получаете одинаковый выход. Согласованность имеет значение: «Если баг согласован, мы можем его исправить. Если баг несогласован, его исправление становится экспоненциально сложнее».
Вероятностная генерация кода
LLM каждый раз выдают разный результат — иногда A, иногда B. Три года назад Холл создал neuro-lingo как пародию: люди пишут только сигнатуры функций и комментарии, а LLM генерируют реализацию заново при каждой компиляции. Пример:
function add(a: number, b: number): number {
// Сложить два числа
}
function main() {
// Вывести "Hello World" в консоль
// Вывести результат add(2, 3)
}«Каждый раз, когда компилируется neuro-lingo, код генерируется заново LLM. Он каждый раз немного отличается. Иногда вносит баги. Иногда он чистый и простой. Иногда хаотичный». Холл утверждает, что полностью управляемые ИИ потоки кода делают именно это, но отправляют в продакшн с ответственностью на человеке.
Ловушка «у нас есть тесты»
Одних тестов недостаточно для гарантии качества. Холл приводит SQLite как самую протестированную кодовую базу: 155,8 KSLOC кода на C против 92 053,1 KSLOC тестового кода (в 590 раз больше). Несмотря на 100% покрытие ветвей, миллионы тестовых случаев и обширные обвязки, SQLite все равно полагается на проверку человеком. «Невозможно проверить 1 миллион строк изменений за 9 дней. Bun не проверял код, который они слили в master».
Холл заключает, что детерминированная генерация кода все равно требует валидации, а вероятностная генерация создает риск, масштабируемый с количеством строк. Исходная статья глубже раскрывает каждый пример.
📖 Читать полный источник: HN AI Agents
👀 Смотрите также

Gemma 4 выпущена: четыре размера моделей для локального размещения ИИ
Google выпустила Gemma 4 с четырьмя размерами моделей, оптимизированными для различного оборудования, включая периферийные устройства, ноутбуки и графические процессоры. Все модели являются мультимодальными с возможностями обработки текста и изображений, а меньшие модели поддерживают работу с аудио в реальном времени.

Утечка данных Mercor: украдено 4 ТБ голосовых образцов и удостоверений личности – что могут сделать злоумышленники
4 ТБ голосовых записей, привязанных к удостоверениям личности, украдены у 40 000 подрядчиков Mercor. Злоумышленники могут клонировать голос из 15 секунд чистой записи и обходить голосовую верификацию в банках, совершать дипфейк-звонки и страховое мошенничество.

Квантование llama.cpp Q8_0 получает ускорение в 3.1 раза на видеокартах Intel Arc благодаря исправлению переупорядочивания в SYCL.
Исправление для SYCL-бэкенда llama.cpp повышает производительность Q8_0-квантования на видеокартах Intel Arc с 21% до 66% от теоретической пропускной способности памяти, достигая 15,24 токенов/сек против 4,88 токенов/сек ранее на Arc Pro B70 с моделью Qwen3.5-27B.

Открытие новых возможностей: использование Claude Max с Opus 4.6 в качестве API
Откройте для себя творческий подход к использованию подписок Claude Max как API, совместимых с Opus 4.6, который был рассмотрен энтузиастами технологий в сообществе.