1967年5月20日,在挪威奧斯陸郊外的小鎮莉沙布舉行的IFIP TC-2 工作會議上,挪威科學家Ole-Johan Dahl和Kristen Nygaard正式發布了Simula 67語言。Simula 67被認為是最早的面向對象程式設計語言,它引入了所有後來面向對象程式設計語言所遵循的基礎概念:對象、類、繼承。之後,在1968年2月形成了Simula 67的正式文本。
Simula是由Ole-Johan Dahl和Kristen Nygaard在20世紀60年代在奧斯陸挪威計算中心開發的兩種模擬程式語言Simula I和Simula 67的名稱。在句法上,它是ALGOL 60的一個相當忠實的超集。
Simula被認為是第一個面向對象的程式語言。顧名思義,Simula就是為模擬而設計的,並且該領域的需求為當今面向對象語言的許多功能提供了框架。
Simula已被廣泛用於模擬VLSI設計,過程建模,協定,算法以及排版,計算機圖形和教育等其他套用。 Simula的影響常常被低估,並且Simula類型的對象在C ++,Object Pascal,Java,C#和其他幾種語言中被重新實現。計算機科學家,例如C ++的創造者Bjarne Stroustrup和Java的創造者James Gosling已經承認Simula是一種主要影響。
基本介紹
- 中文名:模擬語言
- 外文名:simula
- 誕生時間:1967年
- 地點:Simula研究所
簡介
程式設計思想的進步
示例代碼
最小程式
BeginEnd;
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;
仿真
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;