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
next prev parent 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