[Prev][Next][Index][Thread]
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 134.96.7.254 /pub/osmall/machine
The directory /pub/osmall/machine contains the files
README
ANNOUNCE this file
HowToGetML
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
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.
References
[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
1991.
[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.