comp.lang.ada
 help / color / mirror / Atom feed
From: caen!uvaarpa!software.org!smithd@uunet.uu.net  (Doug Smith)
Subject: Re: Using Global Variables
Date: 21 Sep 92 16:51:08 GMT	[thread overview]
Message-ID: <1992Sep21.165108.11129@software.org> (raw)

In article <16864C1E7.M19481@mwvm.mitre.org> M19481@mwvm.mitre.org writes:
> In article <1992Sep16.152620.9286@nosc.mil>
> sampson@nosc.mil (Charles H. Sampson) writes:
>  
> >
> >In article <15390@suns5.crosfield.co.uk> pdg@crosfield.co.uk (paul goffin)
> >writes (in an article on Ada compiler pricing):
> >
> >>So what did I mean by cost?  Well, apart from the training costs
> >>and the cost of setting up development systems that act>>Ada, (New compiler
 driving scripts, new way of addressing hardware,
> >>new way of managing "global variables" - Yes, nasty as they are,
> >>you do sometimes have to use global variables in the real world!)
> >>there was a nasty shock in the price of the compilers.
> >
> >     I'd like to hear more about this need to use global variables in
> >the real world, from Mr. Goffin and anyone else.  I can't remember the
> >last time I used one in an Ada project, and I think what I do is pretty
> >real world stuff.  (Well, I do contract to the U. S. Navy, but that's
> >close.)
> >
> >                                Charlie
>  
> The main reason I've heard used to justify the use of global variables is
> performance of a real-time system.  The argument goes that the overhead of
> parameter passing is just too high to meet the performance requirements on
> the target machine (which cannot be changed), hence global variables.  Now
> you may argue that the target machine should have been chosen more wisely,
> or the choice delayed until after the software was totally developed so as
> to be able to pick the right size machine -- but I imagine that that's what
> Mr. Goffin had in mind when he used the term "real world."
>  
> David - dhite@mitre.org

OK.  Let's get specific.  Assuming that having to `with' a package does
not violate the definition of global, the following is definitely the
declaration of a global variable:

    package Contains_Global is
       Global_Variable : Integer;
    end Contains_Global;

Now I can effectively convert this to declare the variable inside the
package body, but instead of assignment (a predefined procedure with
special semantics), I must provide my own procedures to access it:

   package Convert_Global is
      procedure Put (Value : in     Integer);
      procedure Get (Value :    out Integer);

      pragma Inline (Put, Get);
   end Convert_Global;

   package body Convert_Global is
      Is_This_A_Global_Variable : Integer; ----------- What do you say?

      procedure Put (Value : in     Integer) is
      begin
         Is_This_A_Global_Variable := Value;
      end Put;

      procedure Get (Value :    out Integer) is
      begin
         Value := Is_This_A_Global_Variable;
      end Get;

   end Convert_Global;

In an attempt to limit the potential explosion of discussion about
why one is better than the other--let's try to define the term `Global'
first!  What is the Integer declared inside the package body?

Doug
smithd@software.org

             reply	other threads:[~1992-09-21 16:51 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1992-09-21 16:51 Doug Smith [this message]
  -- strict thread matches above, loose matches on Subject: below --
1992-09-29 15:05 Using Global Variables Charles H. Sampson
1992-09-28 20:56 crispen
1992-09-28 15:53 Victor Giddings
1992-09-28 14:51 Jeffrey Stewart
1992-09-28 12:52 crispen
1992-09-25 22:58 netcomsv!iscnvx!news
1992-09-25 21:16 Charles H. Sampson
1992-09-25 17:50 Charles H. Sampson
1992-09-25 17:36 Charles H. Sampson
1992-09-25 16:30 David A. Hasan
1992-09-25 14:01 crispen
1992-09-24 20:02 netcomsv!iscnvx!news
1992-09-24 18:10 crispen
1992-09-24  6:51 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!rpi!utcsri!geac!torsqnt!uuno
1992-09-24  3:52 Michael Feldman
1992-09-23 21:13 haven.umd.edu!darwin.sura.net!zaphod.mps.ohio-state.edu!cis.ohio-state.ed
1992-09-23 19:11 Charles H. Sampson
1992-09-23 15:01 crispen
1992-09-23 14:26 munnari.oz.au!ariel!ucsvc.ucs.unimelb.edu.au!phillip.edu.au!x01233
1992-09-23 14:19 crispen
1992-09-23 13:24 wupost!spool.mu.edu!olivea!bu.edu!inmet!inmet!shafer
1992-09-23  2:44 Holmes S. Liao
1992-09-22 20:14 LEE MARDEN
1992-09-22 17:08 dog.ee.lbl.gov!hellgate.utah.edu!cs.utexas.edu!csc.ti.com!tilde.csc.ti.co
1992-09-22 14:54 van-bc!ubc-cs!destroyer!caen!spool.mu.edu!umn.edu!The-Star.honeywell.com!
1992-09-22 12:19 Robert Firth
1992-09-21 21:30 fred j mccall 575-3539
1992-09-21 20:58 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!darwin.sura.net!spool.mu.edu
1992-09-21 20:37 Michael Feldman
1992-09-21 20:36 Michael Feldman
1992-09-21 20:31 Michael Feldman
1992-09-21 19:23 Robert Firth
1992-09-21 18:32 agate!linus!linus.mitre.org!mwvm.mitre.org!M19481
1992-09-21 14:43 haven.umd.edu!darwin.sura.net!spool.mu.edu!umn.edu!The-Star.honeywell.com
1992-09-21 11:49 cis.ohio-state.edu!news.sei.cmu.edu!ajpo.sei.cmu.edu!wellerd
1992-09-21  8:10 paul goffin
1992-09-21  4:08 cis.ohio-state.edu!news.sei.cmu.edu!lph
1992-09-19  2:28 Michael Feldman
1992-09-18 23:52 Charles H. Sampson
1992-09-18 22:50 Robert I. Eachus
1992-09-18 13:12 crispen
1992-09-17 18:34 Charles H. Sampson
1992-09-17 14:24 kronos.arc.nasa.gov!iscnvx!news
1992-09-16 17:47 agate!linus!linus.mitre.org!mwvm.mitre.org!M19481
1992-09-16 15:26 Charles H. Sampson
replies disabled

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