comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Intervention needed?
Date: Tue, 19 Mar 2019 18:13:45 -0500
Date: 2019-03-19T18:13:45-05:00	[thread overview]
Message-ID: <q6rt39$p0u$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: de2f5462-fa10-4fdf-97a6-99989e40c697@googlegroups.com

"Optikos" <optikos@verizon.net> 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.

In any case, the implementation of a cursor is irrelevant, since the Rust 
scheme doesn't allow making copies of pointers in the first place. Since you 
can't create a cursor with a pointer implementation, it becomes irrelevant 
as to how it is treated at end-of-life.

Sadly, what I see here is someone who's so bought into Rust hype that they 
fail to consider the real trade-offs implicit in such a technology. There's 
no reason to bring the basic Rust scheme into Ada, since there is almost no 
reason in Ada to create such pointers in the first place (see my reply to 
Paul). Where everyone needs help is for complex data structures, and Rust 
(as I understand it, anyway) provides little help there. Tucker at least is 
trying to help with the issues associated with those sorts of structures, 
but it remains to be seen whether the proposal can get baked enough to get 
it into Ada 2020.

                            Randy.



  reply	other threads:[~2019-03-19 23:13 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 [this message]
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
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