Файл: Богданов В.С. Системы математического обеспечения цифровых вычислительных машин учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.08.2024

Просмотров: 47

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

- 25 -

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

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

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

вполне

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

и тео­

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

в частности,

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

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

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

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

сте­

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

[ з ] .

 

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

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

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

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

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

- 26 -

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

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

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

мяти

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

как

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

Оки

 

 

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

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

якх

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

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

ряда мага­

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

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

аналогичные

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

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

того же кон­

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

 

что

сзшвол, вве­

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

него

первым.

 

 

 

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

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

все

симеолы,

быв-

что

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

 

 

 

 

 

 

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

ся"

в

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

с я ),

 

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

на ячейку

вверх

(рис. 2 ).

 

 

 

 

иг

__ J 0__

_ИГ __

гг

ИГ

предА-

гг

__иг_

 

иг

 

преол.

 

преол.

 

 

 

?

' 1 1 1 1

^--

!

 

 

а) исходный

б) введение

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

магазин

в магазин

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

еде одного •

зина двух сим

 

 

символа

волов

Рйс. 2.


- 27 -

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

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

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

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

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

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

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

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

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

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

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

 

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

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

рации:

 

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

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

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

вправо;

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

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

- 28 -

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

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

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

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

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

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

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


- 29 -

Г л а в а И

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

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

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

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

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

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

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


- 30 -

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

сятков алгоритмических языков, которые широко используется.

И хотя многие из них дублирует друг друга, так как разраба­ тывались независимо друг от друга для одних классов задач,

но применительно к различным типам ЦВ!і, следует указать язы­

ки,которые, по-видимому, сохранятся или будут усовершенство­ ваны, но не отомрут в ближайшем будущем.

Для решения математических и научно-технических задач

разработаны языки: АЛГОЛ-60, ФОРТРАН, АКИ (Автокод-Инненер).

О АЛГОЛ-60 удобен для записи алгоритмов автоматического управления, сводящихся к численным методам. К таким алгорит­ мам откосятся алгоритма оптимизации, моделирования производ­ ственных процессов, распознаваніи образов и др ., использус-

щие методы решения систем алгебраических, дифференциальных,

разностных и др. типов уравнений. Преимущества АЛГОЛа для решения указанного класса задач заключайтея в близости язы­ ка к общепринятому в математике способу записи задач, в не­ зависимости языка от конкретной вычислительной машины и боль­

шой универсальности, т .е . в возможности расширения АЛГОЛа и

приспособления его для решения других близких классов задач. Существенным достоинством АЛГОЛа является то, что он был первым языком, получившим строго формальное описание с ис­ пользованием метаязыка БЭКУСа.

Широкие возможности АЛГОЛа породили тенденцію рассмат­ ривать его как универсальный язык программирования, пригод­ ный £ля решения любых классов задай, Однако попытки исполь­ зовать АЛГОЛ для записи несвойственных ему алгоритмов без из­

- 31 -

менения структуры языка всегда вызывают существенные труд - ности.

Следует отметить, что для получения высокого качества программ, записанных на АЛГОЛе, приходится создавать очень сложные трансляторы объемом в несколько тысяч команд. Ис­

пользование более простых трансляторов резко ухудшает качест­

во полученных с их

помощью программ.

Само название

языка ФОРТРАН ( F o im u fa ТшпзСсгТоЪ -

переводчик формул)

свидетельствует о том, ч^о он предназна­

чен для решения задач, сводящихся к методам вычислительной математики. Он довольно сильно похож на АЛГОЛ, однако беднее его, особенно логическими возможностями. В нем отсутствуй, напргшер, символы отношений и некоторые логические операторы,

ФОРТРАН был разработан раньше АЛГОЛа. Разработка велась в ос­ новном применительно к ЭВМ фирмы IBM. Каждой модификации ма­

шины этой, фирмы соответствует своя модификация ФОРГРАНа. Для І5У-7С4 - ФОРТРАН, ІЗМ-650 - ФОРТРАНЗИТ, і ВМ-1620 СоІтП ;

затем были разработаны расширения ФОРТРАНа: ФОРТРАН ІІ, ФОРТ­ РАН ІУ.. Особенностью ФОРТРАНа является широкое использование библиотеки стандартных подпрограмм и ориентировка на конк - ретные типы ЦВМ. Трансляторы ФОРТРАНа проще, чем у АЛГОЛа.

АКй (автокод-инженер) предназначен для описания алго - . ритмов, чаще всего встречающихся в инженерной практике: в ос­ новном, это задачи вычислительного характера. АКИ был разра­ ботан в СССР в І96І-І964 гг., под руководством Г.К. Столярова. Существенное влияние на состав и структуру языка оказало стремление авторов использовать уже имеющуюся отечественную


- 32 -

аппаратуру для перенесения фраз языка АКИ на перфоленту, В

качестве такой аппаратуры используется обычный телетайп СТА-

211, работающий во 2-м международном коде.

Если сравнивать

АКИ с АЛГОЛом и ФОРТРАНОМ, то он довольно

близок я ФОРТРАНУ,

но проще него. АКЙ имеет довольно простой

транслятор,

который разработан в настоящее вреая для ряда отечественных ЦВМ ("Минск-2").

Для обработки больших объемов числовой и алфавитно-циф­ ровой информации, характеризующей, например, качество сырья,

вид его обработки, наименование поставщиков,

потребителей и

О

содержащие

та­

т .д ., созданы языки КОБОЛ, АЛГЭЫ. Алгоритмы,

кую информацию, трудно выразить обычной математической

сим­

воликой, и для их записи приходится прибегать

к словесному

описанию. Одним из наиболее распространенных языков для та­ кого рода задач является COBOL (■ Common ßu&Lness Осівп-

iie d Запуснф [7]. Он был разработан к концу 1955 года, а окончательный зариант его был принят в 1961 году. Язык пред­ назначен для переработки на ЭВЫ экономической информации, за­ писанной на английском языке с очень небольшой степенью фор­ мализации. Так как форма представления такой информации дос­ таточно произвольна, то транслятор к нему, как и к АЛГОЛу, сложен.

АЛГЭЫ предназначен для программирования экономических и

математических задач. Разработан в СССР под руководством Kn­ ot

това в 1966 году.- По существу, он является расширением АЛГОЛа. Помимо экономических задач, АЛГЭМ может быть применен и при решении других информационно-логических задач, связанных с

- 33 -

обработкой больших пассивов информации, имевшей сложную струн

туру (обработка историй болезней в клиниках, информация и об­

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

Для программирования информационно-логических задач,свя­ занных со списковой обработкой данных и информационного поис­

ка, разработаны также специальные языки KOMMT, ЛИСП, ИШІ-5. Кроме указанных языков, получивших довольно широкое рас­

пространение, разработаны специализированные языки для прог­

раммирования узкого крута задач.

симскрипт (1963 г о д ) S a i p t ) - {біт иС айоп

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

Алгоритмический язык ЛЯПАС используется для программи­ рования алгоритмов синтеза дискретных автоматов и близких к ним задач. Этот язык разработан в Томском университете (1964 год). Язык имеет два уровня. Первый уровень предназначается для представления не слишком сложных алгоритмов и имеет до­ вольно компактный транслятор. Язык второго уровня предназ­ начен для моделирования сложных алгоритмов.

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