Симула

Си́мула-67 (Simula 67) — язык программирования общего назначения, разработанный в конце 1960-х годов сотрудниками Норвежского вычислительного центра (Осло) Кристеном Нюгором и Оле-Йоханом Далем для моделирования сложных систем.

Simula 67
Изображение логотипа
Семантикаобъектно-ориентированный
Класс языкаязык программирования, simulation language[d] и объектно-ориентированный
Тип исполнениякомпиляция
Появился в1967
АвторКристен Нюгор и Оле-Йохан Даль
РазработчикКристен Нюгорд
Выпуск
Система типовстатическая
Основные реализацииCim
Испытал влияниеAlgol-60
Повлиял наC++, BETA
ОСUnix-подобная операционная система, Windows, z/OS, TOPS-10 и MVS
Логотип Викисклада Медиафайлы на Викискладе

Симула традиционно не считается объектно-ориентированным языком в каноническом смысле этого слова, в частности, создатель языка Smalltalk Алан Кэй имел в виду под этим термином семантику акторов, впервые реализованную в языке Плэнер Карла Хьюитта, а не расширение алголоподобных языков «объектной» нотацией[2].

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

Тем не менее, этот язык активно использовался в образовательном процессе в высших учебных заведениях, особенно в Скандинавии; о влиянии Симулы на разработку им C++ отмечал его автор — Страуструп (в том числе в книге «Дизайн и эволюция C++»).

В современной терминологии язык можно охарактеризовать как объектное расширение Алгола 60. Конструкции языка очень сходны с аналогичными в современных объектно-ориентированных языках.

Примеры

Минимальная программа

BeginEnd;

Hello, World

Программа «Hello, World»:

Begin   OutText ("Hello, World!");   Outimage;End;

Классы, подклассы и виртуальные процедуры

Begin   Class Glyph;      Virtual: Procedure print Is Procedure print;;   Begin   End;      Glyph Class Char (c);      Character c;   Begin      Procedure print;        OutChar(c);   End;      Glyph Class Line (elements);      Ref (Glyph) Array elements;   Begin      Procedure print;      Begin         Integer i;         For i:= 1 Step 1 Until UpperBound (elements, 1) Do            elements (i).print;         OutImage;      End;   End;      Ref (Glyph) rg;   Ref (Glyph) Array rgs (1 : 4);      ! Main program;   rgs (1):- New Char ('A');   rgs (2):- New Char ('b');   rgs (3):- New Char ('b');   rgs (4):- New Char ('a');   rg:- New Line (rgs);   rg.print;End;

Вызов по имени

Вызов по имени

Real Procedure Sigma (k, m, n, u);   Name k, u;   Integer k, m, n; Real u;Begin   Real s;   k:= m;   While k <= n Do Begin s:= s + u; k:= k + 1; End;   Sigma:= s;End;

Симуляция

Simulation Begin   Class FittingRoom; Begin      Ref (Head) door;      Boolean inUse;      Procedure request; Begin         If inUse Then Begin             Wait (door);             door.First.Out;         End;         inUse:= True;      End;      Procedure leave; Begin         inUse:= False;         Activate door.First;      End;      door:- New Head;   End;      Procedure report (message); Text message; Begin      OutFix (Time, 2, 0); OutText (": " & message); OutImage;   End;      Process Class Person (pname); Text pname; Begin      While True Do Begin         Hold (Normal (12, 4, u));         report  (pname & " is requesting the fitting room");         fittingroom1.request;         report (pname & " has entered the fitting room");         Hold (Normal (3, 1, u));         fittingroom1.leave;         report (pname & " has left the fitting room");      End;   End;      Integer u;   Ref (FittingRoom) fittingRoom1;      fittingRoom1:- New FittingRoom;   Activate New Person ("Sam");   Activate New Person ("Sally");   Activate New Person ("Andy");   Hold (100);End;

Примечания

Ссылки


🔥 Top keywords: Заглавная страницаЯндексДуров, Павел ВалерьевичСлужебная:ПоискYouTubeЛунин, Андрей АлексеевичПодносова, Ирина ЛеонидовнаВКонтактеФоллаут (телесериал)WildberriesTelegramРеал Мадрид (футбольный клуб)Богуславская, Зоя БорисовнаДуров, Валерий СемёновичРоссияXVideosСписок умерших в 2024 годуЧикатило, Андрей РомановичFallout (серия игр)Список игроков НХЛ, забросивших 500 и более шайбПопков, Михаил ВикторовичOzon17 апреляИльин, Иван АлександровичMail.ruСёгун (мини-сериал, 2024)Слово пацана. Кровь на асфальтеПутин, Владимир ВладимировичЛига чемпионов УЕФАГагарина, Елена ЮрьевнаБишимбаев, Куандык ВалихановичЛига чемпионов УЕФА 2023/2024Турнир претендентов по шахматам 2024Манчестер СитиMGM-140 ATACMSРоссийский миротворческий контингент в Нагорном КарабахеЗагоризонтный радиолокаторПинапВодительское удостоверение в Российской Федерации