From: kevin.cline@gmail.com (Kevin Cline)
Subject: Re: Ada Popularity: Comparison of Ada/Charles with C++ STL (and Perl)
Date: 27 Sep 2004 19:47:28 -0700
Date: 2004-09-27T19:47:28-07:00 [thread overview]
Message-ID: <e749549b.0409271847.55ce70dd@posting.google.com> (raw)
In-Reply-To: 41583b4c$0$74190$39cecf19@news.twtelecom.net
"Matthew Heaney" <mheaney@on2.com> wrote in message news:<41583b4c$0$74190$39cecf19@news.twtelecom.net>...
> "Kevin Cline" <kevin.cline@gmail.com> wrote in message
> news:e749549b.0409270631.2bf81ccf@posting.google.com...
> > Matthew Heaney <matthewjheaney@earthlink.net> wrote in message
> news:<uekkpt07s.fsf@earthlink.net>...
> > > kevin.cline@gmail.com (Kevin Cline) writes:
> > >
> > > Indeed, you cannot do this. In AI-302 (and in Ada.Strings.*), you have
> to say:
> > >
> > > Replace_Element (C, Index => 5, By => 7);
> >
> > I think this was a major error in the language design. As a result it
> > very tedious to write a generic that will work with both predefined
> > and user-defined types.
>
> All you need to do is write the generic in terms of (AI-302) container
> operations, and then use locally declared subprograms to make the array
> (say) work with the generic algorithm. The "tedium" only applies when using
> a generic on an array instead of a container.
>
> For example:
>
> generic
> type Cursor is private;
> with function Next (C : Cursor) return Cursor is <>;
> with procedure Replace_Element (C : Cursor; By : ET) is <>;
> with function Has_Element (C : Cursor) return Boolean is <>;
> procedure Generic_Op (C : Cursor);
>
> To use this with a container type, there's nothing you need to do except
> instantiate the generic algorithm.
>
> To make this work with an array, all you need to do is:
>
> procedure Op (A : in out Array_Type) is
>
> procedure Replace_Element (I : Index_Type; E : ET) is
> begin
> A (I) := E;
> end;
>
> function Has_Element (I : IT) return Boolean is
> begin
> return I in A'Range;
> end;
>
> procedure Algorithm is
> new Generic_Algorithm (Index_Type, Index_Type'Succ);
>
> begin
> Algorithm (A'First);
> end Op;
>
> Note that here the "cursor" is just the discrete array index subtype. The
> T'Succ attribute is used as the generic actual for the Next generic formal.
>
> Your problem is that you're still thinking in C++ terms.
No doubt.
> C++ works by
> making containers look like built-in types. That's different from Ada,
> which (as demonstrated above) makes the built-in type look like a container.
Ok, but shouldn't that code be generic? The code above works for only
one algorithm on one particular array type.
I think that "different from Ada" here is significantly better. Lots
of existing C and C++ code that works on arrays that can be trivially
modified to work on any array-like class, but existing Ada array code
has to be rewritten in every detail to work on a user-defined
container. And the results of that rewrite aren't pretty. For
example, suppose you want to multiply sparse matrices. Instead of the
natural:
P(I,K) := A(I,J) * B(J,K)
you'll end up with something like:
SET_ELEMENT(P, I, K, ELEMENT(A, I, J) * ELEMENT(B, J, K))
next prev parent reply other threads:[~2004-09-28 2:47 UTC|newest]
Thread overview: 229+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-22 0:21 Ada Popularity: Comparison of Ada/Charles with C++ STL (and Perl) Kevin Cline
2004-09-22 2:16 ` Pylinius
2004-09-22 8:50 ` Björn Persson
2004-09-22 13:38 ` Benjamin Ketcham
2004-09-22 14:07 ` Hyman Rosen
2004-09-22 15:16 ` Cesar Rabak
2004-09-23 8:22 ` Kevin Cline
2004-09-23 10:52 ` Anders Wirzenius
2004-09-23 10:54 ` stephane richard
2004-09-23 11:17 ` Jean-Pierre Rosen
2004-09-23 11:47 ` Marius Amado Alves
2004-09-23 13:34 ` Anders Wirzenius
2004-09-23 16:53 ` Warren W. Gay VE3WWG
2004-09-23 18:30 ` Kevin Cline
2004-09-23 19:00 ` Marius Amado Alves
2004-09-24 6:04 ` [OT]Screen ergonomics, was " Anders Wirzenius
2004-09-26 7:22 ` Kevin Cline
2004-09-23 17:19 ` Cesar Rabak
2004-09-23 8:51 ` Kevin Cline
2004-09-23 11:01 ` Georg Bauhaus
2004-09-23 15:59 ` Matthew Heaney
2004-09-23 16:38 ` Kevin Cline
2004-09-24 2:47 ` Matthew Heaney
2004-09-24 13:43 ` Hyman Rosen
2004-09-24 17:47 ` Mark Lorenzen
2004-09-24 18:16 ` Matthew Heaney
2004-09-29 19:29 ` Mark Lorenzen
2004-09-29 22:44 ` Matthew Heaney
2004-09-25 14:09 ` Martin Krischik
2004-09-26 7:08 ` Kevin Cline
2004-09-26 15:13 ` Matthew Heaney
2004-09-23 19:10 ` jayessay
2004-09-23 21:13 ` Adam Ruth
2004-09-27 2:12 ` Keith H Duggar
2004-09-27 14:21 ` Adam Ruth
2004-09-27 14:51 ` Chris Humphries
2004-09-27 17:10 ` Adam Ruth
2004-09-27 20:16 ` Keith H Duggar
2004-09-27 21:15 ` Chris Humphries
2004-09-28 4:46 ` Keith H Duggar
2004-09-27 20:34 ` Kevin Cline
2004-09-27 21:15 ` Adam Ruth
2004-09-23 23:05 ` Brian May
2004-09-24 3:06 ` Matthew Heaney
2004-09-24 3:52 ` Randy Brukardt
2004-09-24 5:15 ` Matthew Heaney
2004-09-24 19:12 ` Kevin Cline
2004-09-24 20:54 ` Randy Brukardt
2004-09-24 21:23 ` Matthew Heaney
2004-09-27 13:22 ` Chris Humphries
2004-09-27 13:45 ` Chris Humphries
2004-09-27 21:31 ` Kevin Cline
2004-09-27 23:51 ` Brian May
2004-09-28 12:21 ` Chris Humphries
2004-09-26 17:10 ` jayessay
2004-09-26 20:00 ` Georg Bauhaus
2004-09-27 14:45 ` jayessay
2004-09-24 0:19 ` Stephen Leake
2004-09-24 14:54 ` Cesar Rabak
2004-09-22 15:27 ` James Alan Farrell
2004-09-22 21:24 ` Simon Wright
2004-09-23 0:03 ` Brian May
2004-09-23 9:17 ` Kevin Cline
2004-09-23 0:44 ` Jeffrey Carter
2004-09-23 11:08 ` Georg Bauhaus
2004-09-23 8:15 ` Martin Krischik
2004-09-23 16:20 ` Matthew Heaney
2004-09-23 19:23 ` Simon Wright
2004-09-24 7:19 ` Martin Krischik
2004-09-24 16:31 ` Matthew Heaney
2004-09-24 19:24 ` Kevin Cline
2004-09-25 14:04 ` Martin Krischik
2004-09-26 10:36 ` Robert Kawulak
2004-09-26 15:35 ` Martin Krischik
2004-09-28 17:46 ` Robert Kawulak
2004-09-29 7:49 ` Martin Krischik
2004-09-29 12:01 ` Xenos
2004-09-29 18:16 ` Robert Kawulak
2004-09-30 15:55 ` Martin Krischik
2004-09-27 22:22 ` Kevin Cline
2004-09-28 7:51 ` Martin Krischik
2004-09-29 3:04 ` Kevin Cline
2004-09-29 6:03 ` Dale Stanbrough
2004-09-29 13:31 ` Georg Bauhaus
2004-09-29 13:46 ` Matthew Heaney
2004-09-30 3:42 ` Kevin Cline
2004-09-30 7:54 ` Dale Stanbrough
2004-09-30 16:50 ` Matthew Heaney
2004-10-01 0:04 ` Kevin Cline
2004-10-01 12:25 ` Georg Bauhaus
2004-10-02 7:35 ` K
2004-10-02 10:00 ` Brian May
2004-10-02 20:39 ` Kevin Cline
2004-10-03 2:17 ` Brian May
2004-10-02 13:40 ` Matthew Heaney
2004-10-02 23:33 ` Randy Brukardt
2004-10-03 12:47 ` Stephen Leake
2004-09-30 19:01 ` Björn Persson
2004-09-30 23:54 ` Kevin Cline
2004-10-01 16:11 ` Björn Persson
2004-10-02 6:48 ` K
2004-10-02 10:41 ` Björn Persson
2004-10-02 13:32 ` Matthew Heaney
2004-10-04 9:02 ` Ole-Hjalmar Kristensen
2004-09-23 9:00 ` Kevin Cline
2004-09-23 11:27 ` Ole-Hjalmar Kristensen
2004-09-23 19:11 ` Kevin Cline
2004-09-23 21:01 ` Alexander E. Kopilovich
2004-09-26 6:53 ` Kevin Cline
2004-09-26 15:29 ` Alexander E. Kopilovich
2004-09-23 21:54 ` Eric Jacoboni
2004-09-24 9:44 ` Ole-Hjalmar Kristensen
2004-09-24 9:50 ` Georg Bauhaus
2004-09-24 13:47 ` Matthew Heaney
2004-09-24 14:14 ` Dmitry A. Kazakov
2004-09-25 14:17 ` Martin Krischik
2004-09-27 8:12 ` Dmitry A. Kazakov
2004-09-27 12:59 ` Georg Bauhaus
2004-09-27 13:53 ` Dmitry A. Kazakov
2004-09-26 7:17 ` Kevin Cline
2004-09-27 8:19 ` Dmitry A. Kazakov
2004-09-27 13:03 ` Georg Bauhaus
2004-09-27 14:00 ` Dmitry A. Kazakov
2004-09-24 16:28 ` Kevin Cline
2004-09-24 17:45 ` Georg Bauhaus
2004-09-24 20:14 ` Matthew Heaney
2004-09-24 20:10 ` Frank J. Lhota
2004-09-27 8:29 ` Dmitry A. Kazakov
2004-09-26 7:13 ` Kevin Cline
2004-09-26 15:15 ` Matthew Heaney
2004-09-27 14:31 ` Kevin Cline
2004-09-27 15:05 ` Dmitry A. Kazakov
2004-09-28 4:22 ` Kevin Cline
2004-09-28 8:20 ` Dmitry A. Kazakov
2004-09-28 23:26 ` Robert Kawulak
2004-09-29 12:19 ` Dmitry A. Kazakov
2004-09-30 18:52 ` Robert Kawulak
2004-10-01 7:55 ` Dmitry A. Kazakov
2004-10-03 19:35 ` Robert Kawulak
2004-10-04 10:24 ` Dmitry A. Kazakov
2004-10-06 17:28 ` Robert Kawulak
2004-10-07 8:24 ` Dmitry A. Kazakov
2004-10-10 21:09 ` Robert Kawulak
2004-10-11 8:08 ` Dmitry A. Kazakov
2004-10-15 9:34 ` Robert Kawulak
2004-10-15 16:58 ` Martin Krischik
2004-09-29 15:44 ` Matthew Heaney
2004-09-30 18:27 ` Robert Kawulak
2004-09-28 17:21 ` Robert Kawulak
2004-09-29 1:38 ` Georg Bauhaus
2004-09-29 18:08 ` Robert Kawulak
2004-09-30 18:30 ` Georg Bauhaus
2004-09-29 8:08 ` Dmitry A. Kazakov
2004-09-29 18:11 ` Robert Kawulak
2004-09-30 8:57 ` Dmitry A. Kazakov
[not found] ` <cji06f$17a$2@atlantis.news.tpi.pl>
2004-10-01 8:58 ` Dmitry A. Kazakov
2004-10-03 19:53 ` Robert Kawulak
2004-10-04 10:15 ` Dmitry A. Kazakov
2004-10-04 12:16 ` Matthew Heaney
2004-10-04 13:21 ` Dmitry A. Kazakov
2004-10-06 17:20 ` Robert Kawulak
2004-10-07 10:08 ` Dmitry A. Kazakov
2004-10-10 22:21 ` Robert Kawulak
2004-10-11 8:46 ` Dmitry A. Kazakov
2004-10-15 9:25 ` Robert Kawulak
2004-10-15 11:56 ` Dmitry A. Kazakov
2004-10-20 20:06 ` Robert Kawulak
2004-10-21 2:51 ` Kevin Cline
2004-10-21 8:39 ` Dmitry A. Kazakov
2004-10-27 21:41 ` Robert Kawulak
2004-10-01 13:02 ` Robert Kawulak
2004-10-28 10:26 ` Larry Kilgallen
2004-09-27 16:21 ` Matthew Heaney
2004-09-28 2:47 ` Kevin Cline [this message]
2004-09-28 4:03 ` Brian May
2004-09-28 4:46 ` Matthew Heaney
2004-09-29 3:14 ` Kevin Cline
2004-09-29 3:50 ` Matthew Heaney
2004-09-29 3:52 ` Matthew Heaney
2004-09-29 13:44 ` Matthew Heaney
2004-09-26 6:32 ` Kevin Cline
2004-09-26 15:05 ` Matthew Heaney
2004-09-27 14:35 ` Kevin Cline
2004-09-23 19:30 ` jayessay
2004-09-23 19:42 ` Alexander E. Kopilovich
2004-09-22 21:05 ` Georg Bauhaus
2004-09-23 9:20 ` Kevin Cline
2004-09-23 16:58 ` Warren W. Gay VE3WWG
2004-09-23 6:24 ` Matthew Heaney
2004-09-23 11:23 ` Jeff C r e e.m
2004-09-23 11:35 ` Georg Bauhaus
2004-09-23 17:05 ` Pascal Obry
2004-09-23 17:07 ` Pascal Obry
2004-09-23 18:30 ` Matthew Heaney
2004-09-23 19:31 ` Simon Wright
2004-09-24 0:09 ` Stephen Leake
2004-09-25 10:41 ` Simon Wright
2004-09-23 18:24 ` Kevin Cline
2004-09-23 17:12 ` Dan Andreatta
2004-09-23 18:10 ` Pascal Obry
2004-09-23 19:21 ` Eric Jacoboni
2004-09-23 19:31 ` Ed Falis
2004-09-23 19:37 ` Eric Jacoboni
2004-09-24 20:09 ` Kevin Cline
2004-09-25 0:18 ` Eric Jacoboni
2004-09-26 6:37 ` Kevin Cline
2004-09-26 14:57 ` Matthew Heaney
2004-09-23 19:24 ` Eric Jacoboni
2004-09-23 21:30 ` Eric Jacoboni
2004-09-26 11:44 ` Jacob Sparre Andersen
2004-09-26 17:02 ` jayessay
2004-09-24 8:26 ` Ole-Hjalmar Kristensen
2004-09-23 22:08 ` Anders Gidenstam
2004-09-24 8:10 ` Ole-Hjalmar Kristensen
2004-09-24 17:43 ` Dan Andreatta
2004-09-24 17:40 ` Dan Andreatta
2004-09-24 18:50 ` Pascal Obry
2004-09-23 22:34 ` Randy Brukardt
2004-09-23 23:11 ` Dale Stanbrough
2004-09-24 1:57 ` Matthew Heaney
2004-09-24 6:32 ` Dale Stanbrough
2004-09-24 21:01 ` Randy Brukardt
2004-09-24 0:43 ` Jeffrey Carter
2004-09-24 1:51 ` Matthew Heaney
2004-09-24 20:21 ` Kevin Cline
2004-09-26 11:09 ` Jacob Sparre Andersen
2004-09-27 13:49 ` Björn Persson
2004-10-12 5:21 ` Ada Popularity: Comparison of languages Brian May
2004-10-12 11:43 ` Peter Hermann
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox