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.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,158ce2376534c35d X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news3.google.com!feeder.news-service.com!news.albasani.net!news.tornevall.net!.POSTED!not-for-mail From: Jeffrey Carter Newsgroups: comp.lang.ada Subject: Re: Derived private interface Date: Sat, 23 Jul 2011 00:30:12 -0700 Organization: TornevallNET - http://news.tornevall.net Message-ID: References: <27656578-65aa-48b9-9f89-4ebd4e0cb02a@glegroupsg2000goo.googlegroups.com> <0fe3b0f8-c064-444d-899d-640e891b58c3@w4g2000yqm.googlegroups.com> <128d8eb5-1cc6-47e3-a09b-b53a5ef289ce@m10g2000yqd.googlegroups.com> <4e141501$0$6629$9b4e6d93@newsspool2.arcor-online.net> <4b2728fc-6127-45d8-a314-9fc491701c26@g12g2000yqd.googlegroups.com> <82vcve4bqx.fsf@stephe-leake.org> <4e15b223$0$6541$9b4e6d93@newsspool4.arcor-online.net> NNTP-Posting-Host: 97aba4bcb864829bd6f5278991188f82 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: 73b2214af09f4ef80ad08bf0a30f4416 X-Complaints-To: abuse@tornevall.net User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 X-Complaints-Language: Spoken language is english or swedish - NOT ITALIAN, FRENCH, GERMAN OR ANY OTHER LANGUAGE! In-Reply-To: X-UserIDNumber: 1738 X-Validate-Post: http://news.tornevall.net/validate.php?trace=73b2214af09f4ef80ad08bf0a30f4416 X-Complaints-Italiano: Non abbiamo padronanza della lingua italiana - se mandate una email scrivete solo in Inglese, grazie X-Posting-User: 0243687135df8c4b260dd4a9a93c79bd Xref: g2news2.google.com comp.lang.ada:21285 Date: 2011-07-23T00:30:12-07:00 List-Id: On 07/22/2011 03:59 PM, Randy Brukardt wrote: > > Given that the problem in question is related to dynamic dispatching and has > nothing in particular to do with extensions, this is an amazing statement. My statement was tongue in cheek, intended to express my dislike for tagged types. Their only value seems to be all the traffic here from people who run into problems trying to use them; this would be a much quieter place without them. Maybe I'm missing something, but it seems to me that all dispatching in Ada is related to extensions. If you have type T is tagged ... procedure P (V : in out T); and you never extend T, then you never get dispatching (in the sense that a call to P results in something other than this P being called). To get dispatching, you have to extend T type T2 is new T with ... overriding procedure P (V : in out T2); Then you can get a single call that sometimes calls P for T and other times P for T2; that's dispatching. I don't know what dispatching means without an extension and an overridden subprogram to dispatch to. > OTOH, programming by composition would provide nothing, in that there would > be no way to change the handlers for the base type. One could graft some > sort of unstructured mechanism on top of the objects (possibly using > access-to-subprograms), but this would provide many more opportunities for > mistakes (if you forget to set the access-to-subprogram value, the routine > might as well not exist). The equivalent of dispatching in programming by composition is a subprogram that contains a case statement that contains calls to other subprograms. No access-to-subprogram values involved. It does the exact same thing as dispatching, except that it's easier to read and understand and doesn't result in large numbers of "what am I doing wrong?" posts to c.l.a. > Remember that there are four legs to the OOP stool: strong typing, > encapsulation, extension, and dynamic dispatching -- and each of these is > orthogonal to the others (shown by the fact that Ada has the first two > without even using tagged types, that is OOP). So there is no necessary > relationship between extension and dispatching (and working around the one > does nothing to solve a problem that mainly depends on the other). Again, I have no idea what dispatching even means in the absence of extension. In Ada, "programming by extension" is achieved by the use of tagged types; it includes dispatching. I have never seen anything implemented using tagged types that could not also be implemented using programming by composition. It follows that if there is a case where tagged types cause a problem, the equivalent solution without tagged types is an effective work around to the problem. Of course, in the case where there is no solution using tagged types, there may also be no solution without using them. -- Jeff Carter "If you think you got a nasty taunting this time, you ain't heard nothing yet!" Monty Python and the Holy Grail 23