comp.lang.ada
 help / color / mirror / Atom feed
From: dewar@gnat.com (Robert Dewar)
Subject: Re: Localized Variable Declaration
Date: 31 May 2002 17:58:43 -0700
Date: 2002-06-01T00:58:44+00:00	[thread overview]
Message-ID: <5ee5b646.0205311658.52211e12@posting.google.com> (raw)
In-Reply-To: 3CF78D3D.3030400@yahoo.com

David Rasmussen <pinkfloydhomer@yahoo.com> wrote in message news:<3CF78D3D.3030400@yahoo.com>...
> You can do the same thing in C++ by just doing
> 
> int whatever(int foo)
> {
>      ...
>      ...
>      { // local scope starts here
>           int local = 42;
>           ....
>      } // and ends here
>      ...
> }

Yes, sure, and the interesting thing is that in my experience it is far
more common to see extensive use of local declare blocks in Ada than it
is in C. I don't know why this is, because indeed narrowing the scope of
variables is an important issue for readability.

Personally I like a local declarative block being announced clearly with
declare, for me the use of { is too overloaded. For example:

   while (*a++ = *b++)
   {
      stuff
   }

and

   while (*a++ = *b++);
   {  
      stuff
   }

are uncomfortably close, and I prefer having a very definite keyword that
announces a local declare block.

As for not allowing declarations in the middle of statements, this is
very deliberate for several reasons.

Two significant reasons are:

The semantics of embedded declarations is nasty with respect to whether they
are allowed within control structures, what happens if a goto skips over them,
etc.

Forcing the use of a declare forces the writer to think about the scope of
the declarations that are introduced and end the scopes appropriately. The
C++ approach makes it easier for the programmer to ignore this, and by default
let the scope extend to the end.

Note that it is definitely not the case that C++ can do more than Ada here,
just that you have to be noisier about it in Ada. That's a choice we often
make, because we unconditionally favor the reader over the writer (for
example, consider unchecked conversion vs a cast).



  parent reply	other threads:[~2002-06-01  0:58 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-31 13:24 Localized Variable Declaration David Rasmussen
2002-05-31 13:32 ` martin.m.dowie
2002-05-31 13:38   ` David Rasmussen
2002-05-31 13:50     ` martin.m.dowie
2002-05-31 14:48       ` David Rasmussen
2002-05-31 15:26         ` martin.m.dowie
2002-05-31 15:45           ` David Rasmussen
2002-05-31 18:30             ` Jeffrey Carter
2002-06-02  2:21             ` steve_H
2002-06-02  9:59               ` David Rasmussen
2002-06-02 15:06                 ` Robert Dewar
2002-06-02 15:27                   ` David Rasmussen
2002-06-02 23:25                     ` Hyman Rosen
2002-06-02 23:28                       ` David Rasmussen
2002-06-02 23:52                     ` martin.m.dowie
2002-06-02 23:58                       ` David Rasmussen
2002-06-03 11:22                         ` martin.m.dowie
2002-05-31 15:51           ` Mark Johnson
2002-05-31 17:47             ` martin.m.dowie
2002-05-31 21:53           ` tmoran
2002-06-02 15:10             ` Robert Dewar
2002-06-02 15:28               ` Vinzent Hoefler
2002-06-02 18:04               ` tmoran
2002-06-07  3:32               ` Richard Riehle
2002-05-31 15:59         ` Darren New
2002-06-02 15:20           ` Robert Dewar
2002-06-03  5:29             ` Michael Bode
2002-06-03  6:17               ` Preben Randhol
2002-06-04 10:26                 ` Simon Wright
2002-06-03 13:59               ` Marin David Condic
2002-06-05  8:36                 ` Dmitry A.Kazakov
2002-06-03 17:29               ` Pascal Obry
2002-06-16 23:34               ` Robert A Duff
2002-06-04 12:13             ` Georg Bauhaus
2002-05-31 19:00         ` Mike Silva
2002-06-01  0:58         ` Robert Dewar [this message]
2002-05-31 18:04       ` Larry Kilgallen
2002-05-31 15:06     ` Marin David Condic
2002-06-01 14:53       ` Stephen Leake
2002-06-02 21:18         ` Florian Weimer
2002-06-11  7:16         ` David Thompson
2002-05-31 18:30     ` Stephen Leake
2002-06-02  1:52 ` Stefan Skoglund
replies disabled

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