Newsgroups: comp.object,comp.lang.smalltalk,comp.lang.eiffel
Subject: Re: comparing object-oriented platforms
From: Des.Kenny@bbs.actrix.gen.nz
Date: Tue, 29 Sep 1992 04:34:18 GMT
Organization: Actrix Information Exchange
Summary: Eiffel VS Modula 3

In article <DAGENAIS.92Sep28090446@pollux.vlsi.polymtl.ca> dagenais@vlsi.polymtl.ca (Michel Dagenais) writes:
> In article <-t!p#_a.nagle@netcom.com> nagle@netcom.com (John Nagle) writes:
> 
> 
> >	   Modula-3	Limited interest - one free compiler, one book.
> >			   Adds classes to Modula-2.  Less used than
> >			   Modula-2.  
> 
> I dont want to start a language war here (it already started, a dozen
> replies already came out on John Nagle's post), but the extensive libraries
> available ( X graphical user interface, read/write for objects) for free
> with DEC SRC Modula 3 should be mentioned. Moreover it has garbage
> collection AND preemptive multi-threading (all the libraries are thread
> safe), which none of the others mentioned (C++, Eiffel, SmallTalk...) have.
> Threads are quite useful for user interaction and client-server
> applications.

In comparison to Eiffel I would like to know:

Does Modula-3 have inheritance/multiple inheritance?

Which leads to the question does Modula-3 have
polymorphism and dynamic binding?

Is the garbage collector an incremental one , operating as a coroutine.
Can the garbage collector be tuned from a running system, so that 
the collection frequency and period is managed by an application or a user.
Although is really an issue of an environment rather than the language
per se. I agree it is certainly important.

______________________________________________________________________
As far as Eiffel is concerned there have been a number of discussions
on concurrency and some proposed implementation techniques.

A couple of the latest papers are from TOOLS USA August '92, Prentice Hall.

1.  "Concurrency Annotations Improve Reusability", Klaus-Peter Lohr ( with an
oomlaut), Freie Universitat (with oomlaut) Berlin
 email: lohr@inf.fu-berlin.de
  
   Concurrency is implemented as an annotation which are inserted as comments.
"Carefully chosen annotations lead to a declarative style of concurrent
object-oriented programming and avoid problems with the interplay between
concurrency and inheritance" : from the abstract

This has been implemented in a system called CEiffel.

"The project relies on experience gained from DAPHNE, a module-based system
for distributed execution of sequential Modula programs [Lohr et al 88]
We did not introduce yet another "distributed' version of Eiffel. CEiffel will
be used for programming, and a configuration tool will take care of
distribution issues such as stub generation for remote object invocation and
construction and placement of load images on the nodes of a network. A
different approach has been taken for Distributed Eiffel, a considerably
modified version of Eiffel described in [Gunaseelan/LeBlanc 91]"

"We have developed a portable threading system in Eiffel (version 2), and
CEiffel is being implemented through a precompiler that generates threaded
Eiffel code"

This is an interesting approach. A particular class may be processed
sequentially or concurrently as you choose. 

2. Another approach is given in the TOOLS USA, August '92 proceedings:
   This is called

" A concurrency mechanism for sequential Eiffel", Murat Karaorman, John Bruno
University of California, Sanata Barbara,
email: murat@cs.ucsb.edu, bruno@cs.ucsb.edu

This approach is to consider concurrency as a "well-defined, inheritable
property of objects specified in the class CONCURRENCY, and provides a
methodology using inheritance to write concurrent object-oriented
applications."


Concurrency is considered a set of features that can be added to any class
by using multiple inheritance.

So no syntactic extension of the Eiffel language is required.

This is another illustration of the application of multiple inheritance.
It seems to me that we are going to see more of this type of approach to
add new capabilities to the Eiffel language without having to make
fundamental changes to the language syntax every time. It illustrates
the capaability of Eiffel's conceptual extension into new domains because
although you are not adding new syntax you are adding new TYPES to the
language, together with their relevant operators and constraints.

So the concepts of threads and concurrency are not foriegn to Eiffel.
See the references in these papers for earlier papers.

It will be interesting to see these techniques in action. I suggest you
contact the authors of the above papers for more information.

Regards

--Des Kenny
  Objective Methods
  PO Box 17356
  Wellington 
  New Zealand
  Phone: 64 4 476 9499
  fax:   64 4 467 9237
  email(Internet): Des.Kenny@bbs.actrix.gen.nz