comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Efficient Sequential Access to Arrays
Date: Sat, 28 Jul 2012 09:37:30 +0200
Date: 2012-07-28T09:37:30+02:00	[thread overview]
Message-ID: <1tcosruz32van$.1wcucid7mxne2$.dlg@40tude.net> (raw)
In-Reply-To: b5ee1f33-0c11-49e6-961a-6edf30892dc2@googlegroups.com

On Fri, 27 Jul 2012 22:32:15 -0700 (PDT), Shark8 wrote:

>>>> These assumptions must be upheld per value construction.
>>>
>>> Er, yes? Your value-construction procedure, which might be a
>>> stream-implementation, could use 'Input to ensure the data is valid, no?
>>> Then isn't the 'Read the value-construction?
>>
>>Neither. If you use stream you should do it properly, i.e. as the transport
>>layer. The transport is defined in terms of bytes, characters or other
>>units. So the only read here might be Character'Read.
> 
> Um, I think you completely misread what I was saying. You can use 'Read
> and 'Write to handle your import/export to the requisite format; the
> 'Write shouldn't be an issue (WRT validity; at this point your object
> should be valid and your writing it out should be straightforward),

No, Write is like as Read. It must be validated against the prescribed
format of the stream. Nothing in Ada standard mandates that. E.g. you take
the protocol which tells you that the number to be in the "Motorola
representation", 2 octets, range so and so, that describes some non-Ada
type to which your application type need to be converted, explicitly.

Usually it is bounds which make most work. Because sending an out-of-range
value might in some cases severely damage the device. Though I remember a
case when the communication protocol used IEEE 754 and the problem was with
non-numbers, like NaN. It is also not so uncommon that some integer values
have a reserved meaning. E.g. 16#FFFF# might mean "start calibration
procedure", rather than +10V.

>'Valid might be a perfectly reasonable way to raise an exception; as I
> said before many DBs do not have ranges on their values; if your data (say
> for a simulation) is exported to a DB, then any import needs to check that
> the constraints on the fields [present in the program, not present in the
> DB] have not been broken. (A common cause would be because of some SQL
> update-statement some user ran.) Why would using 'Valid be the wrong way
> to go if those constraints were strictly subranges?

As I said, what you describe is a wrong pattern of implementation
communication with an external party. The proper pattern, I think I
described it already, does not require 'Valid.

BTW, when you talk about constraints, that let me suggest another problem
you have. You seem to use same numeric type for many things. In Ada it is
considered good practice to declare many disparate types rather than
subtypes of Integer. This is "weak" vs. "strong" typing POV.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2012-08-01  2:50 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-15 18:40 Efficient Sequential Access to Arrays Keean Schupke
2012-07-15 19:48 ` Dmitry A. Kazakov
2012-07-15 20:03   ` Keean Schupke
2012-07-15 20:56     ` Keean Schupke
2012-07-16 11:34       ` Jacob Sparre Andersen
2012-07-15 21:05     ` tmoran
2012-07-15 21:08       ` Keean Schupke
2012-07-16  1:19         ` tmoran
2012-07-15 21:44     ` Georg Bauhaus
2012-07-16  7:47     ` Dmitry A. Kazakov
2012-07-16 10:16       ` Keean Schupke
2012-07-16 14:57         ` Dmitry A. Kazakov
2012-07-16 16:39           ` Keean Schupke
2012-07-16 17:02             ` Georg Bauhaus
2012-07-16 18:48             ` Dmitry A. Kazakov
2012-07-16 19:12               ` Keean Schupke
2012-07-17  6:31                 ` Dmitry A. Kazakov
2012-07-17  6:50                   ` Georg Bauhaus
2012-07-17  8:42                     ` Dmitry A. Kazakov
2012-07-17  7:24                   ` Keean Schupke
2012-07-16 19:43             ` John B. Matthews
2012-07-16 20:44               ` Keean Schupke
2012-07-16 22:23             ` tmoran
2012-07-17  6:40               ` Keean Schupke
2012-07-17  9:01                 ` Dmitry A. Kazakov
2012-07-18  8:10                   ` Keean Schupke
2012-07-18 18:11                     ` tmoran
2012-07-19 10:41                       ` Keean Schupke
2012-07-19 11:18                         ` Georg Bauhaus
2012-07-19 19:58                           ` Keean Schupke
2012-07-21  8:24                             ` Keean Schupke
2012-07-21 11:52                               ` Georg Bauhaus
2012-07-21 16:14                                 ` Keean Schupke
2012-07-21 17:09                                   ` Keean Schupke
     [not found]                                   ` <i78m081tccmp078spmsei1l5vnj3k0kbkj@invalid.netcom.com>
2012-07-22 15:50                                     ` Keean Schupke
2012-07-22  5:13                               ` Shark8
2012-07-15 21:35   ` J-P. Rosen
2012-07-15 19:52 ` Shark8
2012-07-15 20:16   ` Keean Schupke
2012-07-15 21:33     ` Georg Bauhaus
2012-07-17 18:16 ` Florian Weimer
2012-07-22 10:01 ` robin.vowels
2012-07-30  6:31   ` Jacob Sparre Andersen
2012-07-30  7:16     ` Keean Schupke
2012-07-30  9:20     ` Georg Bauhaus
2012-07-30 14:04       ` Keean Schupke
2012-07-22 10:09 ` robin.vowels
2012-07-22 16:02   ` Keean Schupke
2012-07-22 16:21 ` Florian Weimer
2012-07-22 16:46   ` Keean Schupke
2012-07-22 18:41     ` Florian Weimer
2012-07-24  8:21       ` Keean Schupke
2012-07-22 17:34   ` Niklas Holsti
2012-07-22 18:21     ` Keean Schupke
2012-07-30 14:18       ` Jacob Sparre Andersen
2012-07-24 16:00     ` robin.vowels
2012-07-25  7:09       ` Niklas Holsti
2012-07-25  9:03         ` Keean Schupke
2012-07-26  0:15           ` Randy Brukardt
2012-07-26  8:38             ` Keean Schupke
2012-07-26 10:10               ` Brian Drummond
2012-07-26 12:32                 ` Keean Schupke
2012-07-26 13:46                   ` Dmitry A. Kazakov
2012-07-26 17:40                     ` Shark8
2012-07-26 18:56                       ` Dmitry A. Kazakov
2012-07-27  5:25                         ` Shark8
2012-07-27  6:28                           ` Dmitry A. Kazakov
2012-07-27  7:01                             ` Vasiliy Molostov
2012-07-27  8:48                               ` Dmitry A. Kazakov
2012-07-27 12:01                                 ` Georg Bauhaus
2012-07-27 16:49                                 ` Vasiliy Molostov
2012-07-27 19:38                                   ` Dmitry A. Kazakov
2012-07-28  5:32                             ` Shark8
2012-07-28  7:37                               ` Dmitry A. Kazakov [this message]
2012-07-28 18:32                                 ` Shark8
     [not found]                     ` <6ov218tnkbqu3vpkuo4t77rd7de0a3aesf@invalid.netcom.com>
2012-07-26 18:49                       ` Dmitry A. Kazakov
     [not found]                         ` <86d31898ne39maimbl24knds7rf38qg7vc@invalid.netcom.com>
2012-07-27  6:45                           ` Dmitry A. Kazakov
2012-07-27  8:21                   ` Keean Schupke
2012-07-27  8:50                     ` Dmitry A. Kazakov
2012-07-27  9:17                       ` Keean Schupke
2013-02-25 21:18                     ` Eryndlia Mavourneen
2012-07-26 13:08               ` Georg Bauhaus
2012-07-26 19:37                 ` stefan-lucks
2012-07-26 19:21               ` stefan-lucks
2012-07-31  3:12               ` Randy Brukardt
2012-07-26  7:11           ` Markus Schöpflin
2012-07-26 14:47         ` Robin Vowels
2012-07-26 15:18           ` Martin
replies disabled

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