From: knuto@ifi.uio.no (Knut Omang)
Subject: Simula info (LONG) Was(Re: comparing object-oriented platforms)
Organization: Dept. of Informatics, University of Oslo, Norway
	<23741@alice.att.com> <1992Sep29.043418.16848@actrix.gen.nz>
	<1a932eINNea4@corax.udac.uu.se>
Date: Tue, 29 Sep 1992 10:49:02 GMT
Originator: knuto@katnosa.ifi.uio.no


In article <1a932eINNea4@corax.udac.uu.se> Stephen Cooper <stephen@csd.uu.se> writes:

>   Anyone have any info. on Simula?  How OO is it?  Is it a good pedagogic
>   lang?  I'll be teaching a course in OOP in Dec, and was sold on
>   Smalltalk, but a friend said I should check up on Simula.


SIMULA developed here at the University of Oslo, Norway in the middle 60's
was as far as I know the first language to introduce the terms 
objects and classes.

It has been used in most of our low level programming courses since then,
and it is also used at least as the basic course in programming at some
other Universities, amonst them at Lund in Sweden, which have depeloped the
compiler for Sun that we currently use. SIMULA also this year replaced Pascal
as the beginners language at University of Bergen, Norway.
We also have a public domain SIMULA compiler compiling to C available
for a broad range of architechtures.

In my own opinion the original language was far ahead of its time, in several 
ways. It introduced a whole new set of abstractions :

  o The object oriented paradigm (some 15-20 years ahead of the next finshed 
    attempt Smalltalk, which were heavily infuenced of Simula)
    Simula has classes, subclasses (single inheritance) and virtual functions

  o Safety mechanisms (automatic variable initialization, pointer safety, and
    relatively strong typing (pointers never point to anything but what they 
    are decared to point to or the null object) 
 
  o A high level debugger,
    All errors in a Simula program compiled with an error free compiler
    are caught "at the program abstraction level" by the run time environment,
    which makes it excellent for teaching purposes, eliminating a lot of 
    matters to distract students from the main purpose of a beginners course.

  o Quasi parallellity: Objects have a main action part which can operate 
    in its own, closed environment and be activated and deactivate leaving 
    control to another 'thread'-like object or to the main program.

It also had things like 

  o Garbage collection
  o free nesting of procedures and classes

However, SIMULA was also subject 
to a lot of unfortunate conditions :

  o It was released in a time when efficiency at the micro level 
    was much more focused on, i.e. the RAM and CPU power was thought of
    as much more expensive than hiring a bunch of extra programmers 
    to debug (?) CPU-effective FORTRAN programs.

  o Developing a  SIMULA compiler was a far more complex task than
    for instance, a Pascal compiler.

  o The SIMULA project didn't have the necessary freedom to give away 
    their compiler for free (the institutions financing it wanted their
    money back too quickly) A good example is that Donald Knuth, which visited 
    our site in 1972, asked for a copy of the compiler to use in the
    basic programming courses at Stanford, but had to leave empty handed 
    because of the price of the compiler!! He instead ended up with Pascal
    for his courses.

There is a SIMULA reference- and information database along with 
public domain software available 
by anonymous ftp from  

ftp.fenk.wau.nl, directory pub/simula

I'm taking the freedom of including their reference list below, 
as the best candidate.

Our public domain compiler could be ftp'ed from 

ifi.uio.no, directory 

Knut Omang, 
Dep. of Informatics, University of Oslo, Norway
e-mail: knuto@ifi.uio.no


included file from ftp.fenk.wau.nl, pub/simula/simula.info:
----------------------------------------------------------------------
SIMULA INFO

The most recent version is stored on the Simula database on Bitnet and Internet.
On Bitnet get a copy by sending GET SIMULA INFO as first line of your email to
Listserv@dearn. 
On Internet use Gopher or ftp to ftp.fenk.wau.nl and look in the
pub/simula directory.
Send additions and corrections to Jan Scheutjens <jan@fenk.wau.nl>
 
--------------------------------------------------------------------------
                                                       1992-05-31
 
If you want to do object-oriented programming you definitely
should have a look at SIMULA. SIMULA is the first and still the
most advanced object-oriented programming language available on a
wide variety of machines *including* the Atari ST.
SIMULA has been in general use for twenty years and the soundness
of its philosophical foundation has been thoroughly established.
 
 
SIMULA in a Nutshell
====================
 
  o  Conventional general-purpose algorithmic capability in the
     style of ALGOL 60.
 
  o  Object-oriented programming (classes) encompassing
     encapsulation, inheritance, information hiding, autonomous
     activity and strong typing, supporting the concepts of
     modularisation, generalisation, specialisation, abstraction,
     polymorphism and pseudo-parallelism.
 
  o  Basic features for manipulating text strings.
 
  o  File concept supporting sequential and direct access methods
     for byte- and record-structured files.
 
  o  Large repertoire of utility functions.
 
  o  Features supporting 2-way linked lists. More complicated
     list structures such as trees and lattices are easily
     constructed from the basic class facilities.
 
  o  Features supporting discrete event simulation in various
     styles including the object-oriented process view.
 
It should be emphasised that although in many quarters SIMULA is
best known for its simulation features, it is a truly general-
purpose language in the widest sense and was the inspiration for
almost all developments in the field of object-oriented
programming. For a growing number of users the name is becoming 
an acronym for SIMple Universal LAnguage. 
 

What you get with each SIMULA system
====================================
 
  o  Object oriented programming. A typical SIMULA program
     execution consists of a set of interacting processes or
     *objects*. Objects are incarnations of some prototype or
     *class*, generated during the execution of the program.
     Programs written in SIMULA in the object-oriented style
     preserve more accurately the identities and relationships of
     the functional entities occurring naturally in the
     computation.
 
  o  Strong typing, checked mostly at compile time, ensuring
     that objects are manipulated in a manner consistent with
     their specification.
 
  o  Objects may act independently of each other in "quasi-
     parallel". This enables the class objects to act as
     coroutines, so that the autonomous activity of any object
     may be temporarily suspended, later to be resumed at the
     exact point of suspension. Coroutines facilitate a faithful
     representation of systems composed of not only passive
     objects but also active ones in which distinct bursts of
     activity are tightly coupled in the notion of a coherent
     process. This feature is an extra dimension to those commonly
     associated with object-oriented languages and is only
     recently beginning to appear in some of the newer ones.
 
  o  List processing. The standard class "Simset" may be invoked
     to add list processing capabilities to the basic language
     features. The programmer will then have tools for the efficient
     manipulation of common aggregate information structures,
     including queues, dequeues, stacks and cyclic buffers. The
     facilities of Simset can be further refined for more
     specialised purposes.
 
  o  Simulation. Application of the standard class "Simulation"
     converts SIMULA into a powerful tool for discrete event
     simulation in a style which preserves in the model the
     inherent structure of the system under study. Object-oriented
     programming originated in process-oriented simulation and
     simulation in SIMULA is the epitome of the object-oriented
     paradigm.
 
  o  Powerful text handling, dynamic arrays, flexible file
     handling, etc.
 
  o  Modularisation. Separate compilation of classes and
     procedures is an integral part of the language. The strong
     typing extends to separately compiled modules allowing the
     construction of large SIMULA systems to be partitioned into
     subtasks, which may be assigned to different work groups
     without fear of undetected incompatibilities.
 
  o  Garbage collection. Languages without automatic object
     storage administration cause their practitioners enormous
     problems in determining the life span of objects. This leads
     either to the premature demise of useful objects or to the
     silting up of memory resulting in unwanted and sometimes
     irreproducible situations which defy diagnosis. SIMULA has
     automatic garbage collection, eliminating intractable
     problems of this nature.
 
  o  Portability. SIMULA has a rigid standard definition and
     programs are highly portable between different computer
     systems (source code compatibility).
 
 
 
Literature
==========
 
The Standard:
 
[SIS87]   SIMULA Standard. Stockholm, 1987. Data processing -
          Programming languages - SIMULA,
          Swedish Standard SS 63 61 14.
 
Textbooks on SIMULA:
 
[BDMN73]  Graham M. Birtwistle, Ole-Johan Dahl, Bjoern Myhrhaug,
          and Kristen Nygaard. SIMULA BEGIN. Studentlitteratur,
          Lund, Sweden, 1973. ISBN 91-44-06211-7. Also published
          by Bratt Institut fuer neues Lernen, Goch, GDR and
          Chartwell-Bratt Ltd., Bromley, England.
 
[Jed86]   P. Jedlovzky. Do it with SIMULA. COMPUDRUG International,
          Laxenburgerstr. 49/7/15, A-1100 Wien, Austria, 1986.
 
[Poo87]   R. J. Pooley. An Introduction to Programming in SIMULA.
          Blackwell Scientific Publications, Oxford, 1987.
          ISBN 0-632-01611-6 resp. 0-632-01422-9 (pbk.).
 
[Lam88]   Guenther Lamprecht. SIMULA - Einfuehrung in die
          Programmiersprache. Vieweg Verlag, Braunschweig,
          Wiesbaden, 3. neubearbeitete Auflage, 1988.
          ISBN 3-528-23321-4. (In German, also available in
          English)
 
[Kir89]   Bjoern Kirkerud. Object-Oriented Programming with
          SIMULA. International Computer Science Series. Addison-
          Wesley Publishing Co., 1989.  ISBN 0-201-17574-6.
 
Textbooks on Simulation:
 
[Fra77]   W. R. Franta. The process view of simulation. Elsevier
          North-Holland, New-York, 1977. Also published by North-
          Holland, Netherlands.
 
[Bir79]   Graham M. Birtwistle. DEMOS - Discrete Event Modelling
          on SIMULA.  MacMillan Press, London, Basingstoke, 1979.
          ISBN 0-333-32881-8.
 
[Mit82]   I. Mitrani. Simulation Techniques for discrete event
          systems. Cambridge University Press, 1982.
 
[Kre86]   Wolfgang Kreutzer. System Simulation Programming Styles
          and Languages. Addison-Wesley Publishing Co., 1986.
 
 
SIMULA - Implementations
========================
 
SIMULA is available for the following computer systems:

          Apollo DN3000
          Apple MacIntosh/MPW
          Atari ST/STE/TT
          BESM 6 (USSR)
          CDC 3000,  CDC 6000/Cyber
          Convex
          Cromemco CS-x00
          DEC 10/20,  DEC DECstation (MIPS)
          DG Eclipse/Desktop,  DG MV
          EC 1040/1055 (GDR)
          Encore Multimax
          ES EVM (USSR)
          Honeywell Bull DPS8
          HPUX hppa 9000s800, HPUX hppa 9000s700, HPUX mc68040
          IBM mainframe
          IBM PC/DOS,  IBM PC/OS2,  IBM PC/XENIX(UNIX)
          IBM RS6000 AIX
          ICL 2900
          Indata IN4200
          Masscomp
          NCR Minitower, NCR Tower XP/32
          Next
          Nixdorf Targon/31
          Norsk Data NORD 100/500
          PR1ME
          SIEMENS 7500/BS2000, SIEMENS 7800/BS3000
          SIEMENS MX, SIEMENS WX200, SIEMENS PCD
          Sony News
          Sperry 1100
          SUN-3, SUN-4 (SPARC)
          VAX/UNIX,  VAX/VMS
 
Since there are new implementations under way this list may be
already incomplete.
 
 
More information on SIMULA
==========================
 
          Association of SIMULA Users (ASU)
          Secreteriat: Henry Islo
          Department of Manufacturing Systems
          Royal Institute of Technology
          S - 100 44 Stockholm
          Sweden
 
          Telephone: (+46 8) 790 60 00  exchange
                     (+46 8) 790 63 75  direct
                     (+46 8) 21 95 76   secretary
          Fax.:      (+46 8) 20 22 27
          E-mail:    hio@helios.sunet.se
                     hio@cadcam.kth.se
 
The ASU was formed in 1973 and has members in over 50 countries.
It arranges conferences, workshops and schools and publishes, free
of charge, a periodic Newsletter.
 
 
Contact for SIMULA in Germany:
 
          SIMULA Project
          c/o University Dortmund / IRB
          P.O.B. 50 05 00
          D - W4600 Dortmund 50
          F.R. Germany
 
          e-mail:   simula@informatik.uni-dortmund.de
 
Editors SIMULA Newsletter:
Karel Babcicky
Grafisk Institutt
Gaustadalleen 21
0371 Oslo 3
Norway
Tel:    (+47 2) 95 85 77
Fax:    (+47 2) 60 28 18
E-mail: kb@gi.no

Eileen Schreiner
Norwegian Computing Center
Postbox 114, Blindern
0314 Oslo 3
Norway
Tel:    (+47 2) 45 35 00
Fax:    (+47 2) 69 76 60
E-mail: eileen@nr.no
 
---------------------
ASU Council 1989/1990
---------------------
Ron Kerr, chairman
Computing Laboratory
University of Newcastle upon Tyne
Newcastle upon Tyne
NE1 7RU England
Tel:    (+44 91) 222 8187
Fax:    (+44 91) 222 8232
Telex:  53 654 uninew g
E-mail: r.kerr@uk.ac.newcastle (r.kerr@newcastle.ac.uk)
 
Karel Babcicky
Grafisk Institutt
Gaustadalleen 21
0371 Oslo 3
Norway
Tel:    (+47 2) 95 85 77
Fax:    (+47 2) 60 28 18
E-mail: kb@gi.no
 
Boris Magnusson
Lund Software House AB
Box 7056
S-220 07 Lund
Sweden
Tel:    (+46 46) 13 40 60
Fax:    (+46 46) 13 10 21
E-mail: boris@dna.lth.se
 
Onno van Schalkwijk
Rekencentrum der Rijksuniversiteit
Postbus 800
9700 AV  Groningen
The Netherlands
Tel:    (+31 50) 63 80 80
Fax:    (+31 50) 63 34 06
E-mail: ovs@rc.rug.nl
---------------------------------------
SIMULA discussion list on Bitnet/EARN/Netnorth:
 
SIMULA@HEARN
SIMULA@DEARN
SIMULA@EB0UB011
SIMULA@FINHUTC
SIMULA@BITNIC
SIMULA@UGA
SIMULA@MARIST
 
Subscribe by sending
 
SUBSCIBE SIMULA your_full_name>
 
as the first line of your e-mail to LISTSERV@BITNIC.bitnet

To contribute email to SIMULA@hearn.bitnet.

----------------------------------------------------
SIMULA database on Bitnet/EARN/Netnorth:
 
LISTSERV@DEARN.bitnet
 
Get the filelist by sending
 
GET SIMULA FILELIST
 
as the first line of your e-mail to LISTSERV@DEARN

----------------------------------------------------
SIMULA database on Internet:
Use Gopher or ftp to ftp.fenk.wau.nl
(user anonymous, password your email address).