From: Mike Young <mikey@mcs.com>
Subject: Re: some questions re. Ada/GNAT from a C++/GCC user
Date: 1996/03/30
Date: 1996-03-30T00:00:00+00:00 [thread overview]
Message-ID: <315CDCF9.31AF@mcs.com> (raw)
In-Reply-To: 4jhe1v$m0g@dayuc.dayton.saic.com
John G. Volan wrote:
>
> In article <315AC5E7.3A77@escmail.orl.mmc.com>
> Ted Dennison, dennison@escmail.orl.mmc.com writes:
>
> >If you want to declare variables later in the code just
> >use a declare block:
> > declare
> > Var1 : My_Type;
> > ...
> > begin
> > Var1 := My_Value;
> > ...
> > end;
> >
> >This has the added benefit of limiting the scope of Var1 to the
> >begin..end block of code.
>
> There is another benefit, but it isn't obvious unless you take into
> account the concurrency aspects of Ada:
>
> A C programmer would complain about having to introduce an extra
> begin/end block in order to introduce variables. Isn't the scope
> of a variable well-defined in C, even without this extra baggage?
> It just extends from the declaration to the end of whatever block
> you're already in.
>
> An Ada programmer would counter that, in Ada, some variables might be
> instances of _task_ types. By definition, a task object gets created
> when its declaration is elaborated, but it does not get _activated_
> (i.e., it doesn't start executing its statements) until you hit the
> "begin" of the enclosing block. This guarantees that everything in
[ ... some worthy thoughts snipped ... ]
>
> C, of course, has no concurrency abstractions built in (nor does C++,
> last time I checked), so, gee, I guess this isn't an issue in C. :-)
============
Hmmmm. Lacking a language based synch method doesn't mean we always go
straight to the semaphore library. I commonly use thin wrappers to guard
precious resources -- for example: mutexes, semaphores, files,
or database sessions. Local scoping allows precise control of lifetimes,
and ensure release even when exceptions are possible:
void foo ()
{
//-- some setup code here, perhaps
...
{ // local scope
LocalMutex<BazType> foo(mutexHandle);
BazType & bar = foo.openResource();
... // use the protected resource
} // end local scope. LocalMutex releases the resource
...
}
next prev parent reply other threads:[~1996-03-30 0:00 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-03-27 0:00 some questions re. Ada/GNAT from a C++/GCC user Bill Newman
1996-03-27 0:00 ` Robert Dewar
1996-03-28 0:00 ` Brian Rogoff
1996-03-29 0:00 ` John G. Volan
1996-03-30 0:00 ` Robert A Duff
1996-03-31 0:00 ` Robert Dewar
1996-04-01 0:00 ` Norman H. Cohen
1996-03-31 0:00 ` John G. Volan
1996-03-31 0:00 ` Mike Young
1996-04-02 0:00 ` Glenn H. Porter
1996-04-02 0:00 ` Robert Dewar
1996-04-02 0:00 ` Jonas Nygren
1996-04-03 0:00 ` Geert Bosch
1996-04-03 0:00 ` Robert Dewar
1996-04-01 0:00 ` Bruce.Conroy
1996-04-01 0:00 ` Robert A Duff
1996-04-03 0:00 ` Scott Leschke
1996-04-04 0:00 ` AdaWorks
1996-03-30 0:00 ` Mike Young [this message]
1996-03-30 0:00 ` Ted Dennison
1996-03-31 0:00 ` Mike Young
1996-04-01 0:00 ` Norman H. Cohen
1996-04-01 0:00 ` Robert A Duff
1996-04-01 0:00 ` Mike Young
1996-04-02 0:00 ` Norman H. Cohen
1996-04-02 0:00 ` Robert A Duff
1996-04-01 0:00 ` Mike Young
1996-04-02 0:00 ` Robert Dewar
1996-04-02 0:00 ` Norman H. Cohen
1996-04-02 0:00 ` David Shochat
1996-04-02 0:00 ` Mike Young
1996-03-28 0:00 ` Norman H. Cohen
1996-03-28 0:00 ` Scott Leschke
1996-03-29 0:00 ` Bill Newman
1996-03-29 0:00 ` Robert I. Eachus
1996-03-29 0:00 ` Robert A Duff
1996-03-30 0:00 ` Richard Pitre
1996-03-30 0:00 ` Robert A Duff
1996-03-31 0:00 ` AdaWorks
1996-04-01 0:00 ` Robert A Duff
1996-04-01 0:00 ` AdaWorks
1996-04-01 0:00 ` Mike Young
1996-04-02 0:00 ` Robert Dewar
1996-04-02 0:00 ` AdaWorks
1996-04-01 0:00 ` Ken Garlington
1996-04-01 0:00 ` Robert A Duff
1996-04-02 0:00 ` Ken Garlington
1996-04-02 0:00 ` Robert A Duff
1996-04-02 0:00 ` Ken Garlington
1996-04-02 0:00 ` Robert A Duff
1996-04-03 0:00 ` Ken Garlington
1996-04-09 0:00 ` Matt Kennel
1996-04-03 0:00 ` David Emery
1996-04-02 0:00 ` Tucker Taft
1996-04-02 0:00 ` Felaco
1996-04-02 0:00 ` Robert Dewar
1996-04-03 0:00 ` Mark A Biggar
1996-04-01 0:00 ` Norman H. Cohen
1996-04-01 0:00 ` Robert Dewar
1996-04-01 0:00 ` Richard A. O'Keefe
1996-04-01 0:00 ` Robert A Duff
1996-04-02 0:00 ` Robert I. Eachus
1996-03-28 0:00 ` Ted Dennison
1996-03-29 0:00 ` Adam Beneschan
1996-03-29 0:00 ` Robert A Duff
1996-03-29 0:00 ` Brian Rogoff
1996-04-01 0:00 ` Mark A Biggar
1996-04-01 0:00 ` Robert A Duff
1996-03-30 0:00 ` Iterators (was Re: some questions re. Ada/GNAT from a C++/GCC user) Robert I. Eachus
1996-03-31 0:00 ` Mike Young
1996-03-31 0:00 ` Fergus Henderson
[not found] ` <4jlj79$h1k@Nntp1.mcs.net>
1996-04-01 0:00 ` some questions re. Ada/GNAT from a C++/GCC user Robert A Duff
1996-04-02 0:00 ` Kevin Cline
1996-04-02 0:00 ` Robert A Duff
1996-04-01 0:00 ` Iterators (was Re: some questions re. Ada/GNAT from a C++/GCC user) Robert I. Eachus
1996-04-04 0:00 ` some questions re. Ada/GNAT from a C++/GCC user Jon S Anthony
1996-03-30 0:00 ` Simon Wright
1996-04-01 0:00 ` Laurent Guerby
1996-04-01 0:00 ` Robert A Duff
-- strict thread matches above, loose matches on Subject: below --
1996-03-28 0:00 Simon Johnston
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox