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,5c89acd494ea9116 X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII Path: g2news2.google.com!news4.google.com!news.germany.com!newsfeed.freenet.de!newsfeed01.chello.at!newsfeed.arcor.de!newsspool3.arcor-online.net!news.arcor.de.POSTED!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Self pointer in limited record Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.15.1 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <1183577468.034566.57830@n60g2000hse.googlegroups.com> <137iu0lr82dtb$.wqy3zjz2vr9q.dlg@40tude.net> <46d972e8$0$30384$9b4e6d93@newsspool4.arcor-online.net> <1alyfwaig93sk$.99oy269uon$.dlg@40tude.net> <46d9c138$0$4531$9b4e6d93@newsspool3.arcor-online.net> <1rt8kdcrj6tf.1qgvycc6vh357$.dlg@40tude.net> <46db2bf4$0$7699$9b4e6d93@newsspool2.arcor-online.net> <1188816674.2630.25.camel@kartoffel.vocalweb.de> <9cdmw7k85sey.85sb2t1bjefy$.dlg@40tude.net> <1mbajw59c3eir.jyl8bdp6qvj8.dlg@40tude.net> <1188850449.2630.60.camel@kartoffel.vocalweb.de> <1aza6nzawgcnm.sf76q4dvzw4n$.dlg@40tude.net> <46de8897$0$16115$9b4e6d93@newsspool1.arcor-online.net> <15hzyyy3soem0.12hn79bwy27zt$.dlg@40tude.net> <36wdoqy402nv$.14ugvmc6edxwu.dlg@40tude.net> <128w4o7mesap4$.jjwa555mydo6$.dlg@40tude.net> <0n9obf.tgd.ln@hunter.axlog.fr> Date: Thu, 6 Sep 2007 11:28:58 +0200 Message-ID: NNTP-Posting-Date: 06 Sep 2007 11:28:27 CEST NNTP-Posting-Host: 94f2ccb8.newsspool4.arcor-online.net X-Trace: DXC==?1?H8__X:g]l@YUW5NBkn4IUK On Thu, 06 Sep 2007 09:19:54 +0200, Jean-Pierre Rosen wrote: > Dmitry A. Kazakov a �crit : >>> 2 certainly can. The idea is that you cannot put "Spike the dog" into >>> your computer; what you can do is put some characteristics of it in the >>> form of data that are of interest from the point of view of your >>> program. You therefore abstract away all the uninteresting properties. >> >> Yes, but my point is that these characteristics would have qualitative or >> quantitative values from some sets. For example weight. Can I change it? >> Would it be Spike? If yes, then what does the weight characterize? > Of course, if I feed Spike too much, its weight will change - and it is > still Spike. I don't see the problem here. You don't need to model Spike's weight in your system because changing the weight should have no effect. Spike cannot communicate its weight to other components of the system, because it is not *a* thing with mass. No, it is just Spike, the One. Its weight has been abstracted away. >> If not, >> where is Spike? As long as I can construct (not Spike), it is not unique. > But if, *for my problem*, I am interested only in Spike, (not Spike) > makes no sense. It might make no [immediate] use, but it does sense in the context of your abstract model. Some properties of Spike cannot be abstracted away even if they might happen to be constant/uninteresting. So your model is capable to deal with objects of different weight. It would certain generalization power. This can be used in order to verify consistency or ease implementation. Weight is a number with all properties of real values + ones of mass, acceleration etc. But Spike's weight (tm) is not a number. It is another singleton specific to Spike and unrelated to anything else = nothing. > I'm not arguing that there cannot be a class of dogs, > but that if in my problem domain I am interested in the properties of a > single object, I can represent that single object in a computer, and > that the representation of this single object, because it omits all the > details that are not relevant to my problem, is an *abstraction*. That's OK. I don't argue that there shall be multiple instances. However this too might potentially be quite useful in order to allow the compiler to pass Spike by value, to put it in a register or cache, to marshal over the network. Why should I care? In most [not all] cases I need not. Then to me, property/attribute/characteristic = a primitive operation yielding a value of some [other] type. How something without a type can have a primitive operation in a typed language like Ada? >>> How could you have something in the model that is not in what you are >>> modelling? >> >> I can add some properties to make implementation simpler or possible. > Ha! You said "implementation". To me, that's the concrete view. The > abstract view is there to hide implementation details. I meant implementation in a broader sense than "private constructs." Public declarations is an implementation too. Maybe, "realization" or "spelling" would be better. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de