Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инф для менеджера.doc
Скачиваний:
9
Добавлен:
09.11.2019
Размер:
2.94 Mб
Скачать

1.3.2.Теория формальных грамматик и языков

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

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

Грамматика - это правила построения сообщений на каком-то языке. Грамматика основана на синтаксисе.

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

  1. цветы были у меня;

  2. цветы были у нее;

  3. цветы были на поляне.

Все языки общения человека и компьютера - формальные языки. Компьютер должен однозначно "понимать", что от него хотят. В частности, все языки программирования являются формальными, например, Fortran, Basic, Pascal, C, Java.

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

Синтаксическая ошибка - это нарушение каких-либо формальных правил языка при записи сообщений, программ, команд и т. п. Предложение "Карова гуляет па лугу" с точки зрения правил русского языка содержит 2 синтаксические ошибки, они подчеркнуты. Если бы в процессе программирования было бы написано, например, Rait вместо Write или Fankshion вместо Function, то это были бы синтаксические ошибки.

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

Семантическая ошибка - это нарушение смысла при синтаксически верном описании каких-либо явлений, программ, команд и т. п. Предложение "Корова громко лает" верное предложение с точки зрения синтаксиса русского языка, а с точки зрения семантики нет. Примером семантической ошибки при программировании на языке Basic может служить, например, написание команды P = F + S вместо P = F + 5. Букву S легко перепутать с цифрой 5. Из-за семантических ошибок формально верная программа работает, но делает не совсем то, что от нее требуется.

Естественно, семантические ошибки автоматически обнаружить компьютер не в состоянии, их обнаружить может только человек в результате изучения работы программы в разных режимах. В очень сложных системах (например, в MS Windows) семантические ошибки устраняются годами в процессе эксплуатации, а тысячи их так и остаются невыявленными. Именно из-за семантических ошибок в управляющих программах могут разоряться банки, сталкиваться поезда, сбиваться с курса ракеты, самолеты и т. п.