Simula

From Wikipedia, the free encyclopedia

Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard. Syntactically, it is a fairly faithful superset of Algol 60.

Simula 67 introduced objects, classes, subclasses.

Simula is considered one of the earliest object-oriented programming languages, although the object model is often considered incomplete. (Proponents of the Smalltalk object model pinpoint some important deficiencies of the Simula concept of objects). As its name implies, Simula was designed for doing simulations, and the needs of that domain provided the framework for many of the features of object-oriented languages today.

Simula has been used in a wide range of applications such as simulating VLSI designs, processes, protocols, algorithms, and other applications such as typesetting, computer graphics, and education. Since Simula type of objects are reimplemented in C++, the influence of Simula is often understated.

Contents

[edit] History

Kristen Nygaard started writing computer simulation programs in 1957. Nygaard saw a need for a better way of describing the heterogeneity and the operation of a system. To go further with his ideas on a formal computer language for describing a system, Nygaard realized that he needed someone with more programming skills than himself. Ole-Johan Dahl joined him on his work January 1962. The decision of linking the language up to Algol 60 was made shortly after. By May 1962 the main concepts for a simulation language were set. "SIMULA I" was born, a special purpose programming language for simulating discrete event systems.

Kristen Nygaard was invited to Univac late May 1962 in connection with the marketing of their new UNIVAC 1107 computer. At that visit Nygaard presented the ideas of Simula to Robert Bemer, the director of systems programming at Univac. Berner was a sworn ALGOL fan and found the Simula project compelling. Berner was also chairing a session at the second international conference on information processing hosted by IFIP. He invited Nygaard, which presented the paper "SIMULA -- An Extension of ALGOL to the Description of Discrete-Event Networks".

Norwegian Computing Center got a UNIVAC 1107 August 1963 at a considerable discount, on which Dahl implemented the SIMULA I under contract with Univac. The implementation was based on the UNIVAC Algol 60 compiler. SIMULA I was fully operational on UNIVAC 1107 January 1965. In the following couple of years Dahl and Nygaard spent a lot of time teaching Simula. Simula spread to several countries around the world and SIMULA I were later implemented on Burroughs B5500 computers and the Russian URAL-16 computer.

In 1966 C. A. R. Hoare introduced the concept of record class construct, which Dahl and Nygaard extended with the concept of prefixing and other features to meet their requirements for a generalized process concept. Dahl and Nygaard presented their paper on Class and Subclass Declarations at the IFIP Working Conference on simulation languages in Oslo, May 1967. This paper became the first formal definition of Simula 67. In June 1967 a conference was held to standardize the language and initiate a number of implementations. Dahl proposed to unify the Type and the Class concept. This led to serious discussions, and the proposal got rejected by the board. SIMULA 67 was formally standardized on the first meeting of the SIMULA Standards Group (SSG) in February 1968.

In the late sixties and the early seventies there were four main implementations of Simula:

These implementations were ported to a wide range of platforms. The TOPS-10 implemented the concept of public, protected, and private member variables and methods, that later got integrated into Simula 87. Simula 87 is the latest standard and is ported to a wide range of platforms. There are mainly three implementations:

In November 2001 Dahl and Nygaard were awarded the IEEE John von Neumann Medal by the Institute of Electrical and Electronic Engineers "For the introduction of the concepts underlying object-oriented programming through the design and implementation of SIMULA 67". In February 2002 they received the 2001 A. M. Turing Award by the Association for Computing Machinery (ACM), with the citation: "For ideas fundamental to the emergence of object oriented programming, through their design of the programming languages Simula I and Simula 67." Unfortunately neither Dahl, nor Nygaard could make it to the ACM Turing Award Lecture, scheduled to be delivered at the OOPSLA 2002 conference in Seattle, as they both passed away within two months of each other in June and August, respectively.

[edit] Classic Hello world

Note that Simula is case-insensitive. An example of a Hello world program in Simula:

! a comment;
Begin
  OutText ("Hello World!");
  Outimage;
End;

[edit] Classes in Simula

Simula was the first Object-Oriented Programming Language. This means that Simula knows about objects and classes of objects. Each class is a package or module of procedures, functions, and data. From a class, it is possible to create instances as a way to get objects that represent entities from the real world. The set of objects and their relations may be used in simulations of some aspect of our world.

Here is a simple class in Simula:

Begin
  Class Greetings;
  Begin
    OutText ("Hello World!");
    OutImage;
  End;

  Ref(Greetings) hello;
  hello:- New Greetings;

End of program;

This program says "Hello World!" too.

[edit] Jensen's Device

Simula supports call by name so the Jensen's Device can be implemented as follows:

Begin
   Integer i;
   Real Procedure sum (i, lo, hi, term);
      Name i, term; Integer i, lo, hi; Real term;
   Begin
      Real temp; temp:= 0;
      i:= lo;
      While i <= hi Do
      Begin
         temp:= temp + term;
         i:= i + 1;
      End;
      sum:= temp
   End;
   OutFix (sum (i, 1, 100, 1/i), 15, 20);
End

[edit] See also

[edit] Source

  • Compiling Simula Early history of the development of Simula by Jan Rune Holmevik

[edit] External links