Нидерландский учёный Эдсгер Дейкстра известен алгоритмом кратчайшего пути и письмом «Goto considered harmful». В 1978 году он написал короткий текст с названием, которое звучит как приговор: «О глупости „программирования на естественном языке“». Повод был простой: людям давно казалось, что программировать трудно из-за формальных символов, и что машину нужно научить понимать обычную речь.
Дейкстра возражает не против удобства. Он возражает против бесплатного обеда. Интерфейс — не точка, где работа делится на две части, а ещё и канал, по которому стороны должны договориться. Чем шире интерфейс, тем больше работы на обоих концах. Поэтому инженеры выбирают «узкие интерфейсы»: небольшой набор операций с ясным контрактом. Естественный язык — самый широкий интерфейс из возможных.
Дальше — аргумент, который сегодня читается особенно остро. Формальная запись хороша тем, что её преобразования подчиняются немногим простым правилам; она не даёт незаметно протащить бессмыслицу. А «естественность» родного языка, пишет Дейкстра, сводится к лёгкости, с которой мы делаем утверждения, чья бессмыслица не очевидна. Мы говорим «сделай удобно», «пусть работает быстро», «чтобы всё было надёжно», — и каждый понимает это по-своему.
«Естественность» родного языка — это лёгкость, с которой мы делаем утверждения, чья бессмыслица не очевидна.
В пример он приводит историю математики: греческая математика застряла в словесной и изобразительной форме, алгебра ненадолго вернулась к риторике и потеряла темп, а современная наука смогла двинуться дальше, когда появились формальные символы — от Виета и Декарта до Лейбница и Буля. Символы не украшение: они сужают пространство допустимых преобразований, и именно поэтому с ними можно работать.
Теперь подставьте вместо «машины, понимающей английский» большую языковую модель. Она действительно принимает обычную речь и выдаёт код. Но она не устраняет вопрос, а перераспределяет его: модель угадывает, что вы имели в виду, опираясь на корпус, а вы всё равно должны проверить, что получилось. Промпт — это не спецификация. «Сделай удобно» остаётся «сделай удобно», даже если собеседник вежливо отвечает целым файлом.
Дейкстра не предсказывал LLM и не спорил с ними. Он спорил с идеей, что формальность — это налог на удобство, который можно отменить. LLM снижают стоимость написания кода, но не стоимость решения, что именно правильно. Типы, тесты, схемы и доказательства не исчезают: они остаются тем самым узким интерфейсом, на котором можно договориться о смысле.
Его финальная фраза звучит как пророчество, но остаётся шуткой: машины, запрограммированные на нашем родном языке, «так же дьявольски трудно сделать, как и использовать». Сегодня первую половину фразы удалось сдвинуть. Вторая — всё ещё работа.