Article View: comp.lang.eiffel
Article #1644Eiffel & production software development
From: Bill Wolfe
Date: Mon, 12 Mar 1990 00:29
Date: Mon, 12 Mar 1990 00:29
168 lines
10953 bytes
10953 bytes
The following e-mail conversation recently took place, and I thought
comp.lang.eiffel might like to consider some of the points raised...
(Brad gave me permission to post his comments for contextual purposes)
-------------------- begin transcribed e-mail conversation -------------
>From brad@SSD.CSD.HARRIS.COM (Brad Appleton):
> From wtwolfe@hubcap.clemson.edu (Bill Wolfe):
> > While I agree that Eiffel is not quite as elegant as it's hyped up
> > to be, and despite the fact that I personally would much sooner have
> > a concurrent object-based language (Ada, which actually has object-
> > oriented preprocessors such as Classic Ada anyhow) than a sequential
> > object-oriented language (Eiffel), I don't think it's fair to say
> > that Eiffel should not at least be given serious consideration.
>
> While it is true that Eiffel does not contain constructs for concurrency,
> there are a *large* number of programs which simply CANNOT make use of
> such beasts. In such a case, the "tasking" part of the langauge, seems
> (IMHO) to be overkill. On the other hand, one cannot deny the usefulness
> of such a thing either.
>
> What I would like to see is some kind of add-on (or enable/disable switch?)
> to provide this extra functionality when needed. It would make things less
> expensive for the people who dont want the extra "baggage" while giving
> those that "do" want it the chance to use it.
A good compiler will notice any features that you don't use, and
optimize away the object-code support for all such unused features.
Therefore, assuming a mature compiler, software which does not use
tasking will face no penalty. The issue is therefore not whether
the language design should include it, but whether the language's
compilers are mature enough to deal with it correctly. Some might
argue that this would require too much compilation time, but the
correct approach is to do the sophisticated optimizations only when
compiling the final, production product. Telesoft's Ada compilation
system, for example, does some highly sophisticated inter-package
optimizations when operated in its production-product mode, but does
not waste time doing them when operated in default (development) mode.
> If Eiffel "were" to have tasking added in to its syntax or as a class,
> would you still prefer Ada? Under what conditions? Would you argue
> that it is better to add tasking to the language itself or via a
> class library?
>
> Example: Nahrain Gehani has developed Concurrent C which adds Ada-like
> constructs (task-spec, body, and rendez-vous facility) to C/C++. Bjarne
> Stroustrup feels that this is not the solution, that there should be (and
> there is at AT&T) a task class to accomplish this.
I think this is one of the stupidest ideas Bjarne has ever propagated,
and in my opinion it will crush C++'s long-term prospects. (Which, in
my view, is a Very Good Thing anyway.)
Now let me give you a reference: "Object-Oriented Development", edited
by Dennis Tsichritais, Centre Universitaire d' Informatique, Universite'
de Geneve. Within this reference, the article "Concurrency Issues in
Object-Oriented Programming Languages", by M. Papathomas. In my view,
both Eiffel and Ada should move toward becoming non-orthogonal, uniform,
integrated concurrent object-oriented programming languages (in terms of
the taxonomy developed in that article). Here are the definitions:
We will call orthogonal the category of languages where objects
are unrelated to concurrency, and non-orthogonal the category of
languages where objects have some predefined properties concerning
concurrency. [...] The non-orthogonal class has the advantage of
preventing the problems that could occur by using "unprotected"
objects in a concurrent environment. Objects of sequential nature
may be implemented in much the same way as in sequential languages.
The mutually exclusive execution of the object's operations is
handled automatically by the language. [Note: I differ slightly
with this in that I think the automatic provision of mutually
exclusive execution should be the default, as opposed to required;
there is an entire field of study which covers ways to implement
data abstractions in such a way that multiple processes can be
active within the data structure simultaneously, while still having
complete safety. These are extremely sophisticated implementations
which most programmers will not be inclined to go for, but in terms
of a reuseable components industry perspective it is *tremendously*
important that it be possible to express them within the language.]
Languages in the uniform category support only one kind of object,
whereas languages in the non-uniform category split the object world
into two kinds of objects: those that serialize the execution of
their operations and those that do not. [...] The distinction
between different kinds of objects characterizing the non-uniform
category presents some disadvantages compared to the uniform one.
The programmer has to decide in advance if a certain object should
be of the "protected" or "unprotected" type. Type hierarchies of
"protected" and "unprotected" objects are typically kept disjoint,
therefore objects having similar behavior may have to be defined
twice, introducing a certain redundancy in the class hierarchy.
Concurrent execution may be expressed by explicitly creating new
threads of control, independently of objects, that communicate and
synchronize by invoking the operations of shared objects. Another
approach is to consider objects as active entities and express
concurrent execution and synchronization by the creation of objects
and their interaction. [...] For languages in the integrated category
concurrent execution is expressed by interaction of objects whereas
in the non-integrated category another concept like a process or
activity is used for expressing concurrent execution. [...] The
integrated approach has the advantage that concurrent applications
are structured in terms of objects which are the units of concurrent
execution. The communication and synchronization of objects is
expressed at the object interface, which is clearly defined.
Now if Eiffel were to include concurrency in the way I have described
above, I would be much more inclined to seriously consider using it
as a production language. However, there remain a large number of
serious problems which Eiffel has not addressed. For example: Meyer
has been said to be quite excited about the potential for information
systems applications. But are there Eiffel compilers for IBM platforms?
Are there bindings to CICS, DB2, etc.? It is only just a few days ago
that the Eiffel Consortium was proposed!! What about compiler validation?
Is the Consortium going to establish a compiler validation facility like
the Ada Joint Program Office's ACVC? Although we are hearing noises about
standardizing Eiffel and getting it into a systematic, controlled revision
cycle, up until now there has been chaotic, uncontrolled revision. I even
read in comp.lang.eiffel about people actually "hacking the compiler"!!!!!
And where is the reuseable components industry Meyer cites as one of his
important goals? Ada *has* a reuseable components industry, here and now.
Summary: Ada is far more mature than Eiffel, and there is a much larger
market for Ada compilers, tools, and components. All the serious problems
I described above have already been addressed successfully by Ada. Thus, I
think it will take a moderate amount of revision and a huge amount of money
to get Eiffel to the point at which it is prepared to seriously challenge
Ada for the title of "Best Production Software Engineering Language".
I would strongly suggest that if Eiffel is indeed seriously concerned
with this objective, then the Consortium should be sending representatives
to Ada conferences (the Tri-Ada series, the Nth Annual National Conference
on Ada Technology series, etc.) to take advantage of the problems Ada has
encountered, and the solutions Ada has found, during its process of becoming
a mature production programming language. If this is not done, Eiffel will
have some very, very tough lessons to learn the hard way as it grows up.
> I know we have yet to come up with the UPL (ultimate programming langauge)
> but right now, Eiffel is at the top of my list. Ada used to be up there
> too but It was so large (and *very* expensive to maintain a validated
> compiler) and a wee-bit to strongly typed for my preference (although
> only a little).
English is an incredibly large language, but we seem to do okay with
it nevertheless. I think Ada will be simplified a bit as it continues
to mature -- for example, merging the concepts of package and task into
the integrated concept of an object would make things easier -- but it
should also be kept in mind that studies have shown that very little can
be trimmed from the Ada language without negatively impacting its basic
capabilities.
It should also be kept in mind that not only is Ada more mature, it is
also exploiting the applied research done by Eiffel and C++ as it moves
into the Ada 9X phase. At the Eighth Annual National Conference on Ada
Technology, the general in charge of SDI specifically listed inheritance
as one of SDI's requirements for Ada 9X. Right now, the provision of
increased support for object-oriented programming is the single hottest
topic in the Ada 9X process. Whether Eiffel should fragment the market
for production software engineering languages by trying to challenge Ada,
as opposed to serving as a research vehicle for making Ada 9X, 0X, etc. a
better-integrated language, is an important question as well. I don't
know the answer, but I hope it will at least be thoughtfully considered.
-------------------- end of transcribed e-mail conversation -------------
Bill Wolfe, wtwolfe@hubcap.clemson.edu
Technical Details
Message-ID:
<8319@hubcap.clemson.edu>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!usc!snorkelwacker!mit-eddie!uw-beaver!Teknowledge.COM!unix!hplabs!hp-pcd!hp-sdd!ncr-sd!ncrcae!hubcap!wtwolfeShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!usc!snorkelwacker!mit-eddie!uw-beaver!Teknowledge.COM!unix!hplabs!hp-pcd!hp-sdd!ncr-sd!ncrcae!hubcap!wtwolfe From: wtwolfe@hubcap.clemson.edu (Bill Wolfe) Newsgroups: comp.lang.eiffel Subject: Eiffel & production software development Message-ID: <8319@hubcap.clemson.edu> Date: 12 Mar 90 00:29:06 GMT Organization: Clemson University, Clemson, SC Lines: 168