Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Симула.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
393.73 Кб
Скачать

СПЕЦИАЛИЗИРОВАННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

До сих пор вычислительная машина была мощным, vho в то же бремя пугающим многих инструментом. Это положе-' ние должно со временем измениться, и вычислительная ма-'шина станет делом обычным. Все больше людей будут учиться «разговаривать на ты» с машинами и получать от них* информацию, которая им необходима в сфере их про­ фессиональной деятельности, и, таким образом, расширять свои производственные и творческие возможности. А необхо­ димым условием для этого является уменьшение требований ■к человеку, т. е. облегчение и упрощение способов * его об­ щения с машиной. ■ .. ; .

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

Будущее, по-видимому, принадлежит «специализирован­ным языкам», которые будут, по всей вероятности, предельно специализированными. Такие языки могут содержать основ-1 ные понятия и методы, связанные с данной областью. Они позволят пользователю формулировать конкретные задачи на основе его предшествующего опыта и знаний. В то же время необходимо, чтобы такие языки были способны к расширению в том смысле, что все новое в данной области исследования могло бы легко включаться в язык самими пользователями^

Потребность в специализированных языках лишь кажу­щимся образом противоречит желанию иметь универсальный язык программирования вместо множества различных язы­ков, существующих в настоящее время. Задача состоит в теш, чтобы разработать такой универсальный язык прогр'амщШ-вания, который служил бы базой для построения спещЙДЙ-зированных языков. Такой язык должен легко приспосабли­ваться для применения в специальных областях путем созда­ния на его базе составных понятий и конструкций, которые служили бы «строительными блоками» при программирова­нии в специальной области.

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

1.3. ОСНОВНЫЕ ХАРАКТЕРИСТИКИ ЯЗЫКА СИМУЛА-67

1.3.1. Алгоритмические возможности

• Язык СИМУЛА-67 содержит в качестве своего подмноже­ства почти все средства универсального алгоритмического языка АЛГОЛ-60. Основанием для выбора языка АЛГОЛ-60 в качестве исходной базы было то, что основная структура этого языка допускает его расширение. Было бы непрактич­ным и неудобным положить в основу языка СИМУЛА-67 ка­кой-нибудь новый алгоритмический язык, в то время как АЛ­ГОЛ-60 уже имеет широкий круг пользователей, главным об­разом в-Европе и Советском Союзе.

1.3.2. Разложимость

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

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

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

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

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

Понятие экземпляра блока подразумевает возможность по­рождать несколько различных экземпляров одного и того же блока, которые могут сосуществовать и взаимодействовать, как, например, экземпляры рекурсивной процедуры. Это в свою очередь позволяет понимать блок как «класс объектов», ка­ждый из которых является динамическим экземпляром этого блока и поэтому следует одному и тому же образцу.

Расширенное понятие блока вводится в язык СИМУЛА-67 через декларации «класса» и соответствующие механизмы взаимодействия, такие, как «ссылки на объекты» (указа­тели), «дистанционные обращения», «квазипараллельное ис­полнение» и «сочленение» блоков.

В то время как исполнение программы на АЛГОЛЕ-60 сопровождается образованием последовательности динами­чески вложенных друг в друга экземпляров блоков, при ис­полнении программы на языке СИМУЛА-67 экземпляры бло­ков могут образовывать произвольные списочные структуры. Механизмы взаимодействия, введенные в язык, служат для расширения силы понятия блока как средства разложения и разбиения на классы*

1.3.3. Классы

w M ч

Центральным новым понятием языка СИМУЛА-67 яв­ляется «объект». Объект — это экземпляр блока, имеющий свои собственные локальные данные и действия1), описан­ные в «декларации класса». Декларация класса определяет образец программы (т. е. ее данные и действия), поэтому об объектах, следующих этому образцу, говорят, что «они при­надлежат к одному и тому же классу».

Если в декларации класса не указано никаких действий вовсе, то такая декларация определяет просто класс структур данных.

Пример:

class заказ (номер); integer номер; •

begin integer количество, время прибытия; real время, обработки; end;

: Новый объект, принадлежащий классу заказ, порождается выражением вида

new заказ (103);

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

Потребность манипулировать с объектами и связывать их друг с другом заставляет ввести в язык средства обработки списков (как описано ниже).

Класс можно использовать в качестве «префикса» к де­кларации другого класса; тем самым свойства, заданные пре­фиксом, будут внесены в объекты, задаваемые новой декла­рацией класса.

Примеры:

заказ class групповой заказ;

begin integer размер партии; real время установки; end ; заказ class отдельный заказ;

begin real время установки, время окончания, вес; end ; отдельный заказ class плита ;

begin real длина, ширина; end;

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

! ) Декларация класса определяет правило действий всех- объектов, принадлежащих этому классу. Каждый объект может «совершать» индиви­дуальные действия в области, определенной декларацией класса. Поэтому объект можно рассматривать как самостоятельную программу, присущую этому объекту. — Прим. перев.

в различных объявлениях классов с префиксами. Например, объекты, принадлежащие к классу плита, будут состоять из следующих элементов информации: номер, количество, вре­ мя прибытия, время обработки, время установки, время окон­ чания, вес, длина, ширина. ' ■'

Если в' декларации класса описаны какие-либо действия, то все объекты, принадлежащие этому классу, могут испол­ нять действия по заданному таким образом образцу. Все дей­ ствия, принадлежащие одному объекту, могут быть исполнены последовательно друг за другом (как для процедуры), но имеется и другая возможность, когда действия, принадлежа­ щие одному объекту, исполняются как последовательность отдельных подпоследовательностей, называемых «активными фазами». Между двумя последовательными активными фа-. зами одного объекта может иметь место любое количество активных фаз других объектов. ,... '( ■

Общая база языка СИМУЛА-67 содержит элементарные ь оператора, необходимые для того, чтобы организовать ис­полнение всей программы в виде последовательности актив­ных фаз объектов. Однако в случае некоторых специальных применений пользователь должен иметь в своем распоряже­нии удобные средства для специальной (т. е. соответствую­щей конкретной задаче) организации последовательности выполнения программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]