From: Stephen Leake <stephen_leake@stephe-leake.org>
Subject: Re: Generic package parameters not externally visible : what's the rational ?
Date: Sat, 31 Oct 2009 08:44:18 -0400
Date: 2009-10-31T08:44:18-04:00 [thread overview]
Message-ID: <uy6mr4tst.fsf@stephe-leake.org> (raw)
In-Reply-To: 1r8etjwa9k46n.3pyj04jn686o$.dlg@40tude.net
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
> On Fri, 30 Oct 2009 06:25:21 -0400, Stephen Leake wrote:
>
>> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
>>
>>> My take is that any generic code is potentially broken. Anyone who uses
>>> generics beyond very trivial cases should know that, and mentally prepare
>>> himself to fix his code over and over again.
>>
>> That is certainly not my experience. I use generics extensively; it's
>> one of the best features of the language.
>
> Do you use generic in other generics?
Yes. See http://www.stephe-leake.org/ada/sal.html, in particular the
sal-gen-alg hierarchy.
You'll have to download and unpack the code; my webserver doesn't have
enough space for the unpacked HTML version (guess it's time to spend
more money on the web server).
> This requires a bit explanation. A set of generics sharing some common
> parameter (like the number type in a generic matrix package) are kind of
> class, i.e. they declare sets of types dependant on the parameter (like
> vector, matrix etc). I call this almost "trivial".
Right; SAL has that in sal-gen_math.
> Non-trivial it becomes when you have several such axes.
Yes. For example, Unbounded_Arrays have Index_Type and Item_Type.
> Here is an example of a mesh of generic packages with 4 axes:
>
> http://www.dmitry-kazakov.de/ada/fuzzy.htm#8
>
> Note that semantically the example is quite simple, almost evident. Its
> implementation and use is horrific. I would never consider it "fixed".
Sorry, I don't see the complexity; what are the four axes?
There are problems that can't be solved in Ada; that doesn't make Ada
useless!
Problems that can be almost solved, and push the boundaries of the
language, and be very frustrating.
> As for being the "best language feature", I hope that you would easily find
> lots of more useful and advanced Ada features.
Defining a metric on Ada features is not easy. My vote for best
feature changes month to month; the best one is the one I most recently
used to solve a hard problem. This month, that's generics.
In previous months, it's been tasking, dispatching, interfaces, and
rep clauses on packed record types.
> What about unconstrained types?
Yes, if the metric is "things that other languages don't have", that's
high on the list.
> User-defined numeric types?
Not so important; I end up using the compiler types anyway, except for
Unsigned_n in packed records. Ada should have defined _all_ of
Unsigned_n, for n = 1 .. 64, in the first place.
Distinct numeric types (derived from compiler defined types) is important.
> Packages (vs. types) as encapsulation modules?
That's just obvious; I wouldn't use a language that doesn't have that :).
Even C++ has that now. Not called packages, but close enough.
> If any of these were removed it would not be Ada. On the contrary,
> Ada without generics sounds quite plausible to me.
True. Ada without overloading is "plausible" as well. But that's just
another metric.
--
-- Stephe
next prev parent reply other threads:[~2009-10-31 12:44 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-26 8:58 Generic package parameters not externally visible : what's the rational ? Hibou57 (Yannick Duchêne)
2009-10-26 11:05 ` Ludovic Brenta
2009-10-26 15:02 ` Robert A Duff
2009-10-27 1:06 ` Hibou57 (Yannick Duchêne)
2009-10-26 14:56 ` Robert A Duff
2009-10-27 3:03 ` Hibou57 (Yannick Duchêne)
2009-10-27 21:08 ` Randy Brukardt
2009-10-27 21:36 ` Jeffrey R. Carter
2009-10-27 22:03 ` Hibou57 (Yannick Duchêne)
2009-10-27 22:19 ` Jeffrey R. Carter
2009-10-28 19:07 ` Randy Brukardt
2009-10-29 12:18 ` Hibou57 (Yannick Duchêne)
2009-10-29 22:56 ` Randy Brukardt
2009-10-30 0:10 ` Hibou57 (Yannick Duchêne)
2009-10-27 22:04 ` Hibou57 (Yannick Duchêne)
2009-10-27 23:37 ` Robert A Duff
2009-10-27 23:41 ` Jeffrey R. Carter
2009-10-27 23:34 ` Robert A Duff
2009-10-28 2:19 ` Hibou57 (Yannick Duchêne)
2009-10-28 19:12 ` Randy Brukardt
2009-10-29 7:34 ` Stephen Leake
2009-10-29 12:21 ` Hibou57 (Yannick Duchêne)
2009-10-29 13:10 ` AdaMagica
2009-10-29 15:11 ` Georg Bauhaus
2009-10-29 19:28 ` Jeffrey R. Carter
2009-10-29 20:27 ` Georg Bauhaus
2009-10-30 10:30 ` Stephen Leake
2009-10-30 17:53 ` Ludovic Brenta
2009-10-31 2:10 ` Hibou57 (Yannick Duchêne)
2009-10-30 5:19 ` Hibou57 (Yannick Duchêne)
2009-10-28 9:09 ` Dmitry A. Kazakov
2009-10-28 19:19 ` Randy Brukardt
2009-10-29 8:36 ` Dmitry A. Kazakov
2009-10-29 23:03 ` Randy Brukardt
2009-10-30 8:51 ` Dmitry A. Kazakov
2009-10-30 10:25 ` Stephen Leake
2009-10-30 19:32 ` Dmitry A. Kazakov
2009-10-31 2:06 ` Hibou57 (Yannick Duchêne)
2009-10-31 9:14 ` Dmitry A. Kazakov
2009-11-03 8:25 ` Hibou57 (Yannick Duchêne)
2009-11-03 9:59 ` Dmitry A. Kazakov
2009-11-05 10:38 ` Hibou57 (Yannick Duchêne)
2009-11-05 11:00 ` Dmitry A. Kazakov
2009-11-05 12:16 ` Hibou57 (Yannick Duchêne)
2009-11-05 14:09 ` Dmitry A. Kazakov
2009-11-06 12:19 ` Hibou57 (Yannick Duchêne)
2009-11-06 13:27 ` Dmitry A. Kazakov
2009-10-31 2:08 ` Hibou57 (Yannick Duchêne)
2009-10-31 12:44 ` Stephen Leake [this message]
2009-11-01 11:37 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox