[comp.lang.modula2] Modula3 and Oberon requests

salas-m@plains.NoDak.edu (Juan P. Salas) (09/08/90)

	I remember some time ago, someone posted a brief description
of Modula-3, I believe there was also one for Oberon.
	If somebody by any chance has this would you please
email this to me. It is very important i get this should i call them reviews?.

Juan Pablo


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Internet:	salas-m@plains.nodak.edu	"............ ......."     -
-		nu131139@vm1.nodak.edu		"........."		   -
- UUCP:		..!uunet!plains!salas-m		"............."		   -
- BITNET:	salas-m@plains
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 

moss@cs.umass.edu (Eliot Moss) (09/10/90)

You can obtain information on Modula-3 (the Report as well as a compiler that
produces reasonably portable C code for Modula-3 programs; this compiler has
been made to run on a number of popular machines) from gatekeeper.dec.com via
anonymous FTP. Look under the pub tree and you'll find it. Note the license
agreement; it is liberable, but you should check its terms against your
situation.

Modula-3 is similar to Modula-2, but not precisely an extension. It adds
object types in a single inheritance hierarchy, true garbage collection (and
an allocate/free mechanism, too), exceptions and handlers, and threads
(lightweight concurrent processes in the same address space). It eliminates
variant records (object subtypes are nicer) and nested modules, and has a
different opaque type mechanism, integrated with object types.

We are working on a quality optimizing compiler for it, based on gcc, to be
offered for public consumption through the Free Software Foundation under the
terms of the GNU Public License. It should be ready sometime in 1991.

Oberon adds extensible records to Modula-2, but I understand Oberon to be more
of an effort to make a "minimal" language, whereas Modula-3 did not try to
strip down to minimal features and caters a bit more to convenience and
systems programming. (This is necessarily an opinion; I prefer M3, but there
are those who prefer Oberon.) Perhaps someone else will post a resposne
indicating where to learn more about Oberon.
--

		J. Eliot B. Moss, Assistant Professor
		Department of Computer and Information Science
		Lederle Graduate Research Center
		University of Massachusetts
		Amherst, MA  01003
		(413) 545-4206; Moss@cs.umass.edu

John.Matthews@comp.vuw.ac.nz (John Matthews) (09/10/90)

In article <MOSS.90Sep9134825@ibis.cs.umass.edu>, moss@cs.umass.edu
(Eliot Moss) writes:
|> You can obtain information on Modula-3 (the Report as well as a
compiler that
|> produces reasonably portable C code for Modula-3 programs; this
compiler has
|> been made to run on a number of popular machines) from
gatekeeper.dec.com via
|> anonymous FTP. Look under the pub tree and you'll find it. Note the
license
|> agreement; it is liberable, but you should check its terms against
your
|> situation.
|> 


Could you post some more details on the name and/or exact location of
these files.
I looked but could not find them.

vixie@wrl.dec.com (Paul Vixie) (09/10/90)

gatekeeper.dec.com:~ftp/pub/DEC/Modula-3	is SRC Modula 3 (VAX,MIPS,Sun)
gatekeeper.dec.com:~ftp/pub/DEC/Modula-2	is WRL Modula 2 (VAX,MIPS)
--
Paul Vixie
DEC Western Research Lab	<vixie@wrl.dec.com>
Palo Alto, California		...!decwrl!vixie

preston@titan.rice.edu (Preston Briggs) (09/10/90)

In article <MOSS.90Sep9134825@ibis.cs.umass.edu> moss@cs.umass.edu writes:
>Perhaps someone else will post a resposne
>indicating where to learn more about Oberon.

A quick summary:

Oberon has simplified Modula-2 by eliminating variant records,
enumerated types, nested modules, unqualified import, WITH statements,
CARDINAL, multitasking, OPAQUE, and maybe some other stuff.

Oberon extends Modula-2 by adding garbage collection, type extension,
multi-dimensional array parameters, and a new kind of WITH statement.

The key new feature is type extension.  Here's a simple example.
Imagine we want to declare a generally useful binary tree:

TYPE Tree = POINTER TO TreeNode;
     TreeNode =
	 RECORD
	     left,
	     right: Tree
	 END;

So far so good, but there's no data in our tree.
We can declare several extensions, one for each type of data:

TYPE IntTreeNode =
	 RECORD (TreeNode)
	     key: INTEGER
	 END;
     IntTree = POINTER TO IntTreeNode;

     RealTreeNode =
	 RECORD (TreeNode)
	     key: REAL
	 END;
     RealTree = POINTER TO RealTreeNode;

and so forth.
The idea is that we'll be able to use the same code to manipulate
trees of int's and tree of real's (or mixed trees).  Note that
we may re-extend extensions as necessary, and that extensions
provide the functionality of variant records in a cleaner fashion.
There are some details I haven't shown, 
but perhaps this will give you the flavor.

There are several papers on various aspects of the Oberon language.
There are also related papers on the Oberon OS and the Ceres hardware.
Some language papers include

	Type Extensions
	Wirth
	ACM Transactions on Programming Languages and Systems
	April 1988

	From Modula to Oberon
	Wirth
	Software -- Practice and Experience, July 1988

	The Programming Language Oberon
	Wirth
	Software -- Practice and Experience, July 1988

There's also a revised report available from ETH, dated August 1989.
Finally, you should check out the Journal of Structured Programming.
It often has articles on Oberon (and lots of other good stuff, including
various extensions to Modula-2).

-- 
Preston Briggs				looking for the great leap forward
preston@titan.rice.edu

piet@cs.ruu.nl (Piet van Oostrum) (09/11/90)

In article <1990Sep10.144850.10537@wrl.dec.com>, vixie@wrl (Paul Vixie) writes:
 |
 |gatekeeper.dec.com:~ftp/pub/DEC/Modula-3	is SRC Modula 3 (VAX,MIPS,Sun)
                                                                 ^^^^^^^^^^^^
                                                                 and HP9000/300
-- 
Piet* van Oostrum, Dept of Computer Science, Utrecht University,
Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands.
Telephone: +31 30 531806   Uucp:   uunet!mcsun!ruuinf!piet
Telefax:   +31 30 513791   Internet:  piet@cs.ruu.nl   (*`Pete')