comp.lang.ada
 help / color / mirror / Atom feed
From: "Robert I. Eachus" <rieachus@comcast.net>
Subject: Re: Other Ada Standards (was Re: SIGada Conference)
Date: Sun, 28 Dec 2003 21:08:59 -0500
Date: 2003-12-28T21:08:59-05:00	[thread overview]
Message-ID: <ouadnZ85QvMhEXKiRVn-sw@comcast.com> (raw)
In-Reply-To: <bsnc2s$ek36c$2@ID-77047.news.uni-berlin.de>

Dmitry A. Kazakov wrote:

> Right. But if they are related? Deeply nested generic child units? Does not
> the language encorage designers to use larger compilation units because
> otherwise users will be "punished" by larger with/use blocks?

This was an occasional problem in Ada 83, in Ada 95 I think the only 
major case left to fix is mutually interdependent types.  And it will be 
fixed.

But as a writer you have to ask yourself, every time you go to with 
something that wasn't in your original design, whether the design was 
wrong, or your implementation is wrong.  I guess I find three about 
equal sized groups of cases:  The original design WAS wrong, the 
implementation chosen is not wrong, but does need more visibility 
(almost always in the body) than was anticipated by the design, and the 
third case, this implementation is wrong, fix it.

If you take that attitude, the number of with clauses is just not a burden.

> I think that we have reached the level of complexity where it becomes a
> heavy burden for a reader to analyze all with's and use's. Tools might
> help, but there is still a problem.

No real argument with that statement, just a warning.  When a project 
does get to that point, you had better be almost finished, or go back 
now and do a redesign.  At MITRE we found that this was one of the 
nicest things about Ada.  When the contractor started complaining about 
slow compiles or needing better tools, it was time to examine the source 
and compare it to the design documents.  Almost always there was a 
particular design problem that needed to be fixed.  Sometimes it was 
"just" a programming problem, but often it reflected too ambitious (and 
unrealistic) requirements or serious hardware problems.

One of my favorite examples involved a lot of kludgeware to merge two 
message streams.  Why merge the message streams?  Well the requirements 
specified a throughput of more messages per minute than one 9600 baud 
connection could handle.  But the actual requirement anticipated that 
many messages over a single channel.  We allowed the contractor to test 
with a 19200 connection, and went back to the government customer to 
figure out if the requirement was real, and we should upgrade the 
communications hardware. (It turned out to be cheaper to upgrade the 
modems than redo the requirements analysis. ;-)

> True, this the same problem, but it is one level beneath. You are talking
> about type interfaces, with/use issue is sort of "package interfaces". With
> type interfaces and abstract types we can hide uninteresting details.
> Probably it is time to go this way for packages.

No, it is the same issue.  Interface inheritance will allow a package to 
import several ADTs and combine them in one new type.  But the package 
that contains the interface instantiation will EXPORT all of the 
operations that are collected by the interface.  So users of the type 
created by the interface instance will only need to with (and possibly 
use) one package, not several.

You can do, and I do, the same thing today with a succession of type 
derivations, each using a generic mix-in.  Interfaces will make this 
easier. The private part of a package containing a series of mix-ins can 
get pretty long, and you often need to do some renames in the package 
body.  If you want to call this multiple inheritance, fine.  But I think 
of it as constructing a type from component ADTs.  Whether there is an 
isa relationship to several types, or just a record type with several 
component ADTs, the program structure is the same:  The unit that 
creates the ADT has withs for the compontents, users of the created ADT 
need only with one unit.

If the average number of withs per package is say two per spec and three 
or four per body, you are doing good.  Four per spec and ten per body is 
acceptable in a final product.  But when it looks like you are getting 
beyond that watch out.  Doing the necessary refactoring will take time, 
but it will reduce the number of bugs to be found once coding is 
complete drastically.

-- 
                                           Robert I. Eachus

"The war on terror is a different kind of war, waged capture by capture, 
cell by cell, and victory by victory. Our security is assured by our 
perseverance and by our sure belief in the success of liberty." -- 
George W. Bush




  reply	other threads:[~2003-12-29  2:08 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <468D78E4EE5C6A4093A4C00F29DF513D04B82B08@VS2.hdi.tvcabo>
2003-12-17  1:01 ` SIGada Conference Stephen Leake
2003-12-17  3:19   ` Robert I. Eachus
2003-12-18  6:55     ` Robert C. Leif
2003-12-18 15:23       ` Other Ada Standards (was Re: SIGada Conference) Robert I. Eachus
2003-12-18 18:27         ` Robert A Duff
2003-12-19  7:38           ` Robert I. Eachus
2003-12-19 23:10             ` Robert A Duff
2003-12-19  8:51           ` Russ
2003-12-19 17:03             ` tmoran
2003-12-20  0:43               ` Russ
2003-12-19 23:18             ` Robert A Duff
2003-12-20  7:05               ` Russ
2003-12-20  9:06                 ` Nick Roberts
2003-12-20 17:43                   ` Robert I. Eachus
2003-12-22  0:07                     ` Russ
     [not found]                       ` <bfcib1-r43.ln1@beastie.ix.netcom.com>
2003-12-22 17:10                         ` Robert I. Eachus
2003-12-22 18:25                           ` Larry Hazel
2003-12-23 16:55                             ` Chad R. Meiners
2003-12-24 13:17                               ` Marin David Condic
2003-12-24 14:57                                 ` Robert A Duff
2003-12-25  3:26                                   ` Marin David Condic
2004-01-03 19:03                                   ` Pascal Obry
2003-12-24 20:16                                 ` Russ
2003-12-24 21:41                                   ` Robert A Duff
2003-12-25  2:51                                     ` Robert I. Eachus
2003-12-25  3:42                                     ` Marin David Condic
2003-12-25  6:35                                       ` Russ
2003-12-25 12:34                                         ` Georg Bauhaus
2003-12-25 15:38                                           ` Marin David Condic
2003-12-26 20:09                                             ` Russ
2003-12-27  3:39                                               ` Georg Bauhaus
2003-12-27  7:40                                                 ` Russ
2003-12-27 11:18                                                   ` Georg Bauhaus
2003-12-28  5:56                                                     ` Russ
2003-12-27 11:24                                                 ` Dmitry A. Kazakov
2003-12-27 12:21                                                   ` Georg Bauhaus
2003-12-28 11:44                                                     ` Dmitry A. Kazakov
2003-12-28 13:59                                                       ` Georg Bauhaus
2003-12-28 19:43                                                         ` Robert A Duff
2003-12-28 20:47                                                           ` Dmitry A. Kazakov
2003-12-28 19:54                                                         ` Dmitry A. Kazakov
2003-12-29  6:07                                                           ` Georg Bauhaus
2003-12-29 11:28                                                             ` Dmitry A. Kazakov
2003-12-29 13:36                                                               ` Chad R. Meiners
2003-12-29  6:25                                                           ` Georg Bauhaus
2003-12-27 18:43                                                   ` Robert A Duff
2003-12-28 11:45                                                     ` Dmitry A. Kazakov
2003-12-28 19:59                                                       ` Robert A Duff
2003-12-30 18:03                                                     ` Peter Richtmyer
2003-12-30 23:02                                                       ` Alexandre E. Kopilovitch
2003-12-27 21:56                                                   ` Russ
2003-12-27 22:52                                                     ` Robert I. Eachus
2003-12-28 11:44                                                     ` Dmitry A. Kazakov
2003-12-28 18:14                                                       ` Robert I. Eachus
2003-12-28 19:55                                                         ` Dmitry A. Kazakov
2003-12-29  2:08                                                           ` Robert I. Eachus [this message]
2003-12-29 11:29                                                             ` Dmitry A. Kazakov
2003-12-29 13:44                                                               ` Chad R. Meiners
2003-12-29 17:07                                                                 ` Robert I. Eachus
2003-12-28 23:17                                                       ` Russ
2003-12-28 23:45                                                         ` Wes Groleau
2003-12-27 14:09                                                 ` Marin David Condic
2003-12-27 19:25                                                   ` Robert I. Eachus
2003-12-28  1:47                                                   ` Russ
2003-12-23 10:49                           ` come from joke (was " Peter Hermann
2003-12-23 12:19                             ` come from joke Samuel Tardieu
2003-12-23 17:00                               ` Arthur Evans Jr
2003-12-23 22:03                               ` Wes Groleau
2003-12-25  0:37                                 ` Stephane Richard
2003-12-27  1:00                                   ` John Woodruff
2003-12-24 18:48                               ` Simon Wright
2003-12-23 12:39                             ` come from joke (was Re: Other Ada Standards (was Re: SIGada Conference) Vinzent 'Gadget' Hoefler
2003-12-23 15:50                             ` Georg Bauhaus
2003-12-23 16:03                               ` Vinzent 'Gadget' Hoefler
2003-12-23 16:12                               ` Peter Hermann
2003-12-22 18:29                       ` Warren W. Gay VE3WWG
2003-12-20 19:44                   ` tmoran
2003-12-22 18:22                   ` Warren W. Gay VE3WWG
2003-12-20  0:39             ` Russ
2003-12-20  1:44               ` unknown
replies disabled

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