comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Brady <see@below.for.email.address>
Subject: Re: conditional compilation
Date: 2000/08/01
Date: 2000-08-01T00:00:00+00:00	[thread overview]
Message-ID: <3985FB16.82D140BB@below.for.email.address> (raw)
In-Reply-To: 39857E5F.33C40014@acm.com

"Marin D. Condic" wrote:
> 
> I know from experience with a few different embedded compilers that it
> was a common optimization to remove dead code. A construct such as:
> 
> declare
>     Debug : constant Boolean := False ;
> begin
>     if (Debug) then
>         Do_Some_Stuff ;
>     else
>         Do_Some_Other_Stuff ;
>     end if ;
> end ;
> 
> would result in the call to Do_Some_Stuff being removed from the object
> code. It was a reasonably effective method of getting conditional
> compilation.

Maybe I'm being pedantic here, but I don't consider this an acceptable
substitute for "real" conditional compilation. Sure, with a good
compiler it achieves the results (debug support with zero runtime cost
in the production build), but from a maintenance perspective it strikes
me as a Bad Thing.

Why? Because it overloads the meaning of the if-then control structure.
Compile-time configuration control and runtime flow control are quite
separate issues, and IMO they need to be clearly distinguished for both
human and automated readers of the code. For example, some Unix tools
take a "print debug info" command-line switch, so the above code might
be just as sensible if Debug was a variable and not a constant. In a
large, unfamiliar source tree, how would you know?

From my own (small-scale) experience I like what conditional compilation
can achieve, especially the way it allows debug builds loaded up with
paranoic self-test code.\x18I would certainly like to see a standardised,
portable method of achieving such ends in Ada - however, the question of
(a) whether conditional compilation is the way to do it and (b) whether
support belongs in or out of the language seems to be very much open.
I'd be curious to hear what people with larger-scale experience think of
this.

Simon Brady                                            sjbrady
Research Assistant, Computer Science Dept.               at
University of Otago, Dunedin, New Zealand            acm dot org




  parent reply	other threads:[~2000-08-01  0:00 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-07-31  0:00 conditional compilation Matthew Woodcraft
2000-07-31  0:00 ` Marin D. Condic
2000-07-31  0:00   ` Ira D. Baxter
2000-08-01  0:00   ` Simon Brady [this message]
2000-07-31  0:00     ` Marin D. Condic
2000-08-01  0:00     ` Ted Dennison
2000-08-01  0:00       ` Robert A Duff
2000-08-01  0:00         ` Laurent Guerby
2000-08-02  0:00       ` Simon Brady
2000-08-02  0:00         ` Robert A Duff
2000-08-02  0:00           ` Georg Bauhaus
2000-08-03  0:00             ` Robert A Duff
2000-08-02  0:00           ` Brian Rogoff
2000-08-03  0:00             ` Robert A Duff
2000-08-03  0:00           ` Florian Weimer
2000-08-02  0:00         ` Simon Brady
2000-08-01  0:00           ` William J. Thomas
2000-08-02  0:00         ` Georg Bauhaus
  -- strict thread matches above, loose matches on Subject: below --
2000-09-19  0:00 Conditional Compilation Kenneth Kueny
2000-09-19  0:00 ` Ted Dennison
2000-09-19  0:00 ` Jeffrey Carter
2000-09-19  0:00   ` Samuel T. Harris
2000-09-20  0:44     ` Robert Dewar
2000-09-19  0:00 ` E. Robert Tisdale
2000-09-19  0:00   ` David Starner
2000-09-20  0:52     ` Robert Dewar
2000-09-19  0:00   ` Larry Kilgallen
2000-09-19  0:00     ` Jeff Allen
2000-09-20  0:49       ` Robert Dewar
2000-09-19  0:00         ` Bobby D. Bryant
2000-09-24  0:00           ` Robert Dewar
2000-09-20  0:47   ` Robert Dewar
2000-10-09  0:00   ` John McCabe
2000-09-19  0:00 ` David Starner
2000-09-19  0:00 ` Richard Riehle
2000-09-20  1:33 ` tmoran
     [not found]   ` <8qauu3$7ei$1@nnrp1.deja.com>
2000-09-24  0:00     ` Robert Dewar
2000-09-25  2:45       ` Ted Dennison
2000-09-25  0:00         ` peter
     [not found] ` <39CA31F2.E160F0D8@res.raytheon.com>
2000-09-24  0:00   ` Robert Dewar
2001-01-02 13:27 ` Andrew Hately
2001-01-02 16:46   ` Robert Dewar
1989-12-12  0:08 conditional compilation Emery
1988-06-13  0:24 Conditional compilation Steinar Haug
1988-06-17 13:53 ` rds
1988-06-22  0:44   ` Jeff Bartlett
1988-06-23 13:01   ` Arny B. Engelson
1988-06-27 18:01     ` Dave Seward
1988-06-29 13:32   ` brucej
1988-06-17 14:48 ` rjs
replies disabled

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