[comp.lang.eiffel] Eiffel compilers and generics

sdl@linus.UUCP (Steven D. Litvintchouk) (02/28/89)

I've been programming in Ada for some years now, yet I remain
disappointed in how badly Ada compilers deal with generics
(parameterized program units).

Some Ada compilers crash altogether when presented with even
moderately complex Ada generics.  And only two Ada compilers I know
of, can generate object code that is shared among multiple generic
instantiations, when the generics involve generic formal subprogram
parameters.  In the past, the reliability of the library manager
provided with the Ada compiler (to support separate compilation) was
also a concern.

I would like to ask users of current Eiffel compilers whether
they are encountering similar "teething problems."  That is, how well
do Eiffel compilers do with parameterized classes?  Are separate
compilation facilities reliable?  Is the library manager robust and
"industrial-strength"?


Steven Litvintchouk
MITRE Corporation
Burlington Road
Bedford, MA  01730

Fone:  (617)271-7753
ARPA:  sdl@mitre-bedford.arpa
UUCP:  ...{att,decvax,genrad,ll-xn,philabs,utzoo}!linus!sdl

	"Those who will be able to conquer software will be able to
	 conquer the world."  -- Tadahiro Sekimoto, president, NEC Corp.

mikael@sm.luth.se (Mikael Eriksson) (03/03/89)

In article <45493@linus.UUCP> sdl@linus.UUCP (Steven D. Litvintchouk) writes:

>I've been programming in Ada for some years now, yet I remain
>disappointed in how badly Ada compilers deal with generics
>(parameterized program units).
>
> How well
>do Eiffel compilers do with parameterized classes?  Are separate
>compilation facilities reliable?  Is the library manager robust and
>"industrial-strength"?

Disclaimer: I havent tried to use eiffel yet so this is just educated
guesses. In eiffel generics are much easier to handle than in ADA.
It also only has generic types, not generic subprograms.
Since everything in an eiffel program is objects the compiler knows
how many bytes the objects of the parameter class is going to
take. (The size of a pointer.) It is also only allowed to do
operations on generic objects that can be done on objects of
all classes. This can be easily implemented.

The above discussion only covers parameterized classes. Another
form of generics is given by using inheritanse. Take the classic
example of a list that contains graphic elements that can be
circles, polygons or lines. The list can then be seen as generic
with the limitation that the objects in list must be descendants
of the graphic class. This can in some cases be more powerful than
the parameterized classes since it is possible to do more things
with the objects in the list than just storing them. Both
forms of generics are of course wery useful.

>Steven Litvintchouk
>MITRE Corporation
>Burlington Road
>Bedford, MA  01730
>


-- 
Mikael Eriksson (Email: mikael@sm.luth.se)
.........
You are in error. 2+2=5
Thank you for your cooperation. The Computer.