O'small (Announcement of a new compiler)

[Although not directly about types, the following seems worth
circulation because of the great interest in type systems for
object-oriented languages.  -- Philip Wadler, moderator, Types Forum]

             O'small - THE object-oriented language for teaching
                       (Announcement of a new compiler)

*** An object-oriented language for teaching?

Depending on which aspects of object-orientation you want to convey you
may choose your teaching language. If you want to teach the aspect of
software reuse and nice graphical user interfaces, you should choose
Smalltalk. If you want to show students how to program in a best
selling language you should choose C++.

*** In which case should I choose O'small?

You should consider O'small if you believe that computer languages
should have a GOOD FORMAL SEMANTICS. Everyone will agree that a
language needs a formal semantics. Otherwise, your program will yield
different results on different implementations. A good formal
semantics does not only serve the purpose of precisely defining what
the results of your programs are, it also gives insights about the
nature of the language. 

You should consider O'small if you do not want to waste time on
unnecessary details. O'small is CONCISE. Its syntax and semantics
takes no more than one page (if you choose the right font). Its syntax
is similar to more traditional languages. O'small has been used in a
lecture showing the differences between wrapper semantics
(denotational) and method lookup semantics (operational). 

O'small is FREE! Up to now, there has only been an O'small interpreter
written in Miranda [Hen91b]. This interpreter is directly based on the
denotational semantics of O'small [Hen91d]. The interpreter itself is
available by ftp. However, you need Miranda in order to run it. Now,
there is a NEW IMPLEMENTATION of O'small based entirely on EASILY
AVAILABLE SOFTWARE. This software is not free but it does not cost
anything. The new implementation is based on an abstract machine [Boe93].
The compiler is written in SML/NJ using sml-lex and sml-yacc. 
The interpreter is written in C.

You can MODIFY the language and have your students make experiments
with it. The source code of the abstract machine and the
specifications for the parser and scanner generators are available.
Using these generators you can make experiments for your own research
in static analysis of object-oriented languages.
A type inferencer [Hen91c] is in preparation but not finished yet.

*** I would like to TRY O'small

You get the implementation by anonymous internet ftp.
The following table gives the ftp connection information.

Host:		 	Net Address:	  Directory:
cs.uni-sb.de        /pub/osmall/machine

The directory /pub/osmall/machine contains the files
	ANNOUNCE 		this file
	oma.1.00.tar.Z 		compressed tar-file

NOTE: Ftp should be put into binary mode before transferring the compressed
tar file.

Here is a sample dialog:

   ftp> open cs.uni-sb.de
   Name: anonymous
   Password: <your name>
   ftp> binary
   ftp> cd /pub/osmall/machine
   ftp> get README
   ftp> get ANNOUNCE
(  ftp> get HowToGetML  )
   ftp> get oma.1.00.tar.Z
   ftp> close
   ftp> quit

If you have a Sun 4 or a SPARC you can use the existing executable files.
Otherwise, you need 'sml-yacc', 'sml-lex' and 'sml-noshare'. Read
'HowToGetML' to obtain them.

Instructions on using the machine are contained in the file README.


[Boe93]  Christoph Boeschen.  Christmas - An abstract machine for
         O'small.  Master's thesis, Universit"at des Saarlandes, 
         Fachbereich 14, June 1993.

[Hen91b] Andreas V. Hense.  An O'small interpreter based on denotational
         semantics.  Technical Report A 07/91, Universit"at des Saarlandes,
         Fachbereich 14, November 1991.

[Hen91c] Andreas V. Hense. Type inference for O'small. Technical Report A
         06/91, Universit"at des Saarlandes, Fachbereich 14, October 1991.

[Hen91d] Andreas V. Hense.  Wrapper semantics of an object-oriented pro-
         gramming language with state. In T. Ito and A. R. Meyer, editors,
         Theoretical Aspects of Computer Software, volume 526 of Lecture No-
         tes in Computer Science, pages 548-568. Springer-Verlag, September

[Hen93]  Andreas V. Hense.  Denotational semantics of an object-oriented
         programming language with explicit wrappers.  Formal Aspects of
         Computing, 5(3), 1993. to appear.

[HS92]   Andreas V. Hense and Gert Smolka.  A verification of extensible
         record types.  In Zhongzhi Shi, editor, Proceedings of the IFIP
         TC12/WG12.3 International Workshop on Automated Reasoning,
         pages 137-164, Beijing, P.R. China, 13-16 July 1992. Internatio-
         nal Federation for Information Processing, Elsevier, North-Holland,
         Excerpta Medica.

[HS93]   Andreas V. Hense and Gert Smolka.  Principal types for object-
         oriented languages. Technical Report A 02/93, Universit"at des Saar-
         landes, Fachbereich 14, June 1993.