From: "Robert I. Eachus" <rieachus@comcast.net>
Subject: Re: GCC 4.0 Ada.Containers Cursor danger.
Date: Tue, 19 Jul 2005 22:37:46 -0400
Date: 2005-07-19T22:37:46-04:00 [thread overview]
Message-ID: <LPadnedpYcFoJUDfRVn-rg@comcast.com> (raw)
In-Reply-To: <%q%Ce.11640$1Y1.7177@fe02.lga>
Mikhail Terekhov wrote:
> That means do it youself. So much for a "generic" library - if you need
> some generic case - do it yourself.
No, what you are asking for is many more standard packages. As Randy
discribed in another part of this thread, the ARG worked to reduce the
number of container variations that were part of the standard. In doing
this there are cases where one variant supports several different
abstractions. If you use the standard containers with any of those
views, the packages are safe and efficient. If you mix abstractions,
you either have to choose a more expensive implementation, or risk
erroneousness.
But it would be silly to provide half-a-dozen versions of some of the
packages, one without Delete, one without cursors, one with a single
cursor, and one with cursors that are always checked for validity, etc.
In practice if you need these abstractions materialized, it is less
than an hour's work. But most programmers don't even do that--they
instantiate the package and document with a comment about how callers
are expected to use the instance.
Yes, violations of those comments should be treated as programming
errors. It is one of the strengths of Ada that 1) you often can choose
between compile time and run-time checking, and 2) you can use tools,
such as SPARK, that pay attention to those comments, and validate them
at compile time.
To summarize this long discussion, you say you know how to program badly
in Ada. I, and a lot of other people say, so do we, but we would rather
not. Years, ago I remember Robert Dewar, when talking about Spitbol I
think, saying that there were two possible philosophies to use when
creating programming languages: Try to make it hard to do it wrong, or
to try to make it easy to do things right. In Ada we aim for both, but
with a third caveat, which is that it should be possible to do anything.
Of course, to the maximum extent possible, we try to make doing
something wrong and writing ugly code synonymous, and the same for
elegant code and doing things right--from a software engineering
perspective. I think this is why you keep not getting it. When someone
says, this is a cleaner way to write that, and doesn't have the flaw you
are worried about, they are really thinking that answers you. But you
would prefer not to be allowed to write erroneous programs in Ada.
Sorry, see above. It is often not easy, but it can be done. (At this
point I should send you off to read G�del's Proof...)
next prev parent reply other threads:[~2005-07-20 2:37 UTC|newest]
Thread overview: 195+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-04 11:01 GCC 4.0 Ada.Containers Cursor danger Dmitriy Anisimkov
2005-07-04 18:56 ` Georg Bauhaus
2005-07-04 19:07 ` Georg Bauhaus
2005-07-05 4:27 ` Dmitriy Anisimkov
2005-07-05 15:01 ` Matthew Heaney
2005-07-06 9:10 ` Maxim Reznik
2005-07-06 10:45 ` Georg Bauhaus
2005-07-06 13:57 ` Maxim Reznik
2005-07-06 14:53 ` Georg Bauhaus
2005-07-06 15:09 ` Matthew Heaney
2005-07-06 16:37 ` Dmitriy Anisimkov
2005-07-06 16:43 ` Matthew Heaney
2005-07-06 22:24 ` Randy Brukardt
2005-07-07 10:23 ` Alex R. Mosteo
2005-07-06 12:41 ` Matthew Heaney
2005-07-06 15:37 ` Matthew Heaney
2005-07-06 21:51 ` Randy Brukardt
2005-07-05 14:51 ` Matthew Heaney
2005-07-05 17:11 ` Dmitriy Anisimkov
2005-07-05 18:02 ` Matthew Heaney
2005-07-05 19:08 ` Dmitriy Anisimkov
2005-07-05 19:26 ` Matthew Heaney
2005-07-05 19:44 ` Dmitriy Anisimkov
2005-07-05 20:06 ` Matthew Heaney
2005-07-06 2:10 ` Dmitriy Anisimkov
2005-07-06 22:44 ` Randy Brukardt
2005-07-07 3:41 ` Dmitriy Anisimkov
2005-07-07 19:18 ` Randy Brukardt
2005-07-08 3:01 ` Dmitriy Anisimkov
2005-07-09 6:17 ` Simon Wright
2005-07-11 2:24 ` Dmitriy Anisimkov
2005-07-11 2:24 ` Dmitriy Anisimkov
2005-07-06 5:52 ` Martin Dowie
2005-07-06 7:02 ` Dmitriy Anisimkov
2005-07-06 8:02 ` Georg Bauhaus
2005-07-06 8:37 ` Dmitriy Anisimkov
2005-07-06 9:06 ` Pascal Obry
2005-07-06 12:14 ` Georg Bauhaus
2005-07-06 7:53 ` Pascal Obry
2005-07-06 8:44 ` Dmitriy Anisimkov
2005-07-06 9:03 ` Pascal Obry
2005-07-06 9:34 ` Dmitriy Anisimkov
2005-07-06 9:42 ` Pascal Obry
2005-07-06 9:45 ` Dmitriy Anisimkov
2005-07-06 10:40 ` Georg Bauhaus
2005-07-06 16:22 ` Dmitriy Anisimkov
2005-07-06 16:42 ` Matthew Heaney
2005-07-06 16:59 ` Dmitriy Anisimkov
2005-07-06 17:12 ` Matthew Heaney
2005-07-06 18:12 ` Georg Bauhaus
2005-07-07 12:29 ` Dmitriy Anisimkov
2005-07-07 12:46 ` Matthew Heaney
2005-07-07 13:01 ` Dmitriy Anisimkov
2005-07-07 13:20 ` Matthew Heaney
2005-07-07 13:54 ` Georg Bauhaus
2005-07-07 17:56 ` Dmitriy Anisimkov
2005-07-07 22:12 ` Georg Bauhaus
2005-07-15 18:03 ` Dmitriy Anisimkov
2005-07-16 1:45 ` Matthew Heaney
2005-07-17 3:55 ` Dmitriy Anisimkov
2005-07-17 4:29 ` Matthew Heaney
2005-07-07 19:29 ` Randy Brukardt
2005-07-08 2:41 ` Dmitriy Anisimkov
2005-07-06 22:56 ` Randy Brukardt
2005-07-06 22:51 ` Randy Brukardt
2005-07-07 0:24 ` Matthew Heaney
2005-07-07 3:20 ` Randy Brukardt
2005-07-06 7:30 ` Dmitry A. Kazakov
2005-07-06 7:50 ` Georg Bauhaus
2005-07-06 8:11 ` Dmitriy Anisimkov
2005-07-06 11:36 ` Dmitry A. Kazakov
2005-07-06 12:14 ` Georg Bauhaus
2005-07-06 23:07 ` Randy Brukardt
2005-07-07 8:01 ` Dmitry A. Kazakov
2005-07-07 10:38 ` Georg Bauhaus
2005-07-07 13:00 ` Dmitry A. Kazakov
2005-07-07 13:41 ` Matthew Heaney
2005-07-07 22:12 ` Georg Bauhaus
2005-07-08 8:48 ` Dmitry A. Kazakov
2005-07-08 10:41 ` Georg Bauhaus
2005-07-08 13:03 ` Dmitry A. Kazakov
2005-07-08 13:31 ` Matthew Heaney
2005-07-10 2:12 ` Randy Brukardt
2005-07-10 8:52 ` Dmitry A. Kazakov
2005-07-11 10:58 ` Georg Bauhaus
2005-07-11 12:18 ` Dmitry A. Kazakov
2005-07-11 13:50 ` Georg Bauhaus
2005-07-11 18:38 ` Randy Brukardt
2005-07-12 8:44 ` Dmitry A. Kazakov
2005-07-12 10:33 ` Georg Bauhaus
2005-07-12 20:38 ` Randy Brukardt
2005-07-08 13:15 ` Matthew Heaney
2005-07-08 14:02 ` Dmitry A. Kazakov
2005-07-08 14:52 ` Matthew Heaney
2005-07-11 14:57 ` MMM
2005-07-11 18:36 ` Georg Bauhaus
2005-07-12 2:11 ` MMM
2005-07-12 21:47 ` Randy Brukardt
2005-07-13 4:31 ` MMM
2005-07-13 1:15 ` Georg Bauhaus
2005-07-13 2:46 ` Matthew Heaney
2005-07-14 4:11 ` Mikhail Terekhov
2005-07-14 12:44 ` Matthew Heaney
2005-07-19 1:38 ` Mikhail Terekhov
2005-07-19 3:21 ` Matthew Heaney
2005-07-14 23:03 ` Georg Bauhaus
2005-07-15 8:36 ` Dmitry A. Kazakov
2005-07-15 10:39 ` Georg Bauhaus
2005-07-15 14:10 ` Dmitry A. Kazakov
2005-07-15 12:10 ` Matthew Heaney
2005-07-19 3:51 ` Mikhail Terekhov
2005-07-19 11:35 ` Matthew Heaney
2005-07-19 3:11 ` Mikhail Terekhov
2005-07-19 12:44 ` Matthew Heaney
2005-07-20 5:20 ` Simon Wright
2005-07-21 2:39 ` Matthew Heaney
2005-07-21 3:23 ` Randy Brukardt
2005-07-19 23:51 ` Randy Brukardt
2005-07-20 15:33 ` Robert A Duff
2005-07-11 14:56 ` MMM
2005-07-11 23:24 ` Matthew Heaney
2005-07-12 3:05 ` MMM
2005-07-12 5:32 ` Simon Wright
2005-07-13 2:41 ` MMM
2005-07-12 11:16 ` Georg Bauhaus
2005-07-16 22:28 ` Robert A Duff
2005-07-12 13:32 ` Marc A. Criley
2005-07-12 14:51 ` MMM
2005-07-12 15:35 ` Matthew Heaney
2005-07-12 18:40 ` MMM
2005-07-12 19:12 ` Matthew Heaney
2005-07-12 19:42 ` MMM
2005-07-12 20:02 ` Georg Bauhaus
2005-07-13 3:52 ` MMM
2005-07-12 20:13 ` Matthew Heaney
2005-07-12 21:38 ` Simon Wright
2005-07-12 17:44 ` Marc A. Criley
2005-07-12 18:51 ` MMM
2005-07-12 19:15 ` Matthew Heaney
2005-07-12 19:47 ` Georg Bauhaus
2005-07-13 2:20 ` Matthew Heaney
2005-07-12 20:00 ` MMM
2005-07-12 20:09 ` Georg Bauhaus
2005-07-12 20:15 ` Matthew Heaney
2005-07-12 21:01 ` Randy Brukardt
2005-07-13 4:16 ` MMM
2005-07-19 23:58 ` Randy Brukardt
2005-07-12 21:59 ` Simon Wright
2005-07-12 20:56 ` Randy Brukardt
2005-07-14 5:01 ` Mikhail Terekhov
2005-07-20 0:10 ` Randy Brukardt
2005-07-07 12:36 ` Matthew Heaney
2005-07-07 12:52 ` Dmitriy Anisimkov
2005-07-07 13:52 ` Georg Bauhaus
2005-07-07 17:49 ` Dmitriy Anisimkov
2005-07-07 18:35 ` Matthew Heaney
2005-07-08 17:52 ` Craig Carey
2005-07-07 17:50 ` Dmitriy Anisimkov
2005-07-07 19:47 ` Randy Brukardt
2005-07-08 2:28 ` Dmitriy Anisimkov
2005-07-09 14:20 ` Matthew Heaney
2005-07-10 1:51 ` Randy Brukardt
2005-07-10 5:46 ` Craig Carey
2005-07-10 6:13 ` Craig Carey
2005-07-11 17:33 ` OT: Greg and Colin? (was Re: GCC 4.0 Ada.Containers Cursor danger.) Marc A. Criley
2005-07-06 22:34 ` GCC 4.0 Ada.Containers Cursor danger Randy Brukardt
2005-07-07 0:22 ` Matthew Heaney
2005-07-07 3:17 ` Randy Brukardt
2005-07-08 5:34 ` Jeffrey Carter
2005-07-10 1:53 ` Randy Brukardt
2005-07-10 19:32 ` Jeffrey Carter
2005-07-07 3:24 ` Randy Brukardt
2005-07-16 23:24 ` Matthew Heaney
2005-07-17 4:04 ` Dmitriy Anisimkov
2005-07-17 5:01 ` Matthew Heaney
2005-07-17 17:13 ` Dmitriy Anisimkov
2005-07-17 17:36 ` Matthew Heaney
2005-07-17 17:49 ` Dmitriy Anisimkov
2005-07-17 18:12 ` Matthew Heaney
2005-07-17 17:40 ` Dmitriy Anisimkov
2005-07-17 17:50 ` Dmitriy Anisimkov
2005-07-17 18:08 ` Matthew Heaney
2005-07-19 4:36 ` Mikhail Terekhov
2005-07-20 1:59 ` Matthew Heaney
2005-07-20 14:00 ` Pascal Obry
2005-07-20 14:34 ` Matthew Heaney
2005-07-20 16:51 ` Pascal Obry
2005-07-20 16:53 ` Pascal Obry
2005-07-21 3:18 ` Randy Brukardt
2005-07-20 2:37 ` Robert I. Eachus [this message]
2005-08-02 16:59 ` Craig Carey
2005-08-02 20:55 ` Simon Wright
2005-07-20 7:20 ` Georg Bauhaus
2005-07-17 9:28 ` Georg Bauhaus
2005-07-17 14:26 ` Matthew Heaney
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox