comp.lang.ada
 help / color / mirror / Atom feed
From: David Rasmussen <pinkfloydhomer@yahoo.com>
Subject: Re: Localized Variable Declaration
Date: Fri, 31 May 2002 16:48:29 +0200
Date: 2002-05-31T16:48:29+02:00	[thread overview]
Message-ID: <3CF78D3D.3030400@yahoo.com> (raw)
In-Reply-To: adLJ8.776$i01.53350@news8-gui.server.ntli.net

martin.m.dowie wrote:
> "David Rasmussen" <pinkfloydhomer@yahoo.com> wrote in message
> news:3CF77CDA.3090805@yahoo.com...
> 
>>Oh sure, but that is pretty tedious, compared to just a one line
>>variable declation. The point is, to be a bit extreme, that centralized
>>variable declations (e.g. at the "beginning" of the function) as done in
>>C and Pascal, are evil. Variables should be declared close to where they
>>are needed, IMO.
> 
> 
> Sure, but that's what you get with a declare ... begin ... end. You also get
> to delimit the scope in the example I gave there could have been 100 more
> lines after the 'end' that just didn't need visibility of the local
> variable. Can
> you do that with a 'one line variable declaration'?
> 
> 

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
     ...
}


very simple IMO.

So you can do the same in C++ as in Ada, and more. It's usually the 
other way around. And usually Ada has a good reason for doing things 
they way it does it. I just don't understand the justification for this 
limitation. Consider this:

void something()
{
     cout << "Write two numbers: ";
     int a;
     cin >> a;
     int b;
     cin >> b;
     double c = a * b * 42.42;
}

This demonstrates very much what I mean. Variables aren't declared until 
they can immediately be given a value, even by initialization or by some 
sort of assignment immediately after declaration. This is easier to read 
and understand and minimizes bugs with uninitialized values etc. Compare 
it to:

void something()
{
     int a,b;
     double c;

     cout << "Write two numbers: ";
     cin >> a;
     cin >> b;
     c = a * b * 42.42;
}

I admit that in this simple example, the second looks simpler, but 
still, the types of variables are taken away from the local place where 
they are used, and variables aren't initialized when they are declared. 
In larger functions and larger programs in general, it makes a 
difference. Now, of course this can be done in Ada with the declare 
block, but it will be much more tedious and harder to read.

/David




  reply	other threads:[~2002-05-31 14:48 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 [this message]
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
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