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