Найти в Дзене
Цифровая Переплавка

🗣🤖 «Говорите по-человечески!»: почему программирование на естественном языке — красивый, но опасный миф

Мы живём в эпоху, когда ChatGPT пишет нам тексты, Stable Diffusion генерирует изображения, а Copilot помогает писать код, как будто заглядывая в наши мысли. Кажется, совсем немного — и компьютеры научатся понимать нас так же легко, как друг за чашкой кофе. Но почти полвека назад великий учёный Эдсгер Дейкстра предупредил нас о том, что эта мечта может оказаться не только иллюзорной, но и крайне опасной. 📜 Привычка к формальной точности В 1978 году Дейкстра, знаменитый компьютерный теоретик и один из отцов структурного программирования, опубликовал эссе «On the foolishness of natural language programming - О глупости программирования на естественном языке». В нём он резко раскритиковал идею, что компьютер должен воспринимать инструкции человека, написанные на естественном языке — таком, как русский или английский. Причины его возмущения были просты и ясны. Он утверждал, что естественные языки, какими бы удобными они ни казались для повседневного общения, абсолютно непригодны для точных

Мы живём в эпоху, когда ChatGPT пишет нам тексты, Stable Diffusion генерирует изображения, а Copilot помогает писать код, как будто заглядывая в наши мысли. Кажется, совсем немного — и компьютеры научатся понимать нас так же легко, как друг за чашкой кофе. Но почти полвека назад великий учёный Эдсгер Дейкстра предупредил нас о том, что эта мечта может оказаться не только иллюзорной, но и крайне опасной.

📜 Привычка к формальной точности

В 1978 году Дейкстра, знаменитый компьютерный теоретик и один из отцов структурного программирования, опубликовал эссе «On the foolishness of natural language programming - О глупости программирования на естественном языке». В нём он резко раскритиковал идею, что компьютер должен воспринимать инструкции человека, написанные на естественном языке — таком, как русский или английский.

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

🧩 Что же не так с естественным языком?

Вот несколько причин, почему Дейкстра считал естественный язык опасным для программирования:

  • 🎭 Неоднозначность
    Естественные языки полны двусмысленности. Простое предложение может иметь десятки толкований.
    Например: «Поставь книгу на полку у окна». Какая именно полка, какое окно?
  • 🚧 Отсутствие строгих правил
    Формальные языки программирования ценны тем, что в них строго регламентированы синтаксис и семантика. Это позволяет избегать множества ошибок.
    Представьте, если бы Python понимал команды вроде:
    «Если файлы вроде важные, то скопируй их куда-нибудь». Страшно представить хаос, который это вызовет.
  • ⚙️ Ложная простота
    Вера в то, что программирование станет проще, если машины научатся понимать нашу речь — иллюзия. Дейкстра прямо утверждал: это увеличит нагрузку не только на машину (которая станет невероятно сложной), но и на человека. Чтобы корректно сформулировать инструкцию, человеку придётся стать не менее точным, чем при написании кода.

📚 Уроки истории и математики

Дейкстра напоминает нам, что цивилизация добилась огромного прогресса, когда отказалась от естественного языка в пользу формальных символов:

  • 🏛️ Греки были гениями, но их математика зашла в тупик именно из-за устной и визуальной формы рассуждений.
  • 📖 Исламский мир продвинул алгебру, но остановился в развитии, вернувшись к словесным формам.
  • 🧮 Европейский научный взрыв стал возможным только после появления строгой символики — от Декарта и Лейбница до Буля.

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

📉 Новая безграмотность и реальность наших дней

Спустя почти 50 лет после эссе Дейкстры мы можем наблюдать его слова в действии. Сегодня люди пишут научные и технические тексты так, что невозможно понять, что именно они имели в виду. Этот феномен называют «новой безграмотностью», когда обилие слов и недостаток чёткости подменяют собой реальную мысль.

Заставьте машину понимать такой язык — и вместо умного помощника вы получите устройство, производящее ещё больше ошибок, чем сейчас.

💡 Моё личное мнение и наблюдение

Мне кажется, Дейкстра оказался прав. Сегодняшние успехи нейросетей кажутся ошеломляющими, но когда мы пытаемся использовать нейросети для написания программ или выполнения критически важных задач, быстро убеждаемся: понимание и выполнение инструкций — это далеко не одно и то же.

Современные LLM (большие языковые модели), такие как GPT-4, умеют «угадывать» наше намерение, но они не гарантируют точность. Да, мы можем описать задачу на обычном языке и получить решение. Но кто возьмёт ответственность за результат, если оно будет неверным? Формализм — это не наказание, это способ защиты от ошибок и неточностей.

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

🧑‍💻 Что мы можем вынести из этого сегодня?

Я уверен, что будущее взаимодействия человека и компьютера — это не программирование естественным языком, а сочетание удобных инструментов и строго формализованных интерфейсов:

  • 🖥️ Графические интерфейсы для повседневных задач.
  • 📜 Формальные языки для написания логики и инструкций, не допускающих ошибок.
  • 🧩 Ассистенты и нейросети как вспомогательные инструменты, помогающие находить решения и подсказывать варианты, но не принимающие финальные решения вместо человека.

Мечта об идеальном взаимопонимании между человеком и машиной останется красивой сказкой, пока язык программирования не будет строгим, однозначным и формальным.

Как говорил сам Дейкстра:

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

И, пожалуй, с этим стоит согласиться.

🔗 Ссылки и источники: