comp.lang.ada
 help / color / mirror / Atom feed
From: Optikos <optikos@verizon.net>
Subject: Re: Intervention needed?
Date: Wed, 20 Mar 2019 00:59:46 -0700 (PDT)
Date: 2019-03-20T00:59:46-07:00	[thread overview]
Message-ID: <74339f3f-9591-45a3-8632-8834b4b466ab@googlegroups.com> (raw)
In-Reply-To: <q6rt39$p0u$1@franka.jacob-sparre.dk>

On Tuesday, March 19, 2019 at 7:13:47 PM UTC-4, Randy Brukardt wrote:
> "Optikos" wrote in message 
> news:de2f5462-fa10-4fdf-97a6-99989e40c697@googlegroups.com...
> On Tuesday, March 19, 2019 at 6:13:20 PM UTC-4, Randy Brukardt wrote:
> >> Baloney. The cursor object still exists, and someone can still try to use
> >> it. Yes, you'll get an ...exception... rather than erroneous execution
> >
> >No, you have it all wrong ...there....  Not raise an exception, but rather
> >gracefully take the end-of-walk branch of code, just as in normal 
> >operations.
> 
> Walking is only a small portion of the usage of cursors, and IMHO it is the 
> least important one (since everyone other than container developers ought to 
> be using iterators to walk their containers).
> 
> A cursor is a handle accessing an element of a larger container, nothing 
> more or less than that. The primary usage is to connect data structures made 
> up of multiple containers. For instance, consider a compiler symboltable. 
> There is a tree structure that represents each of the declarations and their 
> scopes, and a map structure that represents a mapping of names to nodes of 
> the treee. The contents of that map is going to be tree cursors, each 
> representing a declaration with a particular name.
> 
> In such a structure, it would be common to assume that the cursors are valid 
> (just like you would assume that pointers are non-null in such a case --  
> that's precisely what Janus/Ada code does, for instance). And dereferencing 
> a cursor that points at a deleted node has to raise some exception (just as 
> it would when using a pointer).
> 
> The value of cursors is that they can be implemented by a range of 
> abstractions with a range of checking, from array indicies (as in the 
> bounded containers and the vector) to pointers with a variety of schemes 
> from no dangling checking to the bulletproof controlled cursor scheme.

Interesting (ab)use case for cursors:  (ab)use cursors as an obfuscated long-lived address/pointer/access instead of for transiently walking  the contents of containers.  (The walk might be of only one or few results of a transient query, but still a walk of the transient results of the search.)  What you describe as (a[n ab]use case for) cursors is in reality a pointer in the end, despite any slight-of-hand to change what noun-phrase is utilized to name what in the end is quite clearly still a pointer(-in-purpose-&-mission).  A rose by any other name is just as pungent.

To put it SQL terms to reveal how jarring the (ab)use-case of cursors is, should a cursor be able to be stored as a field or record in a table?  The SQL answer is:  of course not, cursors are transient artifacts of dynamic queries, not able to be ossified in static storage.

My words are not a harsh critique or condemnation of Ada or of anyone's programming style; you are playing the cards that you are dealt.  It is food for my contemplation of this interim era of programming that lacks BetterAda or BetterRust as available programming languages.  (I'd say BetterC++, but that would be like saying BetterAbjectPoverty, where adding any richness makes poverty or C++ not poverty or C++ anymore.)  Today's Ada is closer to BetterAda than any other language is.


  parent reply	other threads:[~2019-03-20  7:59 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-08 16:43 Intervention needed? Olivier Henley
2019-03-08 16:58 ` Dmitry A. Kazakov
2019-03-08 17:31 ` gautier_niouzes
2019-03-11 14:31   ` antispam
2019-03-11 15:07     ` gautier_niouzes
2019-03-11 17:19     ` Dmitry A. Kazakov
2019-03-11 15:34 ` Lucretia
2019-03-11 17:30   ` Simon Wright
2019-03-11 17:42     ` Dmitry A. Kazakov
2019-03-11 18:14       ` AdaMagica
2019-03-11 19:52   ` Olivier Henley
2019-03-11 20:04     ` Lucretia
2019-03-11 22:08   ` Jeffrey R. Carter
2019-03-12  2:04     ` Lucretia
2019-03-12 13:17       ` Olivier Henley
2019-03-12 16:32       ` Jeffrey R. Carter
2019-03-12 16:56         ` Lucretia
2019-03-12 17:20           ` Lucretia
2019-03-12 18:14         ` Olivier Henley
2019-03-12 19:21           ` Lucretia
2019-03-12 21:53             ` Randy Brukardt
2019-03-13 10:50               ` Jere
2019-03-17 12:52               ` Optikos
2019-03-17 16:37                 ` Luke A. Guest
2019-03-17 16:48                 ` Paul Rubin
2019-03-20  0:49                   ` Optikos
2019-03-20  1:04                     ` Paul Rubin
2019-03-20  1:19                       ` Optikos
2019-03-18 23:36                 ` Randy Brukardt
2019-03-19  2:18                   ` Optikos
2019-03-19  8:44                     ` Dmitry A. Kazakov
2019-03-19  9:53                       ` Optikos
2019-03-19 22:13                         ` Randy Brukardt
2019-03-19 22:26                           ` Paul Rubin
2019-03-20  1:08                             ` Jere
2019-03-22  2:26                               ` Randy Brukardt
2019-03-23 15:56                                 ` Jeffrey R. Carter
2019-03-23 21:38                                   ` Paul Rubin
2019-03-19 22:36                           ` Optikos
2019-03-19 23:13                             ` Randy Brukardt
2019-03-20  1:28                               ` Jere
2019-03-20  8:42                                 ` Dmitry A. Kazakov
2019-03-22  2:00                                 ` Randy Brukardt
2019-03-22 11:10                                   ` Jere
2019-03-23  8:03                                     ` Randy Brukardt
2019-03-23 21:32                                       ` Jere
2019-03-20  7:59                               ` Optikos [this message]
2019-03-22  2:16                                 ` Randy Brukardt
2019-03-22  8:38                                   ` Optikos
2019-03-22 10:54                                     ` Jere
2019-03-23  7:53                                       ` Randy Brukardt
2019-03-23 13:59                                         ` Jere
2019-03-23 21:19                                           ` Jere
2019-03-23 21:29                                             ` Paul Rubin
2019-03-26  8:09                                           ` Optikos
2019-03-20  1:20                           ` Jere
2019-03-22  2:30                             ` Randy Brukardt
2019-03-22  9:08                               ` Dmitry A. Kazakov
2019-03-22 22:23                                 ` Optikos
2019-03-27 19:20                                   ` G. B.
2019-03-27 21:02                                     ` Paul Rubin
2019-03-28  7:01                                       ` Maciej Sobczak
2019-03-28  7:17                                         ` Paul Rubin
2019-03-28  8:39                                           ` Simon Wright
2019-03-30  4:31                                             ` Paul Rubin
2019-03-30 22:14                                           ` Robert A Duff
2019-03-30 22:55                                             ` Paul Rubin
2019-03-28  9:06                                         ` Dmitry A. Kazakov
2019-03-28 20:48                                           ` G. B.
2019-03-29  5:13                                             ` Bojan Bozovic
2019-03-29  8:13                                               ` Dmitry A. Kazakov
2019-03-29  6:57                                           ` Maciej Sobczak
2019-03-29  7:13                                             ` Paul Rubin
2019-03-29  8:39                                             ` Dmitry A. Kazakov
2019-04-01 15:13                                               ` Optikos
2019-04-01 16:51                                                 ` Dmitry A. Kazakov
2019-04-01 21:42                                                   ` Randy Brukardt
2019-04-02  8:30                                                     ` Dmitry A. Kazakov
2019-04-02 15:53                                                       ` Anh Vo
2019-03-19 22:04                       ` Randy Brukardt
2019-03-19 22:22                         ` Paul Rubin
2019-03-19 23:01                           ` Randy Brukardt
2019-03-19  9:37                     ` Optikos
2019-03-19 22:21                       ` Randy Brukardt
2019-03-29 17:56                   ` Florian Weimer
2019-03-29 22:17                     ` Randy Brukardt
2019-03-29 22:35                       ` Florian Weimer
2019-04-01 21:17                         ` Randy Brukardt
2019-03-29 17:41               ` Florian Weimer
2019-03-29 22:16                 ` Randy Brukardt
2019-03-29 22:43                   ` Florian Weimer
2019-04-01 21:29                     ` Randy Brukardt
2019-04-01 22:14                       ` Simon Wright
2019-04-02 21:55                         ` Randy Brukardt
2019-04-04 15:07                           ` Simon Wright
2019-03-12 21:41         ` Randy Brukardt
2019-03-13  9:10     ` Maciej Sobczak
2019-03-13 11:08       ` Jere
2019-03-13 11:11         ` Jere
2019-03-13 11:59         ` Jere
2019-03-13 13:44       ` Olivier Henley
2019-03-13 15:56         ` Simon Wright
2019-03-13 16:25           ` Olivier Henley
2019-03-14  0:40             ` Simon Wright
2019-03-13 16:27           ` Olivier Henley
2019-03-14 22:41         ` Randy Brukardt
2019-03-16 21:30           ` Olivier Henley
2019-03-29 17:38     ` Florian Weimer
2019-03-13 13:23 ` Olivier Henley
2019-03-22 11:10 ` Lucretia
2019-03-22 14:09   ` J-P. Rosen
2019-03-22 16:41   ` Jeffrey R. Carter
2019-03-22 17:29     ` Paul Rubin
2019-03-22 22:36       ` Optikos
2019-04-01  7:28 ` gautier_niouzes
  -- strict thread matches above, loose matches on Subject: below --
2019-03-25 19:14 Randy Brukardt
2019-03-25 20:44 ` Dmitry A. Kazakov
2019-03-28  0:48 ` Jere
2019-04-02 22:07 Randy Brukardt
2019-04-03  7:29 ` Dmitry A. Kazakov
2019-04-03 14:31   ` Optikos
2019-04-03 14:54     ` Dmitry A. Kazakov
2019-04-03 15:29       ` Optikos
2019-04-03 16:16       ` Simon Wright
2019-04-03 17:15         ` Dmitry A. Kazakov
2019-04-03 21:12           ` Simon Wright
2019-04-04  7:09             ` Dmitry A. Kazakov
2019-04-04  5:44           ` Maciej Sobczak
2019-04-04  7:17             ` Dmitry A. Kazakov
2019-04-04  7:22             ` Paul Rubin
2019-04-04  8:37               ` Niklas Holsti
2019-04-05  0:13                 ` Randy Brukardt
2019-04-05  5:45                 ` Maciej Sobczak
2019-04-05 15:17                   ` Optikos
2019-04-06  1:38                     ` Jere
2019-04-06  4:25                       ` alby.gamper
2019-04-06  6:49                         ` Jere
2019-04-06  8:24                           ` alby.gamper
2019-04-04 12:28             ` Simon Wright
2019-04-04 16:17           ` Optikos
2019-04-03 15:07 ` Lucretia
2019-04-03 16:15   ` Simon Wright
2019-04-03 17:23 ` Niklas Holsti
2019-04-03 17:48   ` Bill Findlay
2019-04-03 21:01   ` Simon Wright
2019-04-03 18:58 ` Dennis Lee Bieber
replies disabled

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