Jump to content

начало

(Перенаправлено с SIMULA )
начало
Парадигмы Мультипарадигмальность : процедурная , императивная , структурированная , объектно-ориентированная.
Семья АЛГОЛ
Разработано Оле-Йохан Даль
Разработчик Кристен Найгаард
Впервые появился 1962 год ; 62 года назад ( 1962 )
Стабильная версия
Начало 67, начало I
Дисциплина набора текста Статический , именительный падеж
Объем Лексический
Язык реализации АЛГОЛ 60 (в основном; некоторые компоненты Simscript )
ТЫ Unix-подобный , Windows , z/OS , TOPS-10 , MVS
Веб-сайт www .simula67 .информация
Под влиянием
Алгол 60 , Симскрипт
Под влиянием
BETA , CLU , Eiffel , Emerald , Pascal , Smalltalk и многие другие объектно-ориентированные языки программирования .

Simula — название двух для моделирования языков программирования , Simula I и Simula 67, разработанных в 1960-х годах в Норвежском вычислительном центре в Осло Оле -Йоханом Далем и Кристен Нюгаард . Синтаксически это приблизительный расширенный набор АЛГОЛА 60 . [1] : 1.3.1  а также на него повлиял дизайн Simscript . [2]

В Simula 67 появились объекты , [1] : 2, 5.3  занятия , [1] : 1.3.3, 2  наследование и подклассы , [1] : 2.2.1  виртуальные процедуры , [1] : 2.2.3  сопрограммы , [1] : 9.2  и дискретное моделирование событий , [1] : 14.2  и сбор мусора . [1] : 9.1  Другие формы подтипирования (помимо наследования подклассов) были введены в производных Simula. [ нужна ссылка ]

Simula считается первым объектно-ориентированным языком программирования . Как следует из названия, первая версия Simula, выпущенная в 1962 году, была разработана для моделирования ; Однако Simula 67 был разработан как язык программирования общего назначения. [3] и обеспечил основу для многих функций современных объектно-ориентированных языков.

Simula использовалась в широком спектре приложений, таких как моделирование проектов очень большой интеграции (СБИС), моделирование процессов , протоколов связи , алгоритмов и других приложений, таких как набор текста , компьютерная графика и образование . Влияние Simula часто недооценивают, а объекты типа Simula переопределяются в C++ , Object Pascal , Java , C# и многих других языках. Ученые-компьютерщики, такие как Бьерн Страуструп , создатель C++, и Джеймс Гослинг , создатель Java, признали, что Simula оказала большое влияние. [4]

Следующий отчет основан на историческом эссе Яна Руне Холмевика. [5] [6]

Кристен Найгаард начала писать программы компьютерного моделирования в 1957 году. Найгаард видел необходимость в лучшем способе описания неоднородности и работы системы. Чтобы продвинуться дальше в своих идеях относительно формального компьютерного языка для описания системы, Найгаард понял, что ему нужен кто-то с большими навыками компьютерного программирования , чем он. Оле-Йохан Даль решение объединить язык с АЛГОЛом 60 присоединился к его работе в январе 1962 года. Вскоре после этого было принято . К маю 1962 года были определены основные концепции моделирования языка . SIMULA I Так родился — язык программирования специального назначения для моделирования систем дискретных событий.

Кристен Найгаард была приглашена посетить компьютерную корпорацию Eckert-Mauchly в конце мая 1962 года в связи с маркетингом их нового компьютера UNIVAC 1107 . Во время того визита Найгаард представил идеи Simula Роберту Бемеру , директору по системному программированию в Univac . Бемер был большим поклонником Алгола и находил проект Simula привлекательным. Бемер также был председателем заседания второй международной конференции по обработке информации, организованной Международной федерацией обработки информации (IFIP). Он пригласил Найгаарда, который представил доклад «SIMULA – расширение ALGOL для описания сетей дискретных событий».

Норвежский вычислительный центр получил UNIVAC 1107 в августе 1963 года со значительной скидкой, на котором Даль внедрил SIMULA I по контракту с UNIVAC. Реализация была основана на компиляторе UNIVAC ALGOL 60 . SIMULA I полностью заработал на UNIVAC 1107 к январю 1965 года. В последующие несколько лет Даль и Найгаард потратили много времени на обучение Simula. Simula распространилась в несколько стран мира, а SIMULA I позже была реализована на других компьютерах, включая Burroughs B5500 и российский Урал-16 .

В 1966 году К. А. Хоар представил концепцию конструкции класса записи, которую Даль и Найгаард расширили концепцией префиксов и другими функциями, чтобы удовлетворить их требованиям к обобщенной концепции процесса. Даль и Найгаард представили свой документ об объявлениях классов и подклассов на рабочей конференции IFIP по языкам моделирования в Осло в мае 1967 года. Этот документ стал первым формальным определением Simula 67. В июне 1967 года была проведена конференция по стандартизации языка и инициированию ряд реализаций. Даль предложил объединить понятие типа и класса. Это привело к серьезным дискуссиям, и правление отклонило предложение. Simula 67 была официально стандартизирована на первом собрании группы стандартов Simula (SSG) в феврале 1968 года.

Страницы из языкового справочника DECsystem-10 SIMULA, опубликованного Шведским научно-исследовательским институтом национальной обороны.

Simula оказала влияние на разработку Smalltalk , а затем и объектно-ориентированных языков программирования. Это также помогло вдохновить актерскую модель параллельных вычислений, хотя Simula поддерживает только сопрограммы , а не настоящий параллелизм . [7]

В конце шестидесятых и начале семидесятых существовало четыре основные реализации Simula:

Эти реализации были портированы на широкий спектр платформ. TOPS -10 реализовал концепцию общедоступных, защищенных и частных переменных и процедур-членов, которая позже была интегрирована в стандарт Simula в 1986 году.

Simula Standard 1986 — новейший стандарт, портированный на широкий спектр платформ. В основном существует четыре реализации:

  • Начало АС
  • Лунд Начало
  • ГНУ Сим [8]
  • Новый взгляд на портативную симулу [9]

наградил Даля и Найгаарда медалью Джона фон Неймана IEEE В ноябре 2001 года Институт инженеров по электротехнике и электронике «За внедрение концепций, лежащих в основе объектно-ориентированного программирования, посредством разработки и реализации SIMULA 67». 2001 года В апреле 2002 года они получили премию Тьюринга от Ассоциации вычислительной техники (ACM) со словами: «За идеи, фундаментальные для возникновения объектно-ориентированного программирования, благодаря разработке языков программирования Simula I и Simula 67». " Даль и Найгаард умерли в июне и августе того же года соответственно. [10] перед лекцией на премию ACM Тьюринга [11] его планировалось представить на конференции OOPSLA в Сиэтле в ноябре 2002 года.

Исследовательская лаборатория Simula - это исследовательский институт , названный в честь языка Simula, и Найгаард работал там неполный рабочий день с момента открытия в 2001 году. Новое здание компьютерных наук в Университете Осло названо Домом Оле Йохана Даля в честь Даля, и главный зал носит название Simula.

Пример кода

[ редактировать ]

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

[ редактировать ]

Пустой компьютерный файл — это минимальная программа в Simula, измеряемая размером исходного кода . Он состоит только из одного; пустое заявление .

Однако минимальную программу удобнее представить в виде пустого блока:

Begin
End;

Он начинает выполняться и сразу же завершается. В языке отсутствует возвращаемое значение из программы.

Классический Привет, мир!

[ редактировать ]

Пример программы Hello world в Simula:

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

Simula нечувствительна к регистру .

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

[ редактировать ]

Более реалистичный пример с использованием классов: [1] : 1.3.3, 2  подклассы [1] : 2.2.1  и виртуальные процедуры: [1] : 2.2.3 

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;

В приведенном выше примере есть один суперкласс (Glyph) с двумя подклассами ( Char и Line). Существует одна виртуальная процедура с двумя реализациями . Выполнение начинается с выполнения основной программы. В Simula отсутствует концепция абстрактных классов классов с чисто виртуальными процедурами , поскольку можно создавать экземпляры . Это означает, что в приведенном выше примере можно создать экземпляры всех классов. Однако вызов чисто виртуальной процедуры приведет к времени выполнения ошибке .

Звонок по имени

[ редактировать ]

Simula поддерживает вызов по имени [1] : 8.2.3  так что Устройство Дженсена может быть легко реализовано. Однако режимом передачи по умолчанию для простого параметра является вызов по значению , в отличие от ALGOL , который использовал вызов по имени . Поэтому исходный код устройства Дженсена должен указывать вызов параметров по имени при компиляции компилятором Simula.

Другой гораздо более простой пример — функция суммирования. который можно реализовать следующим образом:

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;

В приведенном выше коде используется вызов по имени управляющей переменной (k) и выражения (u). Это позволяет использовать управляющую переменную в выражении.

Обратите внимание, что стандарт Simula допускает определенные ограничения на управляющую переменную. в цикле for . Поэтому приведенный выше код использует цикл while для максимальной переносимости.

Следующее:

тогда можно реализовать следующим образом:

Z:= Sigma (i, 1, 100, 1 / (i + a) ** 2);

Моделирование

[ редактировать ]

Simula включает в себя симуляцию [1] : 14.2  пакет для моделирования дискретных событий . Этот пакет моделирования основан на объектно-ориентированных функциях Simula и его сопрограмме. [1] : 9.2  концепция.

Сэм, Салли и Энди покупают одежду. Они должны делить одну примерочную. Каждый из них просматривает магазин около 12 минут, а затем около трех минут пользуется исключительно примерочной, следуя обычному распределению. Моделирование их примерочной выглядит следующим образом:

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;

Главный блок имеет префикс Simulation для включения симуляции. Пакет моделирования можно использовать в любом блоке, а симуляции можно даже вкладывать, когда моделируется кто-то, выполняющий симуляцию.

Объект примерочной использует очередь ( door) для получения доступа в примерочную. Когда кто-то запрашивает примерочную, и она уже занята, он должен ждать в этой очереди ( Wait (door)). Когда кто-то выходит из примерочной, первый (если есть) освобождается из очереди ( Activate door.first) и соответственно удалены из очереди у дверей ( door.First.Out).

Человек – это подкласс Process и его активность описывается с помощью удержания (время просмотра магазина и время пребывания в примерочной) и вызывает процедуры в объекте примерочной для запроса и выхода из примерочной.

Основная программа создает все объекты и активирует все объекты-человека, чтобы поместить их в очередь событий. Основная программа сохраняется в течение 100 минут моделируемого времени, прежде чем программа завершится.

Примечания

[ редактировать ]
  1. ^ Перейти обратно: а б с д и ж г час я дж к л м н Даль, Оле-Йохан ; Мирхауг, Бьёрн; Найгаард, Кристен (1970). Общий базовый язык (PDF) (отчет). Норвежский вычислительный центр. Архивировано из оригинала 25 декабря 2013 г. Проверено 17 ноября 2020 г. {{cite report}}: CS1 maint: неподходящий URL ( ссылка )
  2. ^ Найгаард, Кристен (1978). «Развитие языков моделирования» (PDF) . На разработку .. SIMULA I и SIMULA 67... повлиял дизайн SIMSCRIPT...
  3. ^ Кристен Найгаард и Оле-Йохан Даль. 1978. Развитие языков SIMULA. История языков программирования. Ассоциация вычислительной техники, Нью-Йорк, штат Нью-Йорк, США, 439–480. DOI: https://doi.org/10.1145/800025.1198392.
  4. ^ Вонг, Уильям. «Что вы использовали до C?» . Электронный дизайн . Проверено 22 мая 2017 г.
  5. ^ Холмевик, Ян Руне (1994). «Компиляция Simula: историческое исследование генезиса технологий» (PDF) . IEEE Анналы истории вычислений . 16 (4): 25–37. дои : 10.1109/85.329756 . S2CID   18148999 . Проверено 12 мая 2010 г.
  6. ^ Хольмевик, Ян Руне. «Компиляция симуляции» . Осло, Норвегия: Институт исследований в области исследований и высшего образования. Архивировано из оригинала 20 апреля 2009 года . Проверено 19 апреля 2017 г.
  7. ^ Лерманн Мэдсен, Оле (2014). «Построение абстракций безопасного параллелизма». В Аге — Желтый; Игараси, Ацуши; Кобаяши, Наоки; Масухара, Хидехико; Мацуока, Сатоши; Сибаяма, Эцуя; Таура, Кенджиро (ред.). Параллельные объекты и не только Конспекты лекций по информатике. Том. 8665. Берлин: Шпрингер. п. 68. дои : 10.1007/978-3-662-44471-9 . ISBN  978-3-662-44471-9 . S2CID   1000741 .
  8. ^ «ГНУ Цим» .
  9. ^ «Возвращение к портативной симуле» . Гитхаб . Проверено 17 июня 2019 г.
  10. ^ «ACM Оле-Йохан Даль и Кристен Найгаард - Некролог» . Acm.org. Архивировано из оригинала 19 июля 2011 года . Проверено 14 января 2012 г.
  11. ^ «Лекции на премию ACM Тьюринга» . Informatik.uni-trier.de . Проверено 14 января 2012 г.

Источники

[ редактировать ]

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e221035aae9cba2ee3e98adbc528bd95__1707720360
URL1:https://arc.ask3.ru/arc/aa/e2/95/e221035aae9cba2ee3e98adbc528bd95.html
Заголовок, (Title) документа по адресу, URL1:
Simula - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)