Simula

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

Simula – dwa języki programowania, Simula I oraz Simula 67, opracowane w latach 60. XX w. w Norweskim Ośrodku Obliczeniowym w Oslo przez Ole-Johana Dahla, Bjørna Myhrhauga i Kristena Nygaarda. Syntaktycznie jest to rozszerzenie języka ALGOL 60.

Współprogramy (ang. coroutines) - Pojęcie współprogramu ma dwie odmienne definicje(!). Obie definicje zgodnie stwierdzają, że współprogram cechuje się posiadaniem ciągu instrukcji do wykonania i ponadto możliwością zawieszania wykonywania jednego współprogramu A i przenoszenia wykonywania do innego współprogramu B. W szczególności można wznowić pracę zawieszonego współprogramu A, a wykonywanie będzie podjęte w miejscu, w którym zostało zawieszone. Tym co różni obie definicje jest zdolność współpracy z rekurencyjnymi procedurami. (Nb. W językach programowania funkcyjnego koncepcja współprogramu istnieje pod postacią kontynuacji - pojęcia wprowadzonego niemal równocześnie z współprogramami. )C# (C Sharp, dosłownie "C-krzyżyk", "cis") – obiektowy język programowania zaprojektowany przez zespół pod kierunkiem Andersa Hejlsberga dla firmy Microsoft.

Simula 67 wprowadziła obiekty, klasy, dziedziczenie oraz podklasy, metody wirtualne i współprogramy.

Simulę uważa się za pierwszy obiektowy język programowania. Simula została stworzona z myślą o tworzeniu symulacji komputerowych.

Simula miała bezpośredni wpływ m.in. na C++, Object Pascal, Java, C#.

Historia[ | edytuj kod]

Poniższy opis bazuje na eseju historycznym Jana Rune Holmevika.

ALGOL (z ang. ALGOrithmic Language) – język programowania, który odegrał ważną rolę w historii informatyki. Wpłynął istotnie na kształtowanie się innych języków, w tym Pascala. Od momentu powstania przez około 20 lat ALGOL (lub jego dialekty) był de facto standardem opisu algorytmów w publikacjach naukowych i podręcznikach.IEEE (ang. Institute of Electrical and Electronics Engineers – Instytut Inżynierów Elektryków i Elektroników, wymowa: ‘Eye-triple-E’) – organizacja typu non-profit skupiająca profesjonalistów. Powstała z konsolidacji grup AIEE oraz IRE w 1963 roku. Jednym z podstawowych jej zadań jest ustalanie standardów konstrukcji, pomiarów itp. dla urządzeń elektronicznych, w tym standardów dla urządzeń i formatów komputerowych.

Kristen Nygaard zaczął pisać symulacje komputerowe w 1957 roku. Dostrzegł on potrzebę znalezienia lepszego sposobu na opisywanie symulowanych procesów i interakcji. Postanowił stworzyć język programowania, który mu w tym pomoże. Uświadomił sobie, że potrzebuje kogoś bardziej od siebie biegłego w programowaniu. Ole-Johan Dahl dołączył do niego w styczniu 1962. Krótko po tym postanowili, że tworzony przez nich język będzie rozszerzeniem kompilowalnym do ALGOLA 60. W maju 1962 został stworzony język „SIMULA I”, służący do tworzenia symulacji komputerowych.

Uniwersytet w Oslo, (no: Universitetet i Oslo (UiO), łac. Universitas Osloensis) założony w 1811 jako Universitas Regia Fredericiana wzorowany na Friedrich-Wilhelms-Universität w Berlinie. Obecnej nazwy używa się od 1939 roku. Na uniwersytecie uczy się około 32 000 studentów, a zatrudnionych jest blisko 4600 pracowników. Jest największym i najstarszym uniwersytetem w Norwegii.Nationalencyklopedin – największa, szwedzka encyklopedia współczesna. Jej stworzenie było możliwe dzięki kredytowi w wysokości 17 mln koron, którego udzielił rząd szwedzki w 1980 roku i który został spłacony w 1990. Drukowana wersja składa się z 20 tomów i zawiera 172 tys. haseł. Wersja internetowa zawiera 260 tys. haseł (stan z czerwca 2005). Inicjatorem projektu był rząd szwedzki, który rozpoczął negocjacje z różnymi wydawcami. Negocjacje zakończyły się w 1985, kiedy na wydawcę został wybrany Bra Böcker z Höganäs. Encyklopedia miała uwzględniać kwestie genderowe i związane z ochroną środowiska. Pierwszy tom ukazał się w 1989 roku, ostatni w 1996. Dodatkowo w roku 2000 ukazały się trzy dodatkowe tomy. Encyklopedię zamówiło 54 tys. osób. W 1997 roku ukazało się wydanie elektroniczne na CD, a w 2000 pojawiło się wydanie internetowe, które jest uzupełniane na bieżąco.

Pod koniec maja 1962 Kristen Nygaard został zaproszony do firmy UNIVAC w ramach promowania jej nowego komputera – UNIVAC 1107. Podczas swojej wizyty Nygaard przedstawił koncepcje zawarte w Simuli Robertowi Bemerowi, dyrektorowi programowania systemów w UNIVAC. Bemer był wielkim zwolennikiem ALGOLA i koncepcja Simuli bardzo do niego przemawiała. Bemer przewodniczył również spotkaniu na drugiej międzynarodowej konferencji o przetwarzaniu informacji, organizowanej przez International Federation for Information Processing (IFIP). Zaprosił Nygaarda, który zaprezentował swój referat „SIMULA - rozszerzenie ALGOLA do opisu sieci zdarzeń dyskretnych” („SIMULA - An Extension of ALGOL to the Description of Discrete-Event Networks”).

Nagroda Turinga — nagroda przyznawana corocznie za wybitne osiągnięcia w dziedzinie informatyki przez Association for Computing Machinery.Ole-Johan Dahl (ur. 12 października 1931, zm. 29 czerwca 2002) - norweski informatyk ceniony za współtworzenie koncepcji obiektowych języków programowania i opracowania języka Simula, za co wraz z Kristen Nygaardem został uhonorowany nagrodą Turinga w 2001 roku.

Norweski Ośrodek Obliczeniowy nabył po obniżonej cenie UNIVACA 1107 w sierpniu 1963. Dahl zaimplementował na nim kompilator języka SIMULA I w ramach umowy z firmą UNIVAC. Implementacja bazowała na kompilatorze ALGOLA 60. Prace zostały zakończone w styczniu 1965. Kilka następnych lat Dahl i Nygaard spędzili na uczeniu Simuli. Rozprzestrzeniła się ona na wiele krajów. SIMULA I została później zaimplementowana na komputer B5500 firmy Burroughs oraz na rosyjski komputer URAL-16.

Library of Congress Control Number (LCCN) – numer nadawany elementom skatalogowanym przez Bibliotekę Kongresu wykorzystywany przez amerykańskie biblioteki do wyszukiwania rekordów bibliograficznych w bazach danych i zamawiania kart katalogowych w Bibliotece Kongresu lub u innych komercyjnych dostawców. Object Pascal – obiektowy język programowania, jest obiektowym rozszerzeniem języka Pascal. Pomiędzy językami Pascal i Object Pascal występuje podobna relacja jak w przypadku języków C i C++ (tzn. że Object Pascal jest nadzbiorem Pascala). W języku Object Pascal dodano nie tylko możliwość programowania obiektowego (klasy) ale uzupełniono go także o cechy, których nie posiada Pascal, np.: tablice dynamiczne, przeciążanie procedur/funkcji, interfejsy, zarządzane ciągi znaków, zarządzane rekordy, obsługa Unikodu, typy generyczne.

W 1966 C.A.R. Hoare wprowadził koncepcję klasy rekordowej, którą Dahl i Nygaard nieco rozszerzyli (wprowadzając m.in. prefiksowanie), tak by pasowała ona do pojęcia procesu w ich systemie. Dahl i Nygaard zaprezentowali swój artykuł na temat deklaracji klas i podklas na konferencji IFIP dotyczącej języków symulacji w Oslo w maju 1967. Artykuł ten stał się pierwszą formalną definicją Simuli 67. W czerwcu 1967 odbyła się konferencja mająca na celu standaryzację języka oraz rozpoczęcie jego implementacji. Dahl zaproponował połączenie koncepcji typu oraz klasy w jedno. Doprowadziło to do poważnych dyskusji i propozycja została odrzucona przez komitet. SIMULA 67 została formalnie ustandaryzowana na pierwszym spotkaniu organizacji SIMULA Standards Group w lutym 1968.

W programowaniu obiektowym klasa jest częściową lub całkowitą definicją dla obiektów. Definicja obejmuje dopuszczalny stan obiektów oraz ich zachowania. Obiekt, który został stworzony na podstawie danej klasy nazywany jest jej instancją. Klasy mogą być typami języka programowania - przykładowo, instancja klasy Owoc będzie mieć typ Owoc. Klasy posiadają zarówno interfejs, jak i strukturę. Interfejs opisuje, jak komunikować się z jej instancjami za pośrednictwem metod, zaś struktura definiuje sposób mapowania stanu obiektu na elementarne atrybuty.Charles Antony Richard Hoare (Tony Hoare, ur. 11 stycznia 1934 w Kolombo, Sri Lanka) - brytyjski informatyk, znany jako twórca algorytmu sortowania quicksort. Rozwinął także logikę Hoare’a służącą do weryfikowania poprawności programów oraz stworzył język formalny Communicating Sequential Processes (CSP) używany do specyfikowania interakcji współbieżnych procesów (zob. problem ucztujących filozofów). Przyczynił się także do powstania języka programowania Occam. W 1980 roku, w dowód uznania za wkład w rozwój języków programowania otrzymał nagrodę Turinga.

Pod koniec lat sześćdziesiątych i na początku siedemdziesiątych istniały cztery główne implementacje Simuli:

  • UNIVAC 1100 Norweskiego Ośrodka Obliczeniowego
  • IBM System/360 i IBM System/370 Norweskiego Ośrodka Obliczeniowego
  • CDC 3000 Uniwersytetu w Oslo
  • TOPS-10 Szwedzkiego Instytutu Badań dla Obrony Narodowej (Swedish Research Institute for National Defence)
  • Implementacje te zostały przeniesione na wiele różnych platform. W implementacji dla systemu TOPS-10 zostały zaimplementowane koncepcje publicznych, prywatnych i chronionych zmiennych i metod. Koncepcje te zostały później wcielone do Simuli 87. Simula 87 jest to ostatni standard, przeniesiony na wiele różnych platform. Istnieją jego trzy główne implementacje:

    Dziedziczeniem (ang. inheritance) w programowaniu obiektowym nazywamy mechanizm współdzielenia funkcjonalności między klasami. Klasa może dziedziczyć po innej klasie, co oznacza, że oprócz swoich własnych atrybutów oraz zachowań, uzyskuje także te pochodzące z klasy, z której dziedziczy. Klasa dziedzicząca jest nazywana klasą pochodną lub potomną (w j. angielskim: subclass lub derived class), zaś klasa, z której następuje dziedziczenie — klasą bazową (w ang. superclass). Z jednej klasy bazowej można uzyskać dowolną liczbę klas pochodnych. Klasy pochodne posiadają obok swoich własnych metod i pól, również kompletny interfejs klasy bazowej.Store Norske leksikon (Wielka encyklopedia norweska) - norweska encyklopedia w języku bokmål. Powstała po fuzji dwóch dużych, tworzących encyklopedie i słowniki wydawnictw norweskich Aschehoug i Gyldendal w 1978 roku, które utworzyły wydawnictwo Kunnskapsforlaget. Były cztery wydania papierowe: pierwsza w latach 1978-1981 w 12 tomach, druga w latach 1986-1989 w 15 tomach, trzecia w latach 1995-1999 w 16 tomach i czwarta w latach 2005-2007 w 16 tomach. Ostatnie wydanie zawierało 150 tys. haseł i 16 tys. ilustracji i zostało opublikowana przy wsparciu finansowym stowarzyszenia Fritt Ord. W 2010 roku ogłoszono, że nie będzie już wydań papierowych encyklopedii. Encyklopedia dostępna jest on-line od 2000 roku, a od 2009 roku może być edytowane przez użytkowników. Kunnskapsforlaget korzysta jednak z pomocy ekspertów przy sprawdzaniu treści zamieszczonych przez czytelników.
  • Simula AS
  • Lund Simula
  • GNU Cim
  • W listopadzie 2001 Dahl i Nygaard zostali odznaczeni Medalem Johna von Neumanna (IEEE John von Neumann Medal) „za wprowadzenie koncepcji będących podstawą dla programowania obiektowego przez zaprojektowanie i implementację SIMULI 67”. W lutym 2002 odebrali Nagrodę Turinga przyznaną im w 2001 roku „za współtworzenie koncepcji obiektowych języków programowania i opracowania języka Simula”.

    Hello world – program, którego jedynym celem jest wypisanie na standardowym wyjściu napisu "Hello World!" lub podobnego.Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje.

    Simula jest wciąż używana w ramach wielu różnych przedmiotów uniwersyteckich, na przykład Jarek Sklenar uczy Simuli studentów na University of Malta.

    Podstrony: 1 [2] [3]




    Warto wiedzieć że... beta

    ALGOL (z ang. ALGOrithmic Language) – język programowania, który odegrał ważną rolę w historii informatyki. Wpłynął istotnie na kształtowanie się innych języków, w tym Pascala. Od momentu powstania przez około 20 lat ALGOL (lub jego dialekty) był de facto standardem opisu algorytmów w publikacjach naukowych i podręcznikach.
    Kompilator – program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym) . Proces ten nazywany jest kompilacją. W informatyce kompilatorem nazywa się najczęściej program do tłumaczenia kodu źródłowego w języku programowania na język maszynowy. Niektóre z nich tłumaczą najpierw do języka asemblera, a ten na język maszynowy jest tłumaczony przez asembler.
    Symulacja komputerowa – symulacja z wykorzystaniem modelu matematycznego, zapisanego w postaci programu komputerowego (patrz również: Metoda numeryczna). Techniki symulacyjne są szczególnie przydatne tam, gdzie analityczne wyznaczenie rozwiązania byłoby zbyt pracochłonne, a niekiedy nawet niemożliwe – co często ma miejsce w systemach złożonych.
    Inicjalizacja - w programowaniu nadanie wartości/stanów początkowych obiektowi. Inicjalizacją obiektu zajmuje się zwykle konstruktor.
    Kristen Nygaard (ur. 27 sierpnia 1926 w Oslo, zm. 10 sierpnia 2002) był norweskim matematykiem, pionierem informatyki oraz politykiem.
    Obiekt to podstawowe pojęcie wchodzące w skład paradygmatu programowania obiektowego w analizie i projektowaniu oprogramowania oraz w programowaniu.
    DOI (ang. digital object identifier – cyfrowy identyfikator dokumentu elektronicznego) – identyfikator dokumentu elektronicznego, który w odróżnieniu od identyfikatorów URL nie zależy od fizycznej lokalizacji dokumentu, lecz jest do niego na stałe przypisany.

    Reklama