comp.lang.ada
 help / color / mirror / Atom feed
From: Shark8 <onewingedshark@gmail.com>
Subject: Re: Introductory Ada Programming Book
Date: Wed, 4 Jan 2017 19:04:20 -0800 (PST)
Date: 2017-01-04T19:04:20-08:00	[thread overview]
Message-ID: <41be5cb7-dc93-4a4c-a92d-83b31949fd15@googlegroups.com> (raw)
In-Reply-To: <o4jqgn$er0$1@franka.jacob-sparre.dk>

On Wednesday, January 4, 2017 at 2:47:05 PM UTC-7, Randy Brukardt wrote:
> "Shark8" wrote in message 
>
> On Wednesday, January 4, 2017 at 6:45:29 AM UTC-7, raph....@gmail.com wrote:
> > Le mercredi 4 janvier 2017 13:49:18 UTC+1, Dmitry A. Kazakov a écrit :
> >> >
> >> > declare
> >> >     I : Integer := 1; -- OK
> >> >     J : Integer; -- Error: not initialized
> >> >     K : Integer := <>; -- OK: uninitialized, I know what I am doing
> >> >
> >>
> >> Or do it Swift's way and use flow analysis to make use of an 
> >> uninitialized variable
> >> a compile time error. Meh. I guess it's complicated enough as it is to 
> >> implement
> >> an Ada compiler :)
> >
> >Well, there are certain times where you *want*/*need* non-initialized 
> >variables;
> > it's usually at [operating] system-level, but it does exist. (A good 
> > example would
> > me memory-mapped I/O ports, where your 'initialization' would 
> > automatically
> > send something down the I/O port when you might need to send nothing.)
> 
> Right. It also might happen if the initialization is very complex and 
> interrelated with initializing other variables. Forcing an initialization 
> just to make the compiler happy would be confusing and potentially expensive 
> (if the item is large).
> 
> I agree with Dmitry. Indeed, I tried hard in Ada 2005 to get (<>) to be an 
> aggregate usable to default initialize for any type, with the intent to 
> combine that with a restriction to essentially allow projects to change Ada 
> to the rule Dmitry suggested. Unfortunately, various technical issues with 
> private types made that much harder than originally thought, and the idea 
> was dropped late in the Ada 2005 work.
> 
> The problem with requiring flow analysis in a language rule is that it 
> requires lengthy specifications of exactly what flow analysis is required 
> for this check, assuming that portability between implementations is 
> important (and that surely is for Ada). Every compiler does some flow 
> analysis, but each it likely to do it differently, in different compiler 
> phases, and having program legality be implementation-defined in that way is 
> a guaranteed way to have code that cannot be moved to a different 
> implementation. (Exception contracts have a similar problem.)
> 
>                                          Randy.

Thank you for the explanation/info -- it's really good.
(I hope we *can* get exception contracts.)


  reply	other threads:[~2017-01-05  3:04 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-31 13:18 Introductory Ada Programming Book Andrew Shvets
2016-12-31 14:26 ` Lucretia
2016-12-31 15:10   ` Dmitry A. Kazakov
2016-12-31 17:14     ` Andrew Shvets
2016-12-31 14:28 ` Lucretia
2016-12-31 14:34 ` Lucretia
2016-12-31 17:22   ` Andrew Shvets
2016-12-31 17:59 ` Gour
2017-01-02 15:56   ` Andrew Shvets
2017-01-02 16:32     ` Gour
2017-01-03 15:31 ` Patrick Noffke
2017-01-03 22:18   ` Andrew Shvets
2017-01-04  1:14 ` Paul Rubin
2017-01-04  3:07   ` Andrew Shvets
2017-01-04  6:46     ` J-P. Rosen
2017-01-04  9:25       ` raph.amiard
2017-01-04 12:40         ` J-P. Rosen
2017-01-04 12:49           ` Dmitry A. Kazakov
2017-01-04 13:45             ` raph.amiard
2017-01-04 14:14               ` Dmitry A. Kazakov
2017-01-04 15:15                 ` Simon Wright
2017-01-10 10:02                 ` raph.amiard
2017-01-04 15:18               ` Shark8
2017-01-04 21:47                 ` Randy Brukardt
2017-01-05  3:04                   ` Shark8 [this message]
2017-01-05  7:51                     ` G.B.
2017-01-04 13:44           ` raph.amiard
2017-01-04 22:08             ` Jeffrey R. Carter
2017-01-04 22:39             ` Niklas Holsti
2017-01-05  0:38               ` G.B.
2017-01-05 23:52               ` Randy Brukardt
2017-01-05  6:36             ` J-P. Rosen
2017-01-05  8:38               ` Simon Wright
2017-01-10 10:13               ` raph.amiard
2017-01-09 22:01             ` Robert Eachus
2017-01-04 23:42 ` Andrew Shvets
2017-01-05  0:47   ` G.B.
2017-01-05 19:01   ` Jacob Sparre Andersen
replies disabled

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