Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Богданов В.С. Системы математического обеспечения цифровых вычислительных машин учеб. пособие

.pdf
Скачиваний:
10
Добавлен:
23.10.2023
Размер:
4.27 Mб
Скачать

- 20 -

математик Г.С. Цейтлин привел пример, насчитывающий лишь семь допустимых подстановок. Наряду с такими центральными проблемами теории алгоритмов, как уточнение понятий алгорит­

ма', алгоритмической неразрешимости, в связи с проектированием ЦВМ возникли прикладные, такие, как конструирование алгорит­

мов с учетом приспособленности их к операциям

ЦВМ, скорос­

ти решения задач и устойчивости.

 

Перейдем теперь к понятиям, касающимся некоторых вопро­

сов формальных языков для записи алгоритмов,

так называемых

алгоритмических языков.

 

§ б. Элементы теории формальных языков

Разработка и применение алгоритмических языков базиру­ ется на математическом аппарате, разрабатываемом недавно возникшей и успешно развивающейся наукой - математической лингвистикой. Ниже рассматриваются основные понятия и неко­ торые результаты математической лингвистики, имеющие отно­ шение к разработке алгоритмических языков.'

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

- 21 -

Рассмотрим кратко ряд понятий математической лингвистики. Язык, Функционирование систем обработки информации не­

мыслимо без передачи информации о различных событиях. Еассмат-

.ривая более внимательно процесс передачи информации (речевой),

мокно придти к выводу, что он проходит в двух планах: выра­ жения и содержания. Содержание (смысл) представляет­

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

План содержания можно рассматривать как некоторое мно­

жество "рныслов", а план выражения - как некоторое множество “текстов". Между смыслами и текстами имеется вполне определен­ ное соответствие: каждому смыслу отвечает более или менее оп­ ределенная совокупность текстов. Правила, определявшие, ка­ кие тексты соответствуют таким смыслам, и образуют по сущест­

ву то, что

в обиходе принято называть языком.

 

Итак,

язык - это функция, которая каждому

смыслу ставке

в соответствие некоторое (конечное) множество

синонимичны/:

текстов.

Эта функция является эффективно вычисленной, поскольку язык представляет собой способ эффективного получения текс­ тов по заданным смыслам (функцию F (x) принято называть эф- - фективно вычисленной, если для нее указан вполне определен­ ный способ, позволяющий для любого значения X найти за ко­

нечное число шагов значение F (x ), то есть если она может быть вычислена на машине).

Язык - это система, состоящая из объектов различных уровч

- 22

ней (словоформы, олова, предложения и т.д.), связанных в сис­ тему некоторыми мнокѳстваии правил. Эти объекты строятся как некоторые последовательности символов. Символы выбирается из конечного множества, называемого алфавитом.

Для каждого конкретного языка эти множества цепочек,по­ следовательностей символов задастся с помощью некоторых спе­ циальных систем правил, называемых грамматиками.

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

Из яабора некоторых символов можно строить самые различ-

ные цепочки-; некоторые цепочки в данном языке считается пра­ вильными', а некоторые неправильными. Формальная грамматика задает правильные цепочки, если имеет место одно из двух ус­ ловий:

1)для любой предъявляемой цепочки грамматика умеет ре­ шить-, является ли цепочка правильной, и может проанализиро­ вать эту цепочку;

2)грамматика умеет построить любуе правильную цепоч­ ку и не строит неправильных.

Грамматика первого типа называется распознающей, второ­ го типа - порождающей.

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

■“ ■Теория формальных грамматик служит' основой теории -так

называемых контекстно-свободных-языков, к классу которых при-

9

надлежат различные алгоритмические языкя.

- 23 -

Наиболее широко в настоящее время в теории языков про­

граммирования используется порождающие грамматики. Порождающая грамматика - это система, включающая следу­

ющие части.

1. Основной (терминальный) словарь - набор исходных эле­ ментов, из которых строятся цепочки, порождаемые грамматикой.

2. Вспомогательный (нетерминальный) словарь - набор сим­ волов, которыми обозначаются классы элементов или цепочек -

инекоторые специальные элементы.

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

4. Правила подстановки - выражение вида "Х-’ -У1' , что означает замену X на У, где X и У цепочки, содержащие любые терминальные и нетерминальные символы.

Правила подстановки позволяют Формировать алгоритмичес­

ки (на вычислительной машине) правильные грамматически выра­ жения на-данном языке (сравните с нормальными алгоритмами

Маркова).. ■ Следует подчеркнуть, что порождающая грамматика не яв­

ляется алгоритмом; правила подстановки - это не последова-

е . тельность, а совокупность разрешений. Это означает, что пра­

вила

вида

Х-^У понимаются в грамматике как "X можно заменить

на У"

можно ,.е заменять), и порядок применения правил про­

извольный

в отличие

от алгоритмов.

 

Рассмотрим еще

понятия выводимости и вывода, на базе ко­

торых можно дать определение языка, порождаемого грамматикой.

Если имеется две цепочки X и 7,

причем X

~Z,A Z z ,

а

2 T - W 3 и есть в грамматике правило

А -^В, то говорят,

что

7 непосредственно выводима в данной грамматике

за

один шаг

из X.

 

 

 

 

 

Если имеется последовательность цепочек XQ, Xj........

ХЛ ,

в которой каждая последующая цепочка выводима из Х0, то 1/г

выводима из XQ. Последовательность Х0, Х р . . . ,

Хд

называет­

ся выводоіи

 

 

 

 

 

Совокупность всех

цепочек, состоящих из терминальных

символов, выводимых из

начального символа в данной граммати-

ке, называется языком, порождаемым данной грамматикой.

Язык, таким образом, - это множество цепочек, выводов,

порождаемых данной грамматикой.

Существует несколько типов грамматик, среди которых для

теории языков программирования наибольший интерес представ­ ляют так называемые контекстно-свободные грамматики (КС-граы- натики), порождающие контекстно-свободные языки.

Терминальная цепочка X может иметь вид Z,CZS . Тогда правило ZtCZ2 ~*~Z, WZz означает разрешение заменить С на

Wтолько в данном контексте Z ,......Ег .

Сам кон-текст при замене переписывается без изменения. Правила замена, используемые контекстом, называются контекст­ но-связанными, а правила, в которых замена производится без использования контекста, называются контекстно-свободными.

Грамматики, -содержащие только контекстно-свободпые пра­ вила'5, называются контекстно-свободными, или КС-граыаатикаіш. В левой части правила подстановки X -*-У стоит один символ'

- 25 -

для КС-грамматин. КС-грамматики обладаііт двумя весьма цен­ ными с точки зрения составителя программ транслирования ка­ чествами. Во-первых, требование, чтобы в левой части правила был только один символ, делает структуру КС-грамматик более простой, что облегчает составление программ трансляции. КС- гоамматики,“во-вторых, дают возможность описывать языки про­ граммирования в принципе^без учета контекстов, что тоже, уп­ рощает их изучение и описание.

Трансляция алгоритмических языков в машине осуществляет­

ся самой ЭВМ, то есть некоторым автоматом. Существует

вполне

определенная связь между теорией формальных грамматик

и тео­

рией автоматов,

в частности,

так называемых стековых автома­

тов. Перейдем к

рассмотрению

некоторых аспектов работы

сте­

кового (магазинного) автомата

[ з ] .

 

§ 7. Понятие магазинного автомата

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

•Реализация трансляторов на основе таких автоматов пред­ ставляется достаточно простои и гибкой.

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

Магазин (магазинный автомат) - это память, используемая

- 26 -

для хранения символов некоторого алфавита и соответствующим образом организованная.

При трансляции, как правило, в памяти хранятся словарь

данного входного к выходного языков и синтаксические таблицы.

мяти

используется

как

пассивные справочника. Кроме того, в па­

Оки

 

 

есть место, где

происходит переработка всех промеяуточ-

якх

результатов. Это

рабочая зона. Она состоит из

ряда мага­

зинов, которые можно'

представлять как устройства,

аналогичные

винтовочному магазину. В магазин моіяо вводить только по од­

ному сиазолу и только с одного конца, и только с

того же кон­

ца можно считывать символы из магазина так,

 

что

сзшвол, вве­

денный в магазин последним, считывается из

него

первым.

 

 

 

Организация памяти в виде магазинного автомата такова,

щке ранее там, переводятся в соседние ячейки

все

симеолы,

быв-

что

когда в него записывается новый символ,

 

 

 

 

 

 

("устанавливает­

ся"

в

магазине), а когда верхний символ стирается (вынимает­

с я ),

 

остальные символы автоматически поднимается

на ячейку

вверх

(рис. 2 ).

 

 

 

 

иг

__ J 0__

_ИГ __

гг

ИГ

предА-

гг

__иг_

 

иг

 

преол.

 

преол.

 

 

 

?

' 1 1 1 1

^--

!

 

 

а) исходный

б) введение

в) изъятие из ис­

магазин

в магазин

ходного мага­

еде одного •

зина двух сим

 

 

символа

волов

Рйс. 2.

- 27 -

Фактически М-автсмат^или автомат с магазинной памятью, представляет собой недетерминированную машину Тьюринга,удов­ летворяющую следующим условиям (недетерминированная машина Тьюринга отличается от обычной машины Тьюринга только тем, что в ее программе могут быть различные команды с тсадественными левый частями).

1. Пашина имеет три ленты: входную, рабочую и выходную

итри головки по одной для ленты. Все ленты ограничены слеза

ине ограничены справа^

2. Машина имеет три внешних алфавита: входной - для входной ленты (основной словарь), рабочий - для рабочей лен­

ты (набор возможных направлений синтаксического анализа исход­

ного предлояения пляс

"пустой символ"), выходной (набор ле­

вых и правых скобок,

помеченных типами составляющих, плюс '

"пустой символ").

 

3. Машина монет

производить, следующие элементарные опе­

рации:

 

а) на входной ленте -

только читать символ и сдвигать голов­

ку на одну ячейку

вправо;

б) на рабочей ленте - либо писать в обозреваемой ячейке не­ пустой символ и сдвигать головку на одну ячейку вправо, либо сдвигать ее влево и стирать записанный в ячейке сим­ вол. Таким образом, рабочая лента есть не что иное, как магазин;

в) на выходной ленте только записывать символ и сдвигать го^ ловку на одну ячейку вправо (на выходной ленте должно вы­ писывать скобочное представление системы составляющих для

- 28 -

анализируемой фразы) ; г ) на каждом шаге машина работает только на одной ленте ;

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

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

Для каждого ^-автомата можно рассматривать множество, состоящее из всех тех и только тех цепочек (обрезков текстов), которые он способен проанализировать. Это множество является языком, определяемым M-автоматом. Доказано, что

а) для каждого М-автомата можно построить эквивалентную ему КС-грамматику;

б) для каждой КС-грамматики можно построить эквивалент­ ный ей М-автомат.

Последнее обстоятельство указывает на практическую цен­ ность понятия Ц-автомата, на базе которого строятся многие типы трансляторов.

- 29 -

Г л а в а И

ХАРАКТЕРИСТИКА НАИБОЛЕЕ РАСПРОСТРАНЕННЫХ АЛГОРИТМИЧЕСКИХ ЯЗЫКОВ

§I . Краткий обзор алгоритмических языков

иобласти кх применения

Смомента появления первых алгоритмических языков (1 9 3 - -1955 г г .) до настоящего времени разработано несколько тысяч различных алгоритмических языков. Так как их разработка ве­ лась зачастую независимо, причем для одинаковых классов за­ дач, многие из язшсоз были весьма сходны между собой. С появ­ лением международного универсального алгоритмического' языка АЛГОЛ-бО многие другие языки вышли из употребления. Однако

после появления ШГОЛа разработчики и потребители ЦВМ пришли

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

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

Соседние файлы в папке книги из ГПНТБ