СоНоты

Язык программирования Симула

Имя языка программирования СИМУЛА (SIMULA) происходит от английских слов SIMUlation LANguage, что в переводе означает "язык моделирования".

В принципе этим именем называют два языка программирования: СИМУЛА-1 и СИМУЛА-67. Оба языка основываются на языке АЛГОЛ-60 и содержат последний в качестве своего подмножества.

СИМУЛА-1 разработан в Норвежском компьютерном центре У.Далом и К.Нюгордом в 1964 г. Язык предназначен для моделирования систем с дискретными событиями, т.е. систем, представляющих последовательность сменяемых друг друга мгновенных событий. Термин "моделирование" У.Дал определил в 1966 г. как "процесс представления динамической системы моделью для получения информации об этой системе путем проведения экспериментов над моделью".

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

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

Начиная с 1965 г. язык СИМУЛА-1 был реализован на таких ЭВМ, как SPU1107, B5500 и др., а также отечественных ЭВМ - "Урал-14", БЭСМ-6.

В 1967-1968 гг. авторами СИМУЛЫ-1 и присоединившимся к ним Б.Мюрхаугом был создан язык СИМУЛА-67. Этот язык, как утверждает Е.Киндлер, по своей универсальности ближе к таким языкам, как АЛГОЛ-68 и АДА, чем к языкам моделирования. Но надо отметить, что средства, включающие в себя все возможности языка СИМУЛА-1, являются частью языка СИМУЛА-67 и их можно использовать при помощи системного класса SIMULATION (моделирование).

Фундаментальным новым понятием языка СИМУЛА-67 является понятие "объект", которое эволюционировало из понятия "процесс" языка СИМУЛА-1. Под объектом понимается экземпляр описания класса, который имеет свои собственные локальные данные и действия. В языке СИМУЛА-67 имеются элементарные операторы, которые позволяют организовать исполнение программы в виде последовательных активных фаз объектов. Это исполнение называют "квазипараллельным". Квазипараллельное исполнение программ позволяет отойти от обычной схемы решения (в виде последовательности шагов) задачи и представить ее в виде ряда взаимодействующих объектов, получивших название "сопрограмм".

Установление в языке таких понятий, как "класс" и "подкласс" и других механизмов, позволяет использовать СИМУЛУ-67 в качестве основы для построения пециализированных языков, ориентированных на различные предметные области. Одним из преимуществ языка по сравнению с базовым предшественником является наличие средств ввода-вывода.

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

Характеризуя значение языка, У.Дал пишет: "Язык Симула-67 выходит за традиционные рамки языков программирования и может служить основой, на которой строятся различные математические и естественнонаучные теории от геометрии и алгебры до химической технологии и сельского хозяйства, даже в тех случаях, когда речь идет не об имитации или программировании, а лишь о получении количественной информации". За рубежом СИМУЛА-67 был реализован на многих вычислительных машинах, среди них: IBM/360, IBM/370, CDC 3000, 6000, B 8500, NORD 10, 12, 100, 500, VAX-11, ECLIPSe, AMDAHL и др. В нашей стране известны реализации на ЭВМ БЭСМ-6, ЕС ЭВМ, МВК "Эльбрус-1" и "Эльбрус-2".

Для координации деятельности, связанной с языком, трансляторами и использовании СИМУЛЫ создана и в течение многих лет функционирует в Осло при Норвежском компьютерном центре Международная Ассоциация пользователей. Она сообщает своим членам обо всех изменениях в языке, осуществляет контроль за приведением трансляторов в соответствии с принятыми изменениями, следит за тем, чтобы язык оставался хорошо определенным и машинно-независимым, проводит встречи пользователей по обмену информацией о новых реализациях и новых областях использования, а также школы по изучению СИМУЛЫ. Ассоциация издает и рассылает членам-пользователям журнал SIMULA NEWSLETTER. При ассоциации существует группа по развитию и стандартизации (SIMULA Standards Group - SSG), которая в августе 1986 г. разработала и опубликовала стандарт языка СИМУЛА.

//Вычислительная техника и ее применение N5'90