Мы живём в эпоху, когда ChatGPT пишет нам тексты, Stable Diffusion генерирует изображения, а Copilot помогает писать код, как будто заглядывая в наши мысли. Кажется, совсем немного — и компьютеры научатся понимать нас так же легко, как друг за чашкой кофе. Но почти полвека назад великий учёный Эдсгер Дейкстра предупредил нас о том, что эта мечта может оказаться не только иллюзорной, но и крайне опасной.
📜 Привычка к формальной точности
В 1978 году Дейкстра, знаменитый компьютерный теоретик и один из отцов структурного программирования, опубликовал эссе «On the foolishness of natural language programming - О глупости программирования на естественном языке». В нём он резко раскритиковал идею, что компьютер должен воспринимать инструкции человека, написанные на естественном языке — таком, как русский или английский.
Причины его возмущения были просты и ясны. Он утверждал, что естественные языки, какими бы удобными они ни казались для повседневного общения, абсолютно непригодны для точных инструкций. Дело в том, что язык человека — это океан неоднозначностей и ловушек, он идеально подходит для создания поэзии или философии, но катастрофически плохо — для написания программ, где малейшая ошибка способна привести к серьёзным последствиям.
🧩 Что же не так с естественным языком?
Вот несколько причин, почему Дейкстра считал естественный язык опасным для программирования:
- 🎭 Неоднозначность
Естественные языки полны двусмысленности. Простое предложение может иметь десятки толкований.
Например: «Поставь книгу на полку у окна». Какая именно полка, какое окно? - 🚧 Отсутствие строгих правил
Формальные языки программирования ценны тем, что в них строго регламентированы синтаксис и семантика. Это позволяет избегать множества ошибок.
Представьте, если бы Python понимал команды вроде:
«Если файлы вроде важные, то скопируй их куда-нибудь». Страшно представить хаос, который это вызовет. - ⚙️ Ложная простота
Вера в то, что программирование станет проще, если машины научатся понимать нашу речь — иллюзия. Дейкстра прямо утверждал: это увеличит нагрузку не только на машину (которая станет невероятно сложной), но и на человека. Чтобы корректно сформулировать инструкцию, человеку придётся стать не менее точным, чем при написании кода.
📚 Уроки истории и математики
Дейкстра напоминает нам, что цивилизация добилась огромного прогресса, когда отказалась от естественного языка в пользу формальных символов:
- 🏛️ Греки были гениями, но их математика зашла в тупик именно из-за устной и визуальной формы рассуждений.
- 📖 Исламский мир продвинул алгебру, но остановился в развитии, вернувшись к словесным формам.
- 🧮 Европейский научный взрыв стал возможным только после появления строгой символики — от Декарта и Лейбница до Буля.
Именно благодаря формализму школьник сегодня способен решать задачи, с которыми раньше справлялись лишь величайшие умы эпохи.
📉 Новая безграмотность и реальность наших дней
Спустя почти 50 лет после эссе Дейкстры мы можем наблюдать его слова в действии. Сегодня люди пишут научные и технические тексты так, что невозможно понять, что именно они имели в виду. Этот феномен называют «новой безграмотностью», когда обилие слов и недостаток чёткости подменяют собой реальную мысль.
Заставьте машину понимать такой язык — и вместо умного помощника вы получите устройство, производящее ещё больше ошибок, чем сейчас.
💡 Моё личное мнение и наблюдение
Мне кажется, Дейкстра оказался прав. Сегодняшние успехи нейросетей кажутся ошеломляющими, но когда мы пытаемся использовать нейросети для написания программ или выполнения критически важных задач, быстро убеждаемся: понимание и выполнение инструкций — это далеко не одно и то же.
Современные LLM (большие языковые модели), такие как GPT-4, умеют «угадывать» наше намерение, но они не гарантируют точность. Да, мы можем описать задачу на обычном языке и получить решение. Но кто возьмёт ответственность за результат, если оно будет неверным? Формализм — это не наказание, это способ защиты от ошибок и неточностей.
Технически сегодняшние модели работают методом статистических ассоциаций. Внутри них нет истинного понимания — только «угадывание». И если мы попытаемся серьёзно использовать естественный язык в критически важных системах, мир столкнётся с лавиной ошибок и непредсказуемых последствий.
🧑💻 Что мы можем вынести из этого сегодня?
Я уверен, что будущее взаимодействия человека и компьютера — это не программирование естественным языком, а сочетание удобных инструментов и строго формализованных интерфейсов:
- 🖥️ Графические интерфейсы для повседневных задач.
- 📜 Формальные языки для написания логики и инструкций, не допускающих ошибок.
- 🧩 Ассистенты и нейросети как вспомогательные инструменты, помогающие находить решения и подсказывать варианты, но не принимающие финальные решения вместо человека.
Мечта об идеальном взаимопонимании между человеком и машиной останется красивой сказкой, пока язык программирования не будет строгим, однозначным и формальным.
Как говорил сам Дейкстра:
«Машины, которые можно программировать на родном языке — будь то английский, французский, русский или суахили — будут одинаково мучительно сложны как для создания, так и для использования».
И, пожалуй, с этим стоит согласиться.
🔗 Ссылки и источники: