~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 0ACB20DDA5B8D411CFD9FB6D7FE87304__1707720360 ✰
Заголовок документа оригинал.:
✰ Simula - Wikipedia ✰
Заголовок документа перевод.:
✰ Моделирование — Википедия, бесплатная энциклопедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Simula ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/0a/04/0acb20dda5b8d411cfd9fb6d7fe87304.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/0a/04/0acb20dda5b8d411cfd9fb6d7fe87304__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 09:09:39 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 12 February 2024, at 09:46 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Моделирование — Википедия, бесплатная энциклопедия Jump to content

начало

Из Википедии, бесплатной энциклопедии
начало
Парадигмы Мультипарадигмальность : процедурная , императивная , структурированная , объектно-ориентированная.
Семья АЛГОЛ
Разработано Оле-Йохан Даль
Разработчик Кристен Найгаард
Впервые появился 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». В апреле 2002 года они получили премию Тьюринга 2001 года от Ассоциации вычислительной техники (ACM) со словами: «За идеи, фундаментальные для возникновения объектно-ориентированного программирования, благодаря разработке языков программирования Simula I и Simula 67». " Даль и Найгаард умерли в июне и августе того же года соответственно. [10] перед лекцией на премию ACM Тьюринга [11] его планировалось представить на конференции OOPSLA в Сиэтле в ноябре 2002 года.

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

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

Минимальная программа [ править ]

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

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

Начало 
 Конец  ;
 

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

Классический Привет, мир [ править ]

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

Начать 
    OutText  («Привет, мир!»); 
     Исходное изображение  ; 
  Конец  ; 
 

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

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

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

Начать 
    класса  глиф  ;
        Виртуальный  :  процедуры  печать  — это   печать процедуры  ;; 
     Начало 
    Конец  ; 
   
     глифа  Класс  Char (c); 
        Персонаж  С; 
     Начать 
       процедуру  печати; 
          OutChar(с); 
     Конец  ; 
   
     глифа  Линия класса  (элементы); 
        Ref  (Glyph)  Элементы массива  ; 
     Начать 
       процедуру  печати; 
        Начать 
          целое число  i; 
           Для  i:= 1  Шаг  1  До  UpperBound (elements, 1)  Do 
              элементы (i).print; 
           Выходное изображение; 
        Конец  ; 
     Конец  ; 
   
     Ссылка  (Глиф) рг; 
     Ref  (Glyph)  Массив  rgs (1:4); 
   
     !   Основная программа; 
     rgs (1): -  Новый  символ («А»); 
     rgs(2):-  Новый  Char('b'); 
     rgs (3): —  Новый  символ («b»); 
     rgs (4): -  Новый  Char('a'); 
     rg:-  Новая  линия (rgs); 
     рг.принт; 
  Конец  ; 
 

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

Звонить по имени [ править ]

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

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

Реальная   процедура  Сигма (k, m, n, u); 
     Имя  к, ю; 
     Целое число  k, m, n;   Настоящий  ты; 
  Начать 
    Real  s; 
     к:= м; 
     Пока  k <= n  Do   Begin  s:= s + u;   к:= к + 1;   Конец  ; 
     Сигма:= с; 
  Конец  ; 
 

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

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

Следующее:

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

Z:= Сигма (i, 1, 100, 1/(i + a)**2);
 

Моделирование [ править ]

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

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

 моделирования  начала 
   Класс  FittingRoom;   Начать 
       Ref  (Голова) дверь; 
        Логическое  значение inUse; 
        процедуры  Запрос  ;  Начать 
          , если  inUse  , затем   начать 
               Подожди (дверь); 
               дверь.Первый.Выход; 
           Конец  ; 
           inUse:=  Истина  ; 
        Конец  ; 
        Процедура  отпуска;   Начинать 
           inUse:=  Ложь  ; 
           Активировать  дверь. Сначала; 
        Конец  ; 
        дверь: -  Новая  голова; 
     Конец  ; 
   
     Отчет о процедуре  (сообщение);   Текстовое  сообщение;   Начинать 
        OutFix (Время, 2, 0);   OutText (": " & сообщение);   Выходное изображение; 
     Конец  ; 
   
     процесса  Класс  Человек (pname);   Текстовое  имя;   Начни 
       , пока   правда   начни   , 
           Удерживать (Нормальный (12, 4, u)); 
           отчет (pname & «запрашивает примерочную»); 
           примерочная1.запрос; 
           отчет (pname&"зашел в примерочную"); 
           Удерживать (Нормальный (3, 1, u)); 
           примерочная1.уйти; 
           отчет (pname & «покинул примерочную»); 
        Конец  ; 
     Конец  ; 
   
     Целое число  u; 
     Ref  (FittingRoom) fitingRoom1; 
   
     FittingRoom1: —  Новая  Примерочная; 
     Активировать   нового  человека («Сэм»); 
    Активировать   нового  человека («Салли»); 
     Активировать   нового  человека («Энди»); 
     Удерживать (100); 
  Конец  ; 
 

Главный блок имеет префикс 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
Номер скриншота №: 0ACB20DDA5B8D411CFD9FB6D7FE87304__1707720360
URL1:https://en.wikipedia.org/wiki/Simula
Заголовок, (Title) документа по адресу, URL1:
Simula - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)