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.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,1a52c822fc0dbb23 X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!feeder3.cambrium.nl!feed.tweaknews.nl!feed10.multikabel.net!multikabel.net!feed20.multikabel.net!news.germany.com!news.belwue.de!newsfeed.arcor.de!newsspool4.arcor-online.net!news.arcor.de.POSTED!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Rational for not making cursor tagged in Containers Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.15.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <1176998738.656903.141250@q75g2000hsh.googlegroups.com> <1177010938.200523.325290@p77g2000hsh.googlegroups.com> <1a8y2vakorfhx.225uqh4hifpd$.dlg@40tude.net> <1177031884.096796.106370@e65g2000hsc.googlegroups.com> <1ixi961jqu0qx.1dtcursmkem45$.dlg@40tude.net> Date: Fri, 20 Apr 2007 12:15:43 +0200 Message-ID: <13n66zmsjvzqh$.1a3ql84jx6stn.dlg@40tude.net> NNTP-Posting-Date: 20 Apr 2007 12:15:43 CEST NNTP-Posting-Host: a1bb794b.newsspool4.arcor-online.net X-Trace: DXC=3^CR`G3=NnnPKPPVf;4hUj4IUKkgbbikI0QR7hke X-Complaints-To: usenet-abuse@arcor.de Xref: g2news1.google.com comp.lang.ada:15144 Date: 2007-04-20T12:15:43+02:00 List-Id: On Fri, 20 Apr 2007 11:26:08 +0200, Maciej Sobczak wrote: > Dmitry A. Kazakov wrote: > >> A confusion is in assumption that some arguments of an operation are more >> arguments than others. > > There is some rationale for this, however. > With the traditionally abstract OO, operations are executed as a result > of messages that are sent to objects. Now that indeed gives some objects > more focus than others. > > This: > > a.op(b); > > means (supposedly) that "op" message is sent to object "a" and the > payload of the message is "b". > > I agree that it introduces some asymetry that is not necessarily needed. > I mean - the above abstraction is not necessarily the best one, but > serves me well as an explanation of the a.op(b) issue. Ah, yes, messaging is an interesting issue. >> Another is that primitive operations belong to the >> object (instance). > > No, but it makes sense to think that they belong to the type of some object. They do, if all arguments had the same type. But if they don't? >> The third confusion raises from incompatibility of the >> prefix notation with multi-methods and multiple dispatching operations. > > True. But then, the above messaging abstractions needs to be extended to > cover "multicasts". :-) That is one problem. Another is that you still have dedicated arguments, i.e. ones marshaled (parameters) and ones referenced (recipients). But it is not in Ada way to distinguish by-copy and by-reference. Why should anybody care, why should it be syntactically highlighted? Another problem is the sender. The sugar a.op(b) tells nothing about who issued the message. While the paradigm tells about messages sent *between* objects. This adds additional asymmetry, c, the sender is invisible and actually is a context rather than object. I.e. there are three animals: 1. the recipient (a fully decorated object, blue blood) 2. the parameter[s] (value, hard-wired thing nobody knows what, "non-tagged", as Ada calls it (:-)) 3. the sender's context, which is even not a value. Looks like a mess, even without multicasting, or messages with acknowledge, or remote calls on local objects... -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de