
книги из ГПНТБ / Богданов В.С. Системы математического обеспечения цифровых вычислительных машин учеб. пособие
.pdf- 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 г г .) до настоящего времени разработано несколько тысяч различных алгоритмических языков. Так как их разработка ве лась зачастую независимо, причем для одинаковых классов за дач, многие из язшсоз были весьма сходны между собой. С появ лением международного универсального алгоритмического' языка АЛГОЛ-бО многие другие языки вышли из употребления. Однако
после появления ШГОЛа разработчики и потребители ЦВМ пришли
к выводу, что невозможно создать единый алгоритмический язык,
с помощью которого можно было бы рационально описать любой класс задач. Такой вывод является совершенно естественным, так как язык программирования - это математический аппарат, предназначенный для решения определенного класса задач. Ис пользование его для выполнения несвойственных данному языку функции вызывает такие не трудности, как использование опре деленного математического аппарата в чуждой ему области.