Найти тему

Чем естественный язык отличается от формального

Внесу ещё немного ясности в терминологию. Сегодня о том, что такое формальный и естественный языки.

Естественный язык - это язык, на котором говорят люди. Например, русский, английский, китайский и т.п. Естественные языки не были разработаны людьми, они развивались естественным путём (хотя позже люди придумали для них правила и даже пытаются их соблюдать).

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

Языки программирования - это формальные языки, предназначенные для записи алгоритмов и вычислений в виде программы.

Формальные языки обычно имеют строгие синтаксические правила (правила языка), которым безоговорочно подчиняется структура кода. Например, в математике выражение

3 + 2 = 5

имеет правильный синтаксис. А вот

3 + 2 равно 5

имеет НЕправильный синтаксис. Хотя для человеческого (естественного) языка разницы нет, и результат выражения в обоих случаях правильный.

Синтаксические правила бывают двух видов:

  • Относящиеся к токенам
  • Относящиеся к структуре

Токены - это основные элементы языка, такие как слова, числа и другие неделимые элементы. Аналогом токена в естественном языке можно считать слово. То есть человеческий язык состоит из слов, а формальный - из токенов.

В приведённом выше примере слово “равно” является недопустимым в языке формул токеном. Так формулы не записываются. Для того и придуман знак (токен) “=”, чтобы сократить и упростить запись математических формул.

Второй тип правил синтаксиса относится к способу объединения токенов. Например, операция

3 + = 3

недопустима, хотя она состоит из допустимых токенов. Потому что в математике символы + и = нельзя использовать один сразу за другим.

Это х0рошо структуриров@нное пр3длож3ние с недопустимыми т*кенами. Это токены предложение допустимые содержит, но недопустимую структуру все.

Когда вы читаете предложение на естественном языке или утверждение на формальном языке, вы должны понять структуру (хотя на естественном языке вы делаете это подсознательно). Этот процесс называется синтаксическим разбором, или парсингом.

Формальные и естественные языки имеют много общих свойств - токены, лексемы, структура и синтаксис. Однако есть и отличия:

  • Двусмысленность. Естественные языки полны неоднозначности, с которой люди справляются с помощью контекстных подсказок и другой информации. Формальные языки разработаны так, чтобы быть как можно более однозначными. Это означает, что любое утверждение имеет ровно одно значение независимо от контекста.
  • Избыточность. Чтобы компенсировать неоднозначность и уменьшить недопонимание, в естественных языках много избыточности. В итоге они часто многословны. Формальные языки менее избыточны и более конкретны.
  • Буквальность. Естественные языки полны идиом и метафор. Если я скажу: “Белая ворона”, то, вероятно, я имею в виду не белую ворону или другую птицу, а “человека не такого, как все”. Утверждения в формальных языках означают именно то, что они означают. И в формальном языке “белая ворона” - это ворона белого цвета, и ничего более. Более того - в некоторых языках программирования даже регистр символов имеет значение, то есть “Вася” и “вася” - это разные слова (токены) с разным значением.
  • Пунктуация. В естественном языке пунктуация нужна для лучшего понимания текста. Однако без точек, запятых и восклицательных знаков вы всё равно поймёте текст. В формальном языке пропущенная или поставленная не в том месте запятая может привести к катастрофе в буквальном смысле этого слова (сколько уже было аварий, в том числе и с человеческими жертвами, из-за небольших ошибок в программе).

Ну что же. На этом пока всё. Подписывайтесь на канал, чтобы ничего не пропустить.