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=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,2c6139ce13be9980 X-Google-Attributes: gidfac41,public X-Google-Thread: 1108a1,2c6139ce13be9980 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,3d3f20d31be1c33a X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,2c6139ce13be9980 X-Google-Attributes: gidf43e6,public From: Samuel Mize Subject: Re: Interface/Implementation (was Re: Design by Contract) Date: 1997/09/03 Message-ID: <340D9C0E.67F8@link.com>#1/1 X-Deja-AN: 269715096 References: <01bcb389$24f579d0$1c10d30a@ntwneil> <340C85CE.6F42@link.com> Organization: Hughes Training Inc. Reply-To: smize@link.com Newsgroups: comp.object,comp.software-eng,comp.lang.ada,comp.lang.eiffel Date: 1997-09-03T00:00:00+00:00 List-Id: Patrick Doyle wrote: > In the cases where I simply said that what you were talking about > is a design pattern, this means that special language features > are not necessary to do these things. Agreed. In Ada, the design patterns you referred to are built up from three very general facilities: - the "package" (a programmer-defined grouping, not limited to the object-oriented concept of "class"); - the "generic" (loosely, a type-safe "template" facility); - separation of package specification from implementation. Eiffel has a different set of basic blocks, including (it appears to me) more features directly supporting these patterns (selective export, multiple inheritance from abstract classes). The hidden agenda of my posting was to respond to some people saying "we can do X in Eiffel, so it's better than Ada." I listed how to do all those X's, and more. I certainly expected Eiffel to support them, and I was interested to read how. Thanks. > Perhaps it's nicer to have > the language help you out with these design patterns? I don't > know. I think it's more a question of WHICH design patterns are directly supported. One can consider object-oriented programming a design pattern. Any language directly supports a set of design approaches, and (if well designed) supports others with programmer discipline. Ada pretty well supports building large, reliable software, to be maintained over time, with a big team of developers, using traditional methods (which now includes object-oriented methods, but didn't in 1983). > But I think there's a lot of value to Eiffel's simplicity > and orthogonality which allows you to put together constructs > in an intuitive manner which can achieve these things. I would agree, and make exactly the same statement about Ada. Note that programming can be divided orthogonally in various ways. If you look at a basic capability supported by Eiffel, and see how it's implemented using Ada, you may have to combine a number of orthogonal Ada facilities. The reverse is also true. Ada does include more functionality in the language, and represents a different design point. However, the philosophy of providing a set of orthogonal "building blocks" is the same. Indeed, maintaining this approach was one of Tucker Taft's primary guidelines as he led the Ada 9X design. Samuel Mize