§22. Языки и грамматики

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

Подобным образом организуются любые знаковые системы — основы языков.

В информатике язык — комплекс знаний, основанных на одной и той же знаковой системе, позволяющий организовать систему управления из некоторых объектов.

О том, что такое знания, можно узнать из §15, а система управления — из §18.

  • В знания, упомянутые в определении языка, входят и устойчивые сочетания знаков (слова и выражения), и соответствующие им смысловые значения (так называемый словарный запас), и правила, позволяющие интерпретировать знаки, составлять из них выражения и новые знаковые сочетания (если это возможно).
  • Вместо знаковой системы в основу языка можно положить символьную систему (в самом широком смысле слова «символ»). Тогда становится логичным использование таких понятий, как «язык жестов» или «язык цветов». О знаках и символах подробнее — в следующем параграфе.
  • Язык является основой логической структуры любой системы управления (см. §18).

Языки традиционно классифицируются как естественные и формальные.

Естественный язык — такой, структура которого учитывает содержательное значение (множественность смыслов) информации, представленной с его помощью.

В математике существует теорема, декларирующая, что любой ограниченный набор чисел можно связать функцией (правилом). Вот если бы такую функцию удалось построить для словарного запаса какого-нибудь естественного языка!

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

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

Естественные языки ориентированы на живую природу, ими пользуются люди при общении между собой. Правила, лежащие в основе естественных языков, зачастую складываются исторически, в течение длительного времени, периодически подвергаясь изменениям, потому в них имеется множество исключений.

Формальные языки более универсальны в применении, поскольку ими можно описать абсолютно любые процессы, касающиеся не только живой природы. При этом они более посредственны, т. к. слова, образованные на основе их знаковых систем, лишены смысла, как и предложения, состоящие из этих слов. Смысл в них может появиться лишь после конвертации воспроизведённого с помощью формального языка в выражение на естественном языке. Именно поэтому язык математики, например, являясь формальным (инструктивным), предоставляет возможность человеку понимать смысл написанного на нём. К формальным языкам относятся и языки программирования: в то время, как компьютер беспристрастно выполняет записанное с помощью таких языков, человек, собственно и написавший все эти команды, отчётливо понимает, как он это сделал, ради решения какой задачи и как это будет работать.

  • Трансфер информации между двумя объектами осуществим только в том случае, если оба объекта владеют одним и тем же языком. Этот язык и становится основой протокола связи в системе управления.

  • Для того, чтобы объект мог передать информацию, он должен иметь возможность закодировать её средствами языка. При приёме информации объект декодирует (распознаёт) её согласно правилам языка.

В основе любого языка лежит грамматика.

Грамматика — система правил, описывающих способы словообразования, морфологию и формирование предложений в конкретном языке.

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

Синтаксис — система правил, описывающих способы составления предложений в конкретном языке.

В формальном языке предложением называется завершённая инструкция, т. е. команда, для которой полностью сформирован список уточнений (параметров).

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

На этапе лексического анализа устанавливается, «знает» ли исполнитель команды, упомянутые в языковой конструкции.

Семантический анализ позволяет определить «смысл» каждой команды, т. е. соотнести её с исполняющим механизмом.

Задачей синтаксического анализа является определение условий, при которых выполняется заданное действие. На этом этапе проверяются уточнения инструкций, т. е. их параметры.

Любой исполнитель должен «уметь» проводить все перечисленные этапы анализа, прежде чем им будет осуществлена попытка выполнения полученных инструкций. Напомним, что подробнее об исполнителях см. §18.

Анализ языковой конструкции или его отдельный этап могут оказаться невыполненными, если язык является нераспознаваемым (построенным на нераспознаваемой грамматике, подробнее о таких грамматиках см. §27). Невозможно создать устойчиво работающую систему управления, если в ней предполагается использование такого языка. Статус формальных языков исследуется в теории формальных грамматик.

Если компьютер иногда «зависает», то почему? И зачем выпускаются обновления для различных программ? Почему желательно устанавливать эти обновления? В свете сказанного выше — всё ясно…

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

Пользователям последних версий операционной системы Windows известен Промежуточный язык Microsoft (MSIL — Microsoft Intermediate Language, или даже короче — IL). Дело в том, что программа может выполниться только в случае, если её «поймёт» процессор компьютера. Поэтому обычно программа реализуется на машинном языке, т. е. на таком, который понятен процессорам определённого вида. Для последних версий Windows программа может поставляться не на машинном языке, а на MSIL: его «понимает» не процессор, а программная платформа .NET (.Net Framework). Перед выполнением такой программы среда исполнения платформы .NET (CLR, Common Language Runtime — общеязыковая среда исполнения) проверяет её и переводит на тот язык, который понятен конкретному процессору, установленному в компьютере (этот процесс называется компиляцией «на лету» — just-in-time, JIT-компиляцией). Из-за этой своей особенности платформа .NET получает всё большее распространение, ведь теперь не надо создавать программы под конкретную архитектуру! Справедливости ради отметим, что платформа .NET всё же не умеет «адаптировать» программы для любых процессоров, однако количество поддерживаемых процессоров со временем постепенно увеличивается.