comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Quick question regarding limited type return syntax
Date: Sat, 02 Aug 2014 10:11:59 +0300
Date: 2014-08-02T10:11:59+03:00	[thread overview]
Message-ID: <c43h9sFgdq8U1@mid.individual.net> (raw)
In-Reply-To: <D7TCv.160339$HF6.16263@fx30.iad>

On 14-08-01 10:57 , J-P. Rosen wrote:
> Le 01/08/2014 04:12, Randy Brukardt a écrit :
>> It's annoying that we couldn't get this "explicit default-
>> initialization" syntax more widely used. I prefer to ensure that
>> everything is properly initialized, but sometimes the default
>> value is good enough. It would be nice to be able to specify that:
>>
>>       Obj : My_Type := <>;
>> or maybe
>>       Obj : My_Type := (<>);
>>
>> so that I could verify that every object is either initialized
>> or explicitly left default initialized.
>
> One of my clients has a rule that every user-defined type must
> provide an associated constant for the default value (and of
> course, AdaControl can enforce that rule). Then it is enough
> to say that every variable must be initialized.
>
> Seems close enough to what you want...

On 14-08-01 23:53 , Shark8 wrote:
> ...Too bad there's not a Default_Value sort of aspect/attribute.

Do you mean that Default_Value would be an aspect of a type, and would
define the default initialization value of objects of that type?

More elegantly IMO, the language could allow a default initialization
expression to be assigned in the type or subtype declaration:

   type My_Type is <type definition> := <expression>;

The elaboration of the type declaration would evalate the expression
into a value, and then any declaration of an object of this type would
use that value as the initialization expression, unless the object
declaration itself provides an initialization expression.

J-P's client's rule could then be reformulated as a rule that every type
(and subtype) declaration must have a default-initialization expression.

This suggestion seems so trivial that it has probably been made before,
and rejected for some reason. Perhaps using ":=" to "assign a value to a
type" is too strange.

Randy's suggestion for an explicit indication that an object is
default-initialized is an orthogonal isssue.

IMO the risk of using uninitialized variables, and the resulting
non-deterministic bugs, is one of the major remaining holes in the
safety of Ada. On the other hand, explicit initialization of all
variables (buffer arrays in particular) is often far too costly in
real-time applications. The above suggestions of explicit default
initialization expressions would not reduce the cost, of course. At
present, the only remedy that does not impose run-time costs is to use
provers to show that the uninitialized variables (for example,
uninitialized array elements) are never read.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
      .      @       .


  reply	other threads:[~2014-08-02  7:11 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-30 23:51 Quick question regarding limited type return syntax NiGHTS
2014-07-31  0:02 ` Adam Beneschan
2014-07-31  0:56   ` NiGHTS
2014-07-31  0:48 ` Shark8
2014-07-31  1:00   ` NiGHTS
2014-07-31  1:29     ` Adam Beneschan
2014-07-31  1:38       ` NiGHTS
2014-07-31  4:01         ` Shark8
2014-08-01  2:12       ` Randy Brukardt
2014-08-01  3:40         ` Shark8
2014-08-01  7:57         ` J-P. Rosen
2014-08-01 19:23           ` Randy Brukardt
2014-08-01 19:37             ` J-P. Rosen
2014-08-01 20:53             ` Shark8
2014-08-02  7:11               ` Niklas Holsti [this message]
2014-08-02  7:34                 ` Dmitry A. Kazakov
2014-08-02 13:20                   ` Robert A Duff
2014-08-02 13:44                     ` Dmitry A. Kazakov
2014-08-02 14:34                       ` Robert A Duff
2014-08-02 16:56                         ` Dmitry A. Kazakov
2014-08-02 20:35                           ` Niklas Holsti
2014-08-03  7:30                             ` Dmitry A. Kazakov
2014-08-04  9:24                               ` Niklas Holsti
2014-08-04 10:42                                 ` G.B.
2014-08-04 11:39                                   ` Peter Chapin
2014-08-04 17:49                                     ` Niklas Holsti
2014-08-04 11:36                                 ` Peter Chapin
2014-08-04 12:43                                 ` Dmitry A. Kazakov
2014-08-04 16:19                                   ` G.B.
2014-08-04 16:38                                     ` Dmitry A. Kazakov
2014-08-04 16:51                                       ` G.B.
2014-08-04 17:23                                         ` Dmitry A. Kazakov
2014-08-04 19:37                                   ` Niklas Holsti
2014-08-05  8:30                                     ` Dmitry A. Kazakov
2014-08-05 19:24                                       ` Randy Brukardt
2014-08-03 16:35                           ` Robert A Duff
2014-08-02  8:02               ` Jacob Sparre Andersen
2014-08-02 19:20                 ` Shark8
2014-08-03 16:07                   ` Default values (Was: Quick question regarding limited type return syntax) Jacob Sparre Andersen
2014-08-04 21:29                     ` Randy Brukardt
replies disabled

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