comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Derived private interface
Date: Fri, 8 Jul 2011 14:23:51 -0500
Date: 2011-07-08T14:23:51-05:00	[thread overview]
Message-ID: <iv7lg9$lur$1@munin.nbi.dk> (raw)
In-Reply-To: 4e15b223$0$6541$9b4e6d93@newsspool4.arcor-online.net

"Georg Bauhaus" <rm.dash-bauhaus@futureapps.de> wrote in message 
news:4e15b223$0$6541$9b4e6d93@newsspool4.arcor-online.net...
...
> What instances of Very Bad Things can be removed with the
> help of indicators?

The main one is a routine that did not override when it was expected to. 
This sort of bug cost us many hours of debugging time in Claw, because when 
you trace the logic of the program everything seems correct - just the wrong 
body is being called by dispatching routines and typically you can only 
figure that out by adding tracing to all of the bodies. Ugh!

There are some very subtle visibility-based reasons that a routine will not 
be overriding, and no programmer can be expected to understand those. In 
particular, the "sibling inheritance" problem. The "overriding" indicator 
will at least cause the compiler to complain, and then the programmer can 
spend his time restructuring his entire system rather than pointlessly 
debugging. (This particular problem has no workaround; the package structure 
of the program has to be changed. We tried pretty hard to provide a 
workaround in Ada 2012, but we couldn't do so compatibly or even with just a 
compile-time incompatibility, and a runtime incompatibily is unacceptable. 
Blame interfaces for that - another reason that I hate them. :-) See 
AI05-0125-1 and the associated minutes for the details, if you care.)

                       Randy.

> Some of the Very Bad Things happen mostly when the types
> do not inherit directly from abstract types or interfaces (as
> changing ops will then result in compilation errors).  This,
> I think, can be termed The First Bad Thing.
>
> Bad things also happen, more generally, whenever some programming
> error would be prevented simply by adding indicators of suitable
> sorts that would explain the programmer's intention.  But shouldn't
> this kind of information be covered by "normal" language instead?
>
> Or, for an alternative, one might imagine adding a "smart indicator
> pragma"
>
>  pragma Fuzzy_Homographs (Threshold => 0.9);
>
> This, then, will prevent frequently quoted errors such as
>
>  Initialse(...) vs Initialize(...).
>
> *Without* restricting the compiler's assistance to just tagged
> types!
>
> This, from my point of view, might equip the language with
> better means of addressing the real issue, which seems to
> be one of naming.
>
>
> 





  reply	other threads:[~2011-07-08 19:23 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-05  3:14 Derived private interface Rego, P.
2011-07-05  5:10 ` AdaMagica
2011-07-06  2:24   ` Rego, P.
2011-07-06  4:34   ` AdaMagica
2011-07-06  7:55     ` Georg Bauhaus
2011-07-06  8:30       ` AdaMagica
2011-07-06 12:59         ` Georg Bauhaus
2011-07-06 13:23           ` AdaMagica
2011-07-06 19:06             ` Randy Brukardt
2011-07-06 13:28           ` Simon Wright
2011-07-06 19:45           ` Randy Brukardt
2011-07-06 22:05             ` Georg Bauhaus
2011-07-06 23:56               ` Adam Beneschan
2011-07-07 14:09                 ` Georg Bauhaus
2011-07-07 15:10                   ` Adam Beneschan
2011-07-08  4:29                     ` AdaMagica
2011-07-08 19:08                       ` Randy Brukardt
2011-07-08 19:12                     ` Randy Brukardt
2011-07-07 15:19                   ` Georg Bauhaus
2011-07-07 10:37         ` Stephen Leake
2011-07-07 13:18           ` Georg Bauhaus
2011-07-08 19:23             ` Randy Brukardt [this message]
2011-07-08 21:41               ` Jeffrey Carter
2011-07-09  6:14                 ` Dmitry A. Kazakov
2011-07-22 22:59                 ` Randy Brukardt
2011-07-23  7:30                   ` Jeffrey Carter
2011-07-23  9:29                     ` Maciej Sobczak
2011-07-23 10:07                     ` Dmitry A. Kazakov
2011-07-26 21:04                     ` Randy Brukardt
2011-07-26 23:43                       ` Jeffrey Carter
2011-07-27 23:56                         ` Randy Brukardt
2011-07-28  0:18                           ` Jeffrey Carter
2011-07-28 10:06                         ` Maciej Sobczak
2011-07-28 23:24                           ` Randy Brukardt
2011-07-29  6:45                             ` Simon Wright
2011-07-30  0:04                               ` Randy Brukardt
2011-07-30  6:32                                 ` Simon Wright
2011-08-01  9:30                                   ` Alex R. Mosteo
2011-08-01 10:12                                     ` Dmitry A. Kazakov
2011-08-01 21:56                                       ` Randy Brukardt
2011-08-02 10:03                                         ` Dmitry A. Kazakov
2011-08-02 21:16                                           ` Randy Brukardt
2011-08-03  9:01                                             ` Dmitry A. Kazakov
2011-08-03 20:16                                               ` Randy Brukardt
2011-08-04  8:15                                                 ` Dmitry A. Kazakov
2011-08-09 21:10                             ` Maciej Sobczak
2011-08-09 21:35                               ` Randy Brukardt
2011-08-10  9:11                                 ` Dmitry A. Kazakov
2011-08-10 21:56                                   ` Randy Brukardt
2011-08-11  8:07                                     ` Dmitry A. Kazakov
2011-08-12  4:52                                       ` Randy Brukardt
2011-08-12  8:54                                         ` Dmitry A. Kazakov
2011-08-10 10:07                                 ` Maciej Sobczak
2011-08-10 11:26                                   ` Georg Bauhaus
2011-08-10 22:27                                     ` Randy Brukardt
2011-08-10 22:21                                   ` Randy Brukardt
2011-08-11 13:50                                     ` Maciej Sobczak
2011-08-12  4:43                                       ` Randy Brukardt
2011-08-12  7:00                                         ` Maciej Sobczak
2011-08-12 21:59                                           ` Randy Brukardt
2011-07-06 15:06       ` Adam Beneschan
2011-07-06 16:36       ` Dmitry A. Kazakov
2011-07-06 19:20       ` Randy Brukardt
replies disabled

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