comp.lang.ada
 help / color / mirror / Atom feed
From: Brian Rogoff <bpr@shell5.ba.best.com>
Subject: Re: Problem trying to implement generics.
Date: Tue, 17 Apr 2001 21:08:55 GMT
Date: 2001-04-17T21:08:55+00:00	[thread overview]
Message-ID: <Pine.BSF.4.21.0104171343290.21817-100000@shell5.ba.best.com> (raw)
In-Reply-To: <9bi4g4$97m$1@nh.pace.co.uk>

On Tue, 17 Apr 2001, Marin David Condic wrote:
> I've been an on-and-off C programmer for a *lot* of years. I'm currently
> doing nothing but C programming. 

You have my condolences. 

> I dislike the various C shorthand operators and don't use them because
> it is not immediately and intuitively obvious to even the most casual 
> observer what it is they are doing. 

It's not obvious to the most casual observer what any program in any
programming language does, or what the meaning of a legal contract is, 
or whether a PDE is elliptic, parabolic, or hyperbolic, or the difference
between a pin and and x-ray attack in chess, etc. ad-infinitum,
ad-nauseum. 

Every good programmer who uses C will learn what those shorthand notations 
means. Other languages, even clean slate ones like Icon, have copied some
of those shorthands. I find them equally readable to Ada's long winded
expression. This is a bad example of a C problem. 

 Most programmers
> can recognize the basic algebraic notation that is common to almost all
> popular programming languages (your basic "Y = M * X + B" type of thing) and
> so I use that type of expression in (almost) all C programming contexts. (I
> don't think I need to mention all the possible problems that come up in the
> more clever uses of esoteric features like the difference between "++X" and
> "X++" - but I guess I just did. People who use *that* kind of thing should
> be turned into castrati so that they start singing a different tune. :-)

I agree that there's a fine line. But I'd prefer the shorthand line 

Some_Long_Variable_Name++; /* A C programmer would write slvd++ ;-) */

or even 

Incr(Some_Long_Variable_Name); -- how's this? 

or 

Incr(Some_Long_Variable_Name, Delta => Increment); 

to this 

Some_Long_Variable_Name := Some_Long_Variable_Name + 1;

and I think it makes sense in a programming language to have shorthand for 
very commonly occurring operations. 

For instance, I really wish some future Ada would add << and >> for bit
shifts. 

> I've had the debate with various associates which usually starts out with
> "Any *competent* C programmer should be able to....." My retort is always:
> "How does it make me money when a less-than-"competent" C programmer has to
> decypher it?" 

IMO, a good example of this is writing string or array traversals by
using pointer offsetting. Yuck! Using arrays is much clearer. 

> Every minute spent trying to figure out what an expression does is a
> minute *not* spent making money for the stockholders. 

Well, that's a good argument for removing floating point from most
programming languages too ;-). Please read some of William Kahan's work if 
you don't get the joke...

> even the slightest possibility that someone can misinterpret what the
> expression means or possibly get the syntax wrong or otherwise botch things
> up, then it ought to be avoided. (Assuming one has a simpler, more obvious
> representation for the same thing. After all, there are those who will have
> trouble understanding "Y = M * X + B" but I'm not sure I can make it much
> simpler for them. At least if they know some Fortran, Pascal, Ada, <insert
> language here>, chances are they won't have much trouble guessing what that
> sort of expression means in C.)

C is a different language from Fortran, Pascal, and Ada. I wouldn't hire
an Ada programmer who knew only the Ada/Pascal/Fortran/C intersection of 
features. I wouldn't hire a C programmer who refused to learn C, and
insisted on working in some pidgin Algol subset. 

> The "+=", et alia, were basically invented by people who couldn't type. I'd
> rather opt for the clarity in the expression and not worry about all the
> interesting ways of representing it in fewer keystrokes. After all, on any
> given day of the week *I'm* not a "competent" C programmer! 

I guess there must be something about Ada that makes people into very bad
C programmers. I wrote my first little C program in about a year a few
days ago, and I tripped up on the argc, argv indexing but not on the 
shorthand operators. Go figure.

> I don't want to work that hard to understand what
> I did yesterday when I was fully awake.

I'd find these anti-C arguments would be more compelling if I'd observed
these problems in my own C programs. I haven't. The most interesting
comments were on the lack of a matching lexeme for closing {} and
L. Guerby's comments on how C's semantics lead to debugging nightmares. 
Oh, I'd also say that flat languages (no nesting + lexical scope) suck. 
But C syntax and shorthand operators are not all bad. 

-- Brian





  reply	other threads:[~2001-04-17 21:08 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-04-11 15:04 Problem trying to implement generics Ayende Rahien
2001-04-12  1:41 ` tmoran
2001-04-12 13:15   ` Ayende Rahien
2001-04-12 18:15     ` tmoran
2001-04-13 11:18       ` Ayende Rahien
2001-04-13 10:35         ` chris.danx
2001-04-13 11:54           ` Ayende Rahien
2001-04-13 11:49             ` chris.danx
2001-04-13 23:03               ` Ayende Rahien
2001-04-13 23:01                 ` Robert A Duff
2001-04-14  0:05                   ` Brian Rogoff
2001-04-14  1:12                     ` Ayende Rahien
2001-04-14  1:44                       ` Brian Rogoff
2001-04-14 14:03                         ` Dmitry A. Kazakov
2001-04-14 16:30                           ` Ayende Rahien
2001-04-14 16:28                             ` Michael Erdmann
2001-04-15  3:27                             ` James Rogers
2001-04-15 12:20                               ` Ayende Rahien
2001-04-15 14:09                               ` Dmitry A. Kazakov
2001-04-15 18:22                                 ` tmoran
2001-04-15 13:48                             ` Dmitry A. Kazakov
2001-04-15 20:44                               ` Ayende Rahien
2001-04-16 14:34                                 ` Dmitry A. Kazakov
2001-04-14  1:33                     ` Robert A Duff
2001-04-17  8:50                     ` Jean-Pierre Rosen
2001-04-17 13:20                   ` Tucker Taft
2001-04-17 16:51                     ` Ayende Rahien
2001-04-17 17:16                       ` Larry Hazel
2001-04-17 18:11                         ` Brian Rogoff
2001-04-17 19:10                           ` Marin David Condic
2001-04-17 21:08                             ` Brian Rogoff [this message]
2001-04-18 15:16                               ` Chad R. Meiners
2001-04-18 16:33                                 ` Marin David Condic
2001-04-17 21:09                             ` chris.danx
2001-04-17 21:11                             ` chris.danx
2001-04-17 21:17                             ` chris.danx
2001-05-08  5:40                             ` Lao Xiao Hai
2001-05-11  9:43                               ` John English
2001-05-12 19:16                                 ` Lao Xiao Hai
2001-04-17 19:32                           ` Larry Hazel
2001-04-17 21:03                           ` Ayende Rahien
2001-04-18 15:48                             ` Brian Rogoff
2001-04-20 12:34                               ` Georg Bauhaus
2001-04-20 12:42                                 ` Lutz Donnerhacke
2001-04-20 12:45                                 ` Lutz Donnerhacke
2001-04-20 19:48                                 ` Brian Rogoff
2001-04-20 20:36                                   ` David Starner
2001-04-20 23:02                                   ` Robert A Duff
2001-04-23  2:45                                     ` Brian Rogoff
2001-04-24  1:15                                       ` Robert A Duff
2001-04-24  2:00                                         ` Brian Rogoff
2001-04-24 15:12                                           ` Georg Bauhaus
2001-04-24 15:09                                         ` Georg Bauhaus
2001-04-24 18:36                                           ` Marius Amado Alves
2001-04-19 13:08                           ` Larry Kilgallen
     [not found]                           ` <9bi4g4$97m$1@nh.pace.Organization: LJK Software <YlSyXUaQmD+$@eisner.encompasserve.org>
2001-04-19 14:20                             ` Marin David Condic
2001-04-18  5:34                       ` Mike Silva
2001-04-18 16:55                       ` Ray Blaak
2001-04-24 16:00                       ` Tucker Taft
2001-04-12 13:57 ` Andy
2001-04-13  6:34   ` Simon Wright
2001-04-13 11:11   ` Ayende Rahien
2001-04-12 18:06 ` Stephen Leake
replies disabled

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