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,df854b5838c3e14 X-Google-Attributes: gid103376,public From: stt@henning.camb.inmet.com (Tucker Taft) Subject: Re: C/C++ knocks the .... Date: 1996/02/18 Message-ID: #1/1 X-Deja-AN: 139911130 sender: news@inmet.camb.inmet.com (USENET news) x-nntp-posting-host: henning.camb.inmet.com references: <4g2r2r$ded@stc06.ctd.ornl.gov> organization: Intermetrics, Inc. newsgroups: comp.lang.ada Date: 1996-02-18T00:00:00+00:00 List-Id: Matt Kennel (kennel@msr.epm.ornl.gov) wrote: : ... : As for Ada, I'm not yet fully convinced abou the package vs : type thing. C++ might be ugly because you can have all sorts of : elements outside classes, but in Eiffel you cannot. : Eiffel intentionally makes the unit of namespace and of type : the same. : The question is, do the benefits of having them completely separate : make up for the extra work and complexity of having to double the : number of 'mental units' in most idiomatic programs. (and without : MI you have to go a bit further) : Yes, Ada has them on orthogonal axes. Eiffel only has "one axis" : but it may empirically be along the major princpal component with : only a small deviation in other directions. On the other hand, various Eiffel implementations have felt the need to add yet another language on top for doing "configuration" of large systems (I think it is called "GRACE"?). This seems to indicate that programmers have a need to deal with larger groupings than that represented by a single class. Although one could conceivably just create larger and larger classes, at some point the model of a "type" breaks down, whereas the notion of a package scales nicely to the notion of a subsystem, as in Ada 95. It is interesting to note that Java has the notion of "package" for defining groups of classes. This seems like a reasonable compromise, though it still loses out on some of the other advantages of defining abstractions using a package rather than a class, such as symmetry of parameters in binary operations, and elimination of the pesky "once" or "static" qualifiers of Eiffel/C++/Java that are needed to turn a "component" of a type into a component of a module. -Tucker Taft stt@inmet.com http://www.inmet.com/~stt/ Intermetrics, Inc. Cambridge, MA USA