comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Writing an Operating System in Ada
Date: Fri, 15 Jan 2010 09:59:20 +0100
Date: 2010-01-15T09:59:20+01:00	[thread overview]
Message-ID: <5ea5ofafhgop.10x90gxu3ocv$.dlg@40tude.net> (raw)
In-Reply-To: hiog4q$h3o$1@munin.nbi.dk

On Thu, 14 Jan 2010 19:24:41 -0600, Randy Brukardt wrote:

> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
> news:1fhgwtz4ezt52.zvep41elk4lq.dlg@40tude.net...
>> On Thu, 14 Jan 2010 13:07:08 -0800 (PST), Shark8 wrote:
> ...
>>>> You have to be able to derive from a task, that is what active objects are.
>>>> BTW, you already can do this in Ada 2005. It has task interfaces, but this
>>>> inheritance is limited to have the depth of 1.
>>>
>>> I remember reading that now... but is an inheritance level of 1 good
>>> enough?
>>
>> No, it is not. The bottom level is an interface, a quite useless thing
>> because it does not provide implementation. The next level is a concrete
>> implementation. The train stops there.
> 
> You're confusing inheritance of interfaces with inheritance of 
> implementation. One of the most important parts of Ada is that it tries to 
> strongly separate interfaces and implementation. [I know you know this 
> difference, but are purposely ignoring it.]

I don't ignore it, I point out that interface inheritance requires no
interfaces (nor even abstract types). There is no problem to inherit the
interface of a concrete type.

Concerning separation of interface and implementation, I think that Ada
2005 interfaces in fact deviate from the model existing since Ada 83. In
Ada 83-95 the separation was never based on types. The separation then was
carried by packages. The programmer could choose between moving parts of
the implementation into private parts or else into the body. Incomplete
type declaration was the interface. It was simple, understandable, required
no extra up front work. Compared to this interfaces are complex, verbose
and superfluous. Yet they cannot replace the old model anyway, because
there are things like constants and bodies which are not types, yet have
implementations to separate.

> Ada doesn't allow inheritance of implementation for synchronized objects, 
> for the very good reason that no one knows how to make inheritance rules 
> that doesn't violate the exclusion and ordering rules. We tried for a quite 
> a while to make a version of inheritable protected types, but it always led 
> to deadlocks, race conditions, or loss of exclusion. (Java has this problem 
> in spades.)

Nobody says it will be simple...

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2010-01-15  8:59 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
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 [this message]
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