Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 8/23/84; site ucbcad.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!ucbvax!ucbcad!faustus
From: faustus@ucbcad.UUCP (Wayne A. Christopher)
Newsgroups: net.lang.c
Subject: Re: more about programming style
Message-ID: <68@ucbcad.UUCP>
Date: Fri, 12-Jul-85 17:05:19 EDT
Article-I.D.: ucbcad.68
Posted: Fri Jul 12 17:05:19 1985
Date-Received: Sat, 13-Jul-85 13:34:27 EDT
References: <11457@brl-tgr.ARPA>
Organization: UC Berkeley CAD Group, Berkeley, CA
Lines: 55

> Let's say I am a person whose programming experience consisted a few
> high school and college courses in Basic & Pascal.  Ok, now let's say I
> have a problem that I want solved by a programmer.  The programmer comes
> back to me with a program which doesn't do quite what I wanted.  Now
> from the comments it looks like the program should work right.  The
> problem is in the code.  Now the programmer goes off and tries to fix
> it, thinking he knows exactly what I want.  But when he comes back with
> the revised program, it still doesn't do what I wanted.  Now the
> comments were not enough to understand why the program doesn't do what I
> wanted.  Therefore I must look at the code ("Foul", I hear you say.
> "What are you doing looking at his code; you're not an experienced C
> programmer!"  Well who else can look at it, if the programmer can't fix
> it himself?  At least I know what I want done).  The program turns out
> to be a full of these strange little idioms, which I've never seen
> before.  Luckily, some of the code is readable, so I hope that what is
> wrong is in that.  Let's say the problem with the program is that a
> variable is being incremented when it shouldn't be.  However I don't
> know that the variable is being incremented because I see this cryptic
> "stuff++" which I pretty much ignore because the code is full of things
> like that which gets lost in the shuffle.  I'm lost, the programmer
> doesn't know what's wrong, and we're stuck.
> 
> However if the program said "stuff = stuff + 1" or even
> "increment(stuff)", I could say "Aha! I think I know why it's not
> working. That variable 'stuff', why is it being incremented.  I don't
> think it should be incremented".  The programmer removes that line, the
> program is fixed, and we all live happily ever after.
> 
> I know this was a rather long story, but I had to get my point across
> somehow.  Remember that the "I" in that story could be someone you will
> be working for.

You should either: (1) Hire programmers who do the right thing, or (2)
Learn C. If there are nice features in a language like "i++", it is
silly to expect programmers not to use them because non-programmers
won't understand them. If you don't understand "i++", you sure won't
understand "p->foo". Besides, many people have pointed out that you
sometimes have to be a bit obscure to get efficient code -- if you write

	while (p->duck)
		p++;

instead of

	while (p++->duck)
		;

you are likely not to get the loop compiled with auto-increment instructions...

Anyway, you should admit that you are fighting a losing battle -- C
programmers write programs that should be understood by and only by other
C programmers, and if you don't know C you have no business trying to
understand it.

	Wayne