comp.lang.ada
 help / color / mirror / Atom feed
From: "David Crocker" <dcrocker@imsltd.com>
Subject: Re: 'withing' problem
Date: Mon, 5 Nov 2001 09:48:07 -0000
Date: 2001-11-05T09:48:07+00:00	[thread overview]
Message-ID: <3be65f4c$0$237$ed9e5944@reading.news.pipex.net> (raw)
In-Reply-To: 3BE42900.7590E899@adaworks.com

OK, so if you think cross-dependency reflects bad design when the
implementation language is Ada, can you tell me how you would redesign the
Doctor/Patent/Insurer example in
http://home.bluemarble.net/~jvolan/WithingProblem/FAQ.html ?

Or, take this example from compiler technology. There are various sorts of
statement in a programming language, so there is a heirarchy of Statement
classes. Similarly, there are various sorts of expression, so there is a
heirarchy of Expression classes. Some types of statement can contain
expressions, so the Expression class heirarchy needs to be visible within
the the declaration of these statements classes. Similarly, some of the
Expression classes need to know about statements (e.g. conditional
expressions are turned into conditional statements prior to code
generation). So we immediately have a cross-dependency. I can then throw a
Declaration class heirarchy into the picture and it becomes a 3-way
cross-dependency.

I should explain that my background is OO design, not Ada. Maybe Ada 95
should not really claim to support object-oriented development? (although it
was the first object-BASED language in widespread use).

The context here is that we have a OO-based formal methods tool that could
make the development of safety-critical software much more productive, but
we will either have to compile down to machine code, or find a suitable
back-end compiler we can target. Currently we generate C++ and Java, but Ada
appears to be the natural choice for the safety-critical market.

David Crocker, Escher Technologies Ltd. www.eschertech.com


"Richard Riehle" <richard@adaworks.com> wrote in message
news:3BE42900.7590E899@adaworks.com...
> Simon Wright wrote:
>
> > If you are coming from a UML-based modelling environment,
> > cross-dependency is entirely natural. It would be quite wrong to
> > contort the model to cope with Ada's unfortunate limitations in this
> > respect.
>
> Funny.  I don't regard the current context clause (with) as a problem,
> when one is designing in Ada.    It is most certainly not an "unfortunate
> limitation."    Rather, the grumbling about it most often reflects a lack
> of understanding, or acceptance, of the very strict visibility rules of
> the language.   As to the potential for circular context clauses, these
> need not exist when one correctly designs in Ada.
>
> When I first learned Ada, what seems now many lifetimes ago, I was
> annoyed by the recurring errors I would have due to visibility issues.
> The compiler kept bothering me with nasty messages about this.  In
> time, I came to appreciate that one of Ada's primary strengths is in
> is separation scope and visibility.   Now I realize that those visibility
> rules are essential in reasoning about good design.
>
> More Ada programmers have problems with visibility rules than with
> any other feature of the language.   Some will go for years, designing
> and coding in Ada, and never come to terms with the visibility rules.
> I am reminded of first learning to use a rotating brush floor buffer for
> a part-time job in high-school.  The brushes rotate over the floor in
> their own way.   When I struggled to overpower the rotating brushes,
> I could not succeed.   Once I learned how to balance the brushes
> lightly, and guide them across the floor according to their own
> behavior, I could control the machine with one finger.   Struggling
> with the context clause and visibility rules is much the same.  Learning
> to use those rules, they make the Ada software design
> process easy and fun.  Try to defeat them and the process is
> hard and unpleasant.
>
> Richard Riehle
>
>





  parent reply	other threads:[~2001-11-05  9:48 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-02 10:24 'withing' problem David Crocker
2001-11-02 10:58 ` David C. Hoos, Sr.
2001-11-02 21:32   ` Florian Weimer
2001-11-02 14:49 ` Robert Dewar
2001-11-05  9:49   ` David Crocker
2001-11-02 15:06 ` Wes Groleau
2001-11-02 15:21 ` Ted Dennison
2001-11-02 17:19   ` Ed Falis
2001-11-02 18:17     ` Preben Randhol
2001-11-02 19:15       ` Ed Falis
2001-11-03  2:52       ` DuckE
2001-11-03  9:50         ` Preben Randhol
2001-11-03  8:25   ` Simon Wright
2001-11-03 17:27     ` Richard Riehle
2001-11-04 10:23       ` Simon Wright
2001-11-08 10:58         ` Preben Randhol
2001-11-08 15:24           ` Peter Hend�n
2001-11-10 17:57           ` Simon Wright
2001-11-05  9:48       ` David Crocker [this message]
2001-11-05 20:36         ` Ted Dennison
2001-11-06 15:56           ` David Crocker
2001-11-07 15:06             ` Ted Dennison
2001-11-07 16:49               ` Darren New
2001-11-09 20:28         ` Matthew Heaney
2001-11-10 13:55           ` Preben Randhol
2001-11-12 15:10             ` Matthew Heaney
2001-11-10 18:12           ` Simon Wright
2001-11-12 15:13             ` Matthew Heaney
2001-11-13  7:01               ` Simon Wright
2001-11-14 16:10                 ` Matthew Heaney
2001-11-15 20:21                   ` Simon Wright
2001-11-15 21:07                     ` Matthew Heaney
2001-11-16 14:37                     ` Stephen Leake
2001-11-17 22:29                     ` Richard Riehle
2001-11-18 14:53                       ` Simon Wright
2001-11-19  5:51                         ` Simon Wright
2001-11-19 15:23                         ` Matthew Heaney
2001-11-19 17:19                           ` 'withing' problem [code generation] Mark Johnson
2001-11-19 20:58                             ` Stephen Leake
2001-11-19 21:20                               ` Matthew Heaney
2001-11-21  6:20                                 ` Simon Wright
2001-11-20  0:50                               ` Mark Biggar
2001-11-21  6:21                                 ` Simon Wright
2001-11-20 14:42                               ` Mark Johnson
2001-11-20 16:34                                 ` David Crocker
2001-11-20 18:34                                   ` Richard Pinkall-Pollei
2001-11-20 18:43                                   ` Matthew Heaney
2001-11-20 20:37                                     ` Mark Lundquist
2001-11-22 11:49                                     ` David Crocker
2001-11-20 20:35                                   ` Mark Lundquist
2001-11-22 11:42                                     ` David Crocker
2001-11-19 19:30                           ` 'withing' problem Preben Randhol
2001-11-03  8:26 ` Simon Wright
2001-11-03  8:38 ` Simon Wright
2001-11-05  9:54   ` David Crocker
2001-11-05 18:04     ` tmoran
2001-11-06 15:29       ` David Crocker
2001-11-07  0:38         ` tmoran
2001-11-07 10:11           ` David Crocker
2001-11-07 18:59             ` tmoran
2001-11-08 11:38               ` David Crocker
2001-11-10 18:03                 ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox