[comp.lang.eiffel] a report

day@grand.UUCP (Dave Yost) (12/22/88)

From: kimr@tekcrl.tek.com
Date: Sun, 13 Nov 88 21:23:53 PST

			Eiffel At OOPSLA
			 A Trip Report

This report details several activities pertaining to Eiffel at the
Object Orient Programming Systems and LAnguages (OOPSLA) conference
held September 25-30 in San Diego.  Eiffel is a commercially available
object oriented language and environment from Interactive Software
Systems, Goleta, CA.  These activities included the first North
American User's Group meeting, a Tutorial on Object-Oriented Software
Construction which used Eiffel for programming examples, and an Eiffel
Birds-Of-A-Feather session.


SYSTEM SUMMARY: Eiffel is an object-oriented language designed for
engineering reusable, reliable software. It has multiple inheritance,
garbage collection, typing, dynamic binding, genericity, and
polymorphism. The development environment runs on Unix and Xenix
platforms, including mainframes, applications can be delivered to any
system that has a C compiler, and you can easily interface C to Eiffel.
Base class and X11 graphics libraries are available, as well as site
and source licenses.

LEGAL STATUS:  During the week, a number of questions came up regarding
the legal status of the Eiffel language.  The Eiffel language will be
licensed at no cost and royalty-free to other developers, similarly to
the model Adobe is using for PostScript. The intention is to be able to
control the definition of the Eiffel language, while making it easy for
others to develop tools, compilers, and libraries in it.  A letter from
ISE will be published in SIGPLAN Notices formally announcing this
policy.  As always, the libraries and runtime system may be delivered
with any application in binary form with no license or royalties.

EIFFEL USER'S GROUP MEETING: The 2nd Eiffel User's Group Meeting
held in San Diego in conjunction with OOPSLA on September 25, 1988.  
Approximately 30 people attended, of which about 20 were current Eiffel
users and 10 were interested parties.  Eight presentations were given
by Eiffel users, and Bertrand Meyer talked about what were coming in the
short term.  

My primary purpose in attending was to find out how "real" the system
was. All of the people who spoke had been using Eiffel for 6 months or
less.  There are currently about 50 licensees in North America with
another 50 in Europe. ISE expects to have 1000 licensees within the
next 12 months.  Eiffel has been available since the fall of 1986.

The biggest user represented was Cognos of Ottawa, Canada.  They have
400 employees and develop 4th generation business languages, and had
been using an in-house object oriented language.  Their advanced
development team of 30 people dropped it in favor of Eiffel over a
weekend and were productively using Eiffel within 2 weeks.

The sizes of applications reported on ranged from 34 classes to more
than 400 classes (at Cognos).  The general experience was that
programmers could learn Eiffel in a couple of weeks, but doing good
object oriented design (in any object-oriented language) was a hard
problem - a theme repeated throughout the week at OOPSLA.

Users from the academic (2) and scientific programming (2) communities
also made presentations.  The presentation I liked most described work
at Sandia Labs using Eiffel to design a visualization framework, and
then combining FORTRAN math libraries, C graphics libraries, a
relational DBMS, and a User Interface Management System with Eiffel.

ISE wishes the North American User's Group to be independent of ISE,
and a request was made for volunteers to undertake the formation of
an user's independent group, but no one present volunteered to assume
that responsibility.

PHILOSOPHY:  Dr. Meyer described the Eiffel philosophy as follows:
Eiffel is "structured programming taken seriously", the first language
combining CASE with OOP, as well as being the first commercial
application of systematic programming and formal specification
research.

ISE'S GOAL: To make Eiffel one of the four major programming languages
and environments.

PROBLEMS WITH THE SYSTEM:  Not everything's perfect, right?  So there
I was, waiting with baited breath to find out if the Eiffel system
really worked.  The primary complaints the users had were that the
YACC-based parser gave up after the first syntax error, and that the
FORTRAN language interface hasn't been added yet.  

Perhaps the worst problem reported is the fact the the intermediate
compiler files which are stored to allow incremental compilation are
shared, so if multiple people are working with the same classes, and
one compiles with debugging on, and another compiles with debugging
off, the whole system get recompiled, and whoever was last gets it
their way.  The work-around is to make private copies of whichever
classes you want to compile with nonstandard options.

Another problem is that the C package generator does not properly
include the debugger, so constructing a cross-debuggable application
requires some manual tweaks.  Finally, only basic C types can currently
be passed back and forth between C and Eiffel.  The next release will
be able to pass struct types.

Only one performance problem was reported, and that was with
initialization time for the Cognos system.  The problem hasn't been
analyzed by the program author's yet to see if they did anything
silly.  ISE claims the performance of Eiffel is within 20% of the
same program hand coded in C.

COMING ATTRACTIONS - SHORT TERM:  The next system release is scheduled
for December (they've been happening once every 6 months). Coming
in that release or the next is version management, a means for grouping
classes (which will not be a part of the language), a reduction in
the number of intermediate files stored for a class, uniform treatment
of simple (real, integer, float, character) and class types (primarily
through the introduction of the predefined class Number, which simple
types will inherit from, plus limited operator overloading so arithmetic
operators can be used with class types.  A "continue" recovery action
will be added to the exception mechanism (which currently allows retry
or failure).

MEDIUM TERM: Concurrency, using a simple (possibly semaphore)
synchronization model upon which more interesting abstractions can be
built.  Persistency for objects beyond the load/store mechanism using
the already existing memory paging mechanism.
Porting to DOS.  An independent User's Group and class exchange.  New
compiler front end with better error recovery.  Regular expression,
string searching, and finite state machine routines to be added to the
library.

TUTORIAL:  I didn't attend the tutorial on the assumption that it
would be a presentation of the material in Dr. Meyer's Object-Oriented
Software Construction Book.  It turns out that was what it was, and
he didn't have time to get through all the prepared material.  People
who I spoke to what took it had widely varying reactions - from "it was
all obvious" to "it was good stuff" to "I just read the book 3 weeks ago."

BIRDS OF A FEATHER: This session, held at the end of the week, was more
technical, delving into the language design in the areas of control
structures (the looping construct) and typing.


Kim Rochat
Software Productivity Technologies
Tektronix, Inc
kimr@tekcrl.tek.com