Xref: utzoo comp.lang.smalltalk:598 comp.lang.c++:1219 comp.lang.misc:1645
Path: utzoo!dciem!nrcaer!scs!spl1!laidbak!att!pacbell!ames!ll-xn!mit-eddie!uw-beaver!cornell!batcomputer!itsgw!steinmetz!uunet!grand!day
From: day@grand.UUCP (Dave Yost)
Newsgroups: comp.lang.smalltalk,comp.lang.c++,comp.lang.misc
Subject: Re: Request for book review : OOP books
Message-ID: <417@grand.UUCP>
Date: 1 Jun 88 19:05:44 GMT
Article-I.D.: grand.417
References: <3274@pdn.UUCP> <412@grand.UUCP> <239@pvab.UUCP>
Reply-To: day@grand.UUCP (Dave Yost)
Organization: Grand Software, Inc., Los Angels, CA 213-650-1089
Lines: 58

In article <239@pvab.UUCP> robert@pvab.UUCP (Robert Claeson) writes:
>
>Can I buy Eiffel? From whom? Or are there other implementations?

Bertrand Meyer's company sells an Eiffel compiler with
class library and a bunch of tools.

    Interactive Software Engineering
    805-685-1006
    270 Storke Road, Suite 7
    Goleta, CA  93117

The class library is especially useful because it has
a lot of container classes in it, like tree, array,
linked list, two-way linked list, stack, etc.  Eiffel
has genericity, aka parameterized types, so you can put
anything you want in those containers.  For example,
    pnt: TREE[POINT],
    poly: LINKED_LIST[POLYGON]
uses only one one copy of the LINKED_LIST container
code, even though LINKED_LIST is inherited by the TREE
class.

Three of these tools are really interesting:
   flat    translate a class definition into one in
	   which all the inherited features are merged
	   into the class itself so the reader doesn't
	   have to poke around in the inheritance
	   structure to see what's what.
   short   translate a class definition into a short
	   form to serve as the documentation on the
	   class interface.
	   A -t flag makes troff output.
   es      build a program from a specified collection
	   of classes with various compile-time options.

Class definitions have a 1-to-1 correspondence with
files.  There are no header files to keep in sync,
and there is no separate list of dependencies (as in
Makefiles) to keep in sync (you don't use make, except
perhaps at some outer level).  The class definition
file itself serves as the sole repository for
information about a class.  The program building tool,
es, understands enough about Eiffel to determine class
dependencies, and recompiles classes as necessary if
you change something.  For instance, if there is no
change to the exported interface in class A, then
client class B will not be recompiled, and if only some
code inside a routine of class A is changed, neither B
nor heir class C will be recompiled.

The compiler generates C, the portable low-level
language of our day.

I haven't tried this stuff yet, I've just seen a demo
and read about it.

 --dave