comp.lang.ada
 help / color / mirror / Atom feed
From: Dave Thompson <david.thompson1@worldnet.att.net>
Subject: Re: Ada Advocacy.
Date: Mon, 01 Sep 2003 21:26:53 GMT
Date: 2003-09-01T21:26:53+00:00	[thread overview]
Message-ID: <c2e7lv47k1rev5phanv60r0jtmdmcjd7vg@4ax.com> (raw)
In-Reply-To: pan.2003.08.26.21.20.35.693597@__n_o_s_p_a_m__abyss2.demon.co.uk

On Tue, 26 Aug 2003 22:20:36 +0100, "Luke A. Guest"
<laguest@__n_o_s_p_a_m__abyss2.demon.co.uk> wrote:
<snip>
> Not an URL, but something that I and other programmers have always wanted
> to do in C/C++/etc. but cannot is the printing of names of variables ;-)
> 
> That's a damn nice debugging feature. It's been a while but I think it's
> something like
> 
> declare
> 	test : Integer := 5;
> begin
> 	-- I'm really unsure about the overloaded + operator here, like I said
> 	-- it's been a while (around 6 years!)
> 	Write test'Name + " = " + test;
> end
> 
Put[_Line] and test'Image.

> should send "test = 5" to the console.
> 
> Something like that anyway ;-P Try doing that in C/C++ without a lookup
> table :-(
> 
Generating the string label is easy enough in C or C++ using the
preprocessor # (stringize) operator -- as well as just writing it out
by hand for a fixed value.  But the value conversion in C must be
coded knowing the data type, e.g.:
#define STR(x) #x
... printf (STR(test) " = " "%d" "\n", test ); /* for an int */
/* but %ld for long int, %f for a float or double, etc. */
/* and this doesn't work at all for non-builtin types */

In C++ all builtin types have operator<< predefined, and you can
define it yourself for class types (and enums, although those can also
default to builtin integers), in which case this always works:
... cout << STR(test) << " = " << test << endl;

and can be generated automatically from one variable name like:
#define PRINTVAR(x) cout << # x << " = " x << endl;
... PRINTVAR(test)

These can also be modified in obvious ways to do other things than
stdout, like C sprintf to a buffer or C++ << to a stringstream,
display in a GUI messagebox, send via RPC or CORBA, etc.

PL/I has a builtin facility to output any variable(s), or all, with
names -- PUT DATA -- but cannot be used for any other purpose.
Fortran has NAMELIST I/O to do the same thing for pre-chosen groups of
variables, which works bit is a bit clumsy for just one.

> Another thing that's really useful is being able to declare the range of,
> say, an integer variable - and with bounds checking it gets caught at
> compile & runtime (depending on whether it's accessed with a constant or
> not).
> 
Pascal also does this.  C++ doesn't for builtin integer types, but you
can write an integer-like class which does, or better a template which
generates such (lightweight) classes on demand.  Similarly subscripts
are not checked for builtin arrays, but can be for stdlib containers
like std::vector and for array-like classes that you write or generate
from a template.

> The only downside to Ada is the amount of work that has to go into a
> simple program just to dump out some text (not very good for beginners) to
> the console.
> 
> Also meaningful names negates the need for the absolutely disgusting
> hungarian notation.
> 
This is equally true of all languages above (and most if not all
others) for user names.  Although the names in the Ada standard
library(s) are with perhaps a few exceptions more meaningfully (and
consistently) chosen than in pretty much all other common languages.

- David.Thompson1 at worldnet.att.net



  parent reply	other threads:[~2003-09-01 21:26 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-26 20:33 Ada Advocacy Stephane Richard
2003-08-26 21:20 ` Luke A. Guest
2003-08-26 22:28   ` Stephane Richard
2003-08-26 23:04     ` Luke A. Guest
2003-08-27 16:15       ` Warren W. Gay VE3WWG
2003-08-27 23:06         ` Luke A. Guest
2003-08-28 10:39           ` Preben Randhol
2003-08-26 23:55   ` Chad R. Meiners
2003-08-27  0:44   ` Anisimkov
2003-08-27  8:26     ` Dmitry A. Kazakov
2003-08-27 20:12       ` Wes Groleau
2003-08-27 23:09         ` Luke A. Guest
2003-08-29 16:13           ` Jon S. Anthony
2003-08-29 18:15             ` Luke A. Guest
2003-08-28  8:34         ` Dmitry A. Kazakov
2003-08-27  8:29     ` Luke A. Guest
2003-08-28  5:29       ` Dmitriy Anisimkov
2003-09-01 21:26   ` Dave Thompson [this message]
2003-08-27  6:56 ` David Holm
2003-08-27 16:00 ` Rod Chapman
2003-08-29  6:38 ` Adrian Hoe
2003-08-29  9:34   ` Stephane Richard
2003-09-01  5:45     ` Adrian Hoe
  -- strict thread matches above, loose matches on Subject: below --
2012-03-20 12:54 Ada advocacy tonyg
2012-03-20 13:54 ` Ludovic Brenta
2012-03-20 14:39 ` Marc C
2012-03-20 15:13   ` Ludovic Brenta
2012-03-20 16:34     ` Yannick Duchêne (Hibou57)
2012-03-20 16:35       ` Yannick Duchêne (Hibou57)
2012-03-20 20:06   ` Shark8
2012-03-20 15:42 ` Georg Bauhaus
2012-03-20 18:31 ` Jeffrey Carter
2012-03-20 21:42 ` anon
2012-03-20 23:05   ` Shark8
2012-03-21  0:32 ` Shark8
2012-03-21  1:58 ` Robert Love
2012-03-21  5:37   ` Per Sandberg
2012-03-25 11:10     ` Peter C. Chapin
2012-03-21  8:59   ` anon
2013-06-17 23:42     ` johannes falcone
2013-06-18  0:09       ` tmoran
2013-06-18  0:14     ` Leo Brewin
2013-06-18  0:59       ` Jeffrey Carter
2013-06-19 19:22         ` johannes falcone
2013-06-19 19:34           ` Jacob Sparre Andersen
2013-06-19 20:16             ` Shark8
2013-06-19 19:36           ` Ludovic Brenta
2013-08-30  7:36             ` johannes falcone
2013-06-18  1:28       ` Dennis Lee Bieber
2013-06-18  5:55         ` Peter Brooks
2013-06-18 17:15           ` Robert A Duff
2013-06-18 17:43             ` Bill Findlay
2013-06-18 19:22               ` Robert A Duff
2013-06-18 19:30                 ` Bill Findlay
2013-08-27 13:34             ` Yannick Duchêne (Hibou57)
2013-08-27 14:08               ` Bill Findlay
2013-08-27 14:13                 ` Bill Findlay
2013-08-27 21:25               ` J-P. Rosen
2013-08-28  7:45                 ` Dmitry A. Kazakov
2013-08-27 22:42               ` Dennis Lee Bieber
2013-08-28  7:45               ` Maciej Sobczak
2013-08-28  8:58                 ` Georg Bauhaus
2013-08-28  9:42                   ` Dmitry A. Kazakov
2013-08-28 11:42                     ` G.B.
2013-08-28 11:59                       ` Dmitry A. Kazakov
2013-08-28 12:49                         ` G.B.
2013-08-28 14:07                           ` Dmitry A. Kazakov
2013-08-28 15:06                             ` Eryndlia Mavourneen
2013-08-28 17:30                               ` Dmitry A. Kazakov
2013-08-28 16:44                       ` Yannick Duchêne (Hibou57)
2013-08-28 17:25                         ` Dmitry A. Kazakov
2013-08-28 23:33                           ` Dennis Lee Bieber
2013-08-29  7:15                             ` Dmitry A. Kazakov
2013-08-29 14:47                           ` Yannick Duchêne (Hibou57)
2013-08-29 19:15                             ` Dmitry A. Kazakov
2013-08-29 15:28               ` Robert A Duff
2013-08-29 21:43                 ` Jeffrey R. Carter
2013-08-30 23:52                   ` Yannick Duchêne (Hibou57)
2013-08-31  0:05                     ` Jeffrey R. Carter
2013-08-31  1:42                       ` Shark8
2013-08-31  2:57                       ` Shark8
2013-08-31  9:00                         ` Dirk Craeynest
2013-08-31  1:48                   ` Randy Brukardt
2013-09-02  7:13                   ` Egil H H
2013-09-02  8:41                     ` G.B.
2013-09-02 16:37                       ` Egil H H
2013-08-29 15:46               ` Robert A Duff
2013-08-30  4:47                 ` Jeffrey R. Carter
2013-08-30 16:54                   ` Robert A Duff
2013-08-30 17:49                     ` Jeffrey R. Carter
2013-08-30 22:41                       ` Robert A Duff
2013-08-31  0:02                         ` Jeffrey R. Carter
2013-08-31 14:47                           ` Robert A Duff
2013-06-19  7:29           ` nevillednz
2013-08-27 13:39             ` Yannick Duchêne (Hibou57)
2013-09-02 18:45           ` Martin
2013-06-17 23:39   ` johannes falcone
2012-03-21 10:44 ` tonyg
2013-06-18  0:07   ` johannes falcone
2012-03-23 16:13 ` KK6GM
2013-06-13 15:33 ` david
2013-06-13 15:34 ` david
replies disabled

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