From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Writing an Operating System in Ada
Date: Thu, 14 Jan 2010 09:55:41 +0100
Date: 2010-01-14T09:55:41+01:00 [thread overview]
Message-ID: <1c1x49re1atv3$.kxickttntzsn$.dlg@40tude.net> (raw)
In-Reply-To: b4152c6b-2baf-471d-879b-dd96cfee63e7@h9g2000yqa.googlegroups.com
On Wed, 13 Jan 2010 14:50:50 -0800 (PST), Shark8 wrote:
>>> If by MI you mean multiple inheritance I think the Java/Delphi/Ada2005
>>> interfaces handle that pretty well.
>>
>> There shall be no interfaces at all. Ada 95 had everything needed, i.e.
>> abstract types. Introducing interfaces in Ada 2005 was a huge mistake.
>
> Why do you say that?
Because there should be a honest MI and no interfaces.
> I see them as just being a contract for functions/
> procedures that some object must provide, and in that sense there is
> no reason why an actual object-class cannot agree to one or more of
> these 'contracts'. One nice thing Delphi did was to allow an interface
> to be implemented by a field of the class, they called this "interface
> delegation" and looked something like this:
> Type TExample = Class(TObject, IDelegated)
> private
> DelegationField : TSomeDelegatedObject;
> public
> property Delagator : TSomeDelegatedObject read DelegationField
> write DelegationField implements IDelegated;
> end; //Example
You do not need explicitly named contracts in a language like Ada. The
contract of a type is the type itself. Ada has type declarations, public
and private. Everything visible related to the type is the contract of.
Period.
> I suppose you could call it 'subcontracting'.
There should be plain interface inheritance instead.
If you wanted the type S to implement the interface of the type T *without*
inheriting the implementation of T, you should be able to tell just so.
Rather than *in advance* trying to declare all possible interfaces. It is
awful and leads to an explosion of meaningless declarations like:
type T_Interface is interface ... ; -- Just in case we would need it!
procedure Foo (X : T_Interface) is abstract;
type T is new T_Interface with ...; -- No we starting to work
overriding procedure Foo (X : T);
That is a mess and a maintenance disaster.
>>> If the drive is a dictionary, the entries are the particular files/
>>> directories/objects thereon, but it is pretty useless to give someone
>>> a dictionary in a language they can't read.
>>
>> No, it only means that the object called dictionary is supported and other
>> objects called articles are not. The same error was made by the relational
>> data bases, they understand the structure of relations (relational
>> algebra), but do not do the elements of the tuples.
>
> I think we have a failure-to-communicate here. I agree that relational
> algebra [blindly] works on tuples w/o knowing about the contents...
> that is in a sort of abstract fashion.
>
> If we use metaphor/allegory for the data-system [hard-drive, FS, data]
> would you agree that it could be likened to the following?
> The hard-drive is like unto a library containing books.
> The books of that library are like unto the data/files.
> The FS is like unto the indexing system (alphabetically by title,
> alphabetically by author, dewy-decimal, etc) coupled with the
> methodology for storing the 'books' (are they in boxes, on shelves, in
> a pile, etc).
>
> Can we both agree on this?
Sure. Translated to OO: FS is a specialized persistent container library.
>>>> Without MI, MD, tagged tasks, there is no chance to get
>>>> it right.
>>
>>
>>> If MD is multiple dispatch then we're talking about something that
>>> simply explodes combinatorically-speaking: Say we have a multi-
>>> dispatch procedure with two dispatching parameters [Letter and
>>> Number], ok? Now, if we have two versions of each of those in the
>>> classes we get something like:
>>> (A,1)
>>> (A,2)
>>> (B,1)
>>> (B,2)
>>
>> Yes. Let you have printer devices and shapes. This is a classical example
>> of MD. Yes, it explodes. That is the law of nature. There is nothing to do
>> about it, with MD support or without it, you have these combinations, you
>> have to handle them. MD does not solve this, it merely provides an
>> infrastructure helping you to solve this. No more, no less.
>
> Ah, I think I was confusing the problem with that infrastructure
> then...
>
> But that does remind me, I was thinking it would be good to have
> PostScript as the display for the OS, unifying the visual display that
> way it would eliminate the need for printer drivers (assuming they're
> postscript printers) as well as providing a true WYSIWYG for print-
> preview (MS's print preview can be a bit... inaccurate), right?
Right, but in an OO system you would barely need PostScript. I doubt
anybody would like to program in PostScript, so what is left? Poor as a
data carrier, unusable for humans. Doesn't it remind something? XML? (:-))
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2010-01-14 8:55 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-12 1:13 Writing an Operating System in Ada Shark8
2010-01-12 3:30 ` Leslie
2010-01-12 7:06 ` Shark8
2010-01-12 8:36 ` Ludovic Brenta
2010-01-12 15:14 ` jonathan
2010-01-12 16:21 ` Colin Paul Gloster
2010-01-12 16:36 ` Shark8
2010-01-12 17:03 ` Colin Paul Gloster
2010-01-12 19:07 ` Tero Koskinen
2010-01-12 9:41 ` Dmitry A. Kazakov
2010-01-12 17:37 ` Shark8
2010-01-12 19:56 ` Dmitry A. Kazakov
2010-01-12 21:21 ` Shark8
2010-01-12 22:39 ` nobody
2010-01-12 22:50 ` Shark8
2010-01-15 22:45 ` nobody
2010-01-19 21:09 ` Shark8
2010-01-12 21:52 ` Maciej Sobczak
2010-01-12 23:26 ` Shark8
2010-01-13 9:17 ` Dmitry A. Kazakov
2010-01-13 20:20 ` Shark8
2010-01-13 20:55 ` Dmitry A. Kazakov
2010-01-13 22:50 ` Shark8
2010-01-14 8:55 ` Dmitry A. Kazakov [this message]
2010-01-14 18:01 ` Shark8
2010-01-14 19:04 ` tmoran
2010-01-19 19:07 ` Shark8
2010-01-14 19:53 ` Dmitry A. Kazakov
2010-01-14 21:07 ` Shark8
2010-01-14 21:50 ` Dmitry A. Kazakov
2010-01-15 1:24 ` Randy Brukardt
2010-01-15 8:59 ` Dmitry A. Kazakov
2010-01-19 18:58 ` Shark8
2010-01-19 19:43 ` Dmitry A. Kazakov
2010-01-14 9:40 ` Maciej Sobczak
2010-01-14 10:28 ` Dmitry A. Kazakov
2010-01-14 18:57 ` tmoran
2010-01-14 19:19 ` Dmitry A. Kazakov
2010-01-14 20:33 ` Georg Bauhaus
2010-01-14 21:09 ` Dmitry A. Kazakov
2010-01-14 21:50 ` Maciej Sobczak
2010-01-15 8:37 ` Dmitry A. Kazakov
2010-01-15 21:05 ` Maciej Sobczak
2010-01-15 21:48 ` Dmitry A. Kazakov
2010-01-16 21:18 ` Maciej Sobczak
2010-01-16 22:15 ` Dmitry A. Kazakov
2010-01-18 11:23 ` Georg Bauhaus
2010-01-18 13:50 ` Dmitry A. Kazakov
2010-01-18 15:21 ` Georg Bauhaus
2010-01-18 16:41 ` Dmitry A. Kazakov
2010-01-18 17:17 ` Georg Bauhaus
2010-01-18 18:08 ` Dmitry A. Kazakov
2010-01-19 17:41 ` Writing an Operating System in Ada - now off topic? Leslie
2010-01-13 9:09 ` Writing an Operating System in Ada Georg Bauhaus
2010-01-13 9:27 ` Dmitry A. Kazakov
2010-01-13 3:38 ` Leslie
2010-01-13 12:10 ` Martin
2010-01-13 18:55 ` Ad Buijsen
2010-01-14 9:12 ` Jean-Pierre Rosen
2010-01-14 10:45 ` Dmitry A. Kazakov
2010-01-14 11:31 ` Jean-Pierre Rosen
2010-01-14 13:47 ` Dmitry A. Kazakov
2010-01-14 18:57 ` tmoran
2010-01-13 4:49 ` Hibou57 (Yannick Duchêne)
2010-01-13 17:29 ` Lucretia
2010-01-13 20:37 ` Shark8
2010-01-16 0:13 ` Lucretia
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox