From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,73036d0217be91e2 X-Google-Attributes: gid103376,public From: bobduff@world.std.com (Robert A Duff) Subject: Re: Inheritance versus Generics Date: 1997/04/25 Message-ID: #1/1 X-Deja-AN: 237273021 References: <33601924.774@flash.net> Organization: The World Public Access UNIX, Brookline, MA Newsgroups: comp.lang.ada Date: 1997-04-25T00:00:00+00:00 List-Id: In article <33601924.774@flash.net>, Craig Smith wrote: >Generics were a very power feature of Ada-83. With the OO features >introduced into Ada-95 (in particuliar, the tagged record and ability to >inherit), are Generics obsolute? No, generics are not obsolete. Bertrand Meyer explains why quite clearly in his OO book. He talks a lot about Eiffel, but his arguments on this point apply to Ada as well. *Some* uses of Ada 83 generics are better done with Ada 95 tagged types, but certainly not all. In fact, a mixture of the two features often makes sense. E.g., consider data structure generic package, like "Generic_Lists", where the element type is a generic formal parameter. You might want to have homogeneous lists of some specific type (list-of-integer). You might also want to have heterogeneous lists, by passing in Some_Type'Class. The same generic works for both. If you use tagged types to make your lists, instead of generics, then you end up losing type checking -- you *can't* constrain the type of list elements. (Java has this problem, as does Smalltalk.) You also end up having to derive from some central List_Item type, so if you have an existing type T, you have to go back and modify if it you want it in lists. (Assuming the links are in the list items, which is one way you might want to do it.) (Smalltalk doesn't have this problem. But then it doesn't try to do much type checking.) >... I would guess since several features >were added to generics (like generic formal package parameters), the >answer is no. Does anyone have any thoughts on this? And generic formal derived types. - Bob