From: Alan E & Carmel J Brain <aebrain@dynamite.com.au>
Subject: Re: Programming language vote - results
Date: 1997/11/19
Date: 1997-11-19T00:00:00+00:00 [thread overview]
Message-ID: <3473B221.14AE@dynamite.com.au> (raw)
In-Reply-To: 3470EF6E.F74@lysator.liu.se
Ingemar Ragnemalm wrote:
> There are plenty of people who use C since it is "cool", but just can't
> say what is so cool with it. It is cool because Mom can't understand it.
> No, they won't say that. You can identify that kind of people by the
> lack of comments in the code. They *want* it that way - and they are
> many!
> When you show the bad way to those kids, they think it is WAAAY cool!
> They will use any stinking obscure construction just because "it is
> valid C code".
>
> Simple example from real life:
>
> if (call_this() || call_that());
>
> Valid, yes. Better than
>
> if (!call_this()) call_that();
>
> or more clear forms in other languages?
> Some people actually think so.
Here's a post from some time ago. I've had numerous requests from people
to circulate it around their offices. But no rebuttals....
> C is better than Ada because....
>
> The first real-world C program I did was in 1980. Since 1983 I've been trying to
> convince C hackers about the benefits of Ada. Those that actually were forced to do
> some real project in Ada were quickly converted. But mainly, no-one tried.
>
> Trying to tell people about the benefits often leads to complete stonewalling. There
> has to be a logical reason for this - few programmers have low IQs.
>
> I've finally become convinced that C really IS better than Ada, for the following
> reasons:
>
>
> FOR THE PROGRAMMER
>
> ..Hacking away in C is fun, you can add trapdoors and trojan horses real easy
>
> ..You can write neat stuff like the following code fragments:
>
> #define BITCOUNT(x) (((BX_(x)+(BX_(x)>>4)) & 0x0F0F0F0F) % 255)
> #define BX_(x) ((x) - (((x)>>1)&0x77777777) \
> - (((x)>>2)&0x33333333) \
> - (((x)>>3)&0x11111111)
> p = BX_(n);
>
> n = ((n>>1) & 0x55555555) | ((n<<1) & 0xaaaaaaaa);
> n = ((n>>2) & 0x33333333) | ((n<<2) & 0xcccccccc);
> n = ((n>>4) & 0x0f0f0f0f) | ((n<<4) & 0xf0f0f0f0);
> n = ((n>>8) & 0x00ff00ff) | ((n<<8) & 0xff00ff00);
> n = ((n>>16) & 0x0000ffff) | ((n<<16) & 0xffff0000);
>
> which is difficult to understand, and makes you look really, really clever,
> even though it does something utterly trivial ( p is the number of bits in n,
> and n ends up with its bit order reversed )
>
> ..You'll always have a secure job, trying to make sense of other people's code
> after they've left
>
> ..You'll always have a secure job, as with well-written, terse, tight and
> efficient C YOU are the ONLY one who can easily understand your own code!
>
> ..You'll always have a secure job, as large C programs always have lots of bugs,
> and require oodles of maintenance
>
> ..Compiling is really easy - even when the stuff you're compiling is utter
> garbage, the compiler won't tell on you
>
> ..You can ignore most of your coding errors until quite late in the day - with
> any luck, until you've left the project
>
>
> FOR THE SUPPLIER
>
> ..You can always find C hackers, and they're dirt cheap
>
> ..With C, you get the initial build done quick, cheap and dirty, and make a
> fortune over the next 10 years putting in new bugs while removing old ones.
>
>
> FOR THE CUSTOMER
>
> ..Because programmers and suppliers tell you so.
>
>
>
> Ada is worse than C because
>
> ..Only Anal-retentive weenies who mumble about Quality and Professionalism
> would get any fun out of Ada
>
> ..You'd get into the habit of writing stuff like
>
> with MACHINE_SPECIFIC;
>
> procedure COUNT_BITS_AND_REVERSE
> ( THE_WORD : in out MACHINE_SPECIFIC.WORD_TYPE,
> THE_COUNT : out MACHINE_SPECIFIC.BIT_COUNT_TYPE
> ) is
>
> declare
>
> package BIT_OPS renames MACHINE_SPECIFIC.BIT_OPERATIONS;
>
> begin
>
> THE_COUNT := BIT_OPS.BIT_COUNT_OF(THE_WORD);
> BIT_OPS.REVERSE_BIT_ORDER_OF(THE_WORD);
>
> exception
>
> when others => raise CODE_CORRUPTED_OR_HARDWARE_ERROR;
>
> end COUNT_BITS_AND_REVERSE;
>
> which any fool can easily understand, even though it does trap some of
> the errors caused by the over-running array bounds in the C you've had
> to PRAGMA INTERFACE to, soft errors, and hardware glitches.
> Not only that, it works on 16, 32, 64, 48 etc bit machines as well. so
> can't get lots of bucks writing different versions.
> And then the compiler barfs, and tells you what you've done wrong!
>
> ..You spend a long time looking for a job, as your code on the last project
> worked so well that the project completed on time, and you were no longer
> needed.
>
> ..You spend a long time looking for a job, as the maintenance effort needed
> consisted of 2 part-timers rather than the whole development team
>
> ..You spend a long time looking for a job, as no-one uses Ada
>
> ..Getting a Clean Compile of anything non-trivial is quite difficult.
>
> ..Your Ego takes a hammering by the compiler constantly showing you where
> you made mistakes. And if not the compiler, the Linker!
>
>
> FOR A SUPPLIER
>
> ..Ada programmers are rare and expensive. You can't hire cheap graduate coolies.
>
> ..It costs more initially to make a system, and it takes longer. Much worse,
> there's almost no maintenance, so your only revenue is from the initial sale.
>
>
> FOR A CUSTOMER
>
> ..Because the programmers and suppliers tell you so.
>
>
> That's the bottom line, people. The only people who benefit from Ada are the
> customers and users. The user riding on a 777 generally doesn't know that any
> programming was involved, and the customers rely on advice from their suppliers.
>
> Until we understand that, all arguments regarding the qualities of Ada are
> irrelevant.
--
aebrain@dynamite.com.au <> <> How doth the little Crocodile
| Alan & Carmel Brain| xxxxx Improve his shining tail?
| Canberra Australia | xxxxxHxHxxxxxx _MMMMMMMMM_MMMMMMMMM
abrain@cs.adfa.oz.au o OO*O^^^^O*OO o oo oo oo oo
By pulling MAERKLIN Wagons, in 1/220 Scale
next prev parent reply other threads:[~1997-11-19 0:00 UTC|newest]
Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <343fbb5a.0@news.iprolink.ch>
1997-10-11 0:00 ` Programming language vote - results Gary L. Scott
1997-10-12 0:00 ` Jack Rudd
1997-10-13 0:00 ` safetran
1997-10-13 0:00 ` FRS DES
1997-10-13 0:00 ` Jack Rudd
1997-10-14 0:00 ` Philip Brashear
1997-10-14 0:00 ` Gary L. Scott
1997-10-13 0:00 ` Gary L. Scott
1997-10-13 0:00 ` Robert Munck
1997-10-13 0:00 ` Jack Rudd
1997-10-13 0:00 ` Gary L. Scott
[not found] ` <3442B745.5352@lmco.com>
1997-10-15 0:00 ` Gary L. Scott
1997-10-16 0:00 ` James Giles
1997-10-16 0:00 ` Andrew Haley
1997-10-13 0:00 ` David Ness
1997-10-14 0:00 ` Randy MacDonald
1997-10-14 0:00 ` Jan Karman
1997-10-15 0:00 ` Alan E & Carmel J Brain
1997-10-15 0:00 ` D'Arcy J.M. Cain
1997-10-15 0:00 ` FRS DES
1997-10-15 0:00 ` Mark Stephen
1997-10-17 0:00 ` Randy MacDonald
1997-10-16 0:00 ` Alan E & Carmel J Brain
1997-10-16 0:00 ` FRS DES
1997-10-17 0:00 ` Jerry van Dijk
1997-10-16 0:00 ` John Sullivan
1997-10-17 0:00 ` Alan E & Carmel J Brain
1997-10-17 0:00 ` John Sullivan
1997-10-17 0:00 ` Randy MacDonald
1997-10-17 0:00 ` Randy MacDonald
1997-10-20 0:00 ` Alan E & Carmel J Brain
1997-10-20 0:00 ` FRS DES
1997-10-21 0:00 ` Alan E & Carmel J Brain
1997-10-20 0:00 ` Lawrence Kirby
1997-10-20 0:00 ` Kaz
1997-10-21 0:00 ` Alan E & Carmel J Brain
1997-10-23 0:00 ` Ada Readability (Re: Programming language vote - results) Ray Blaak
1997-10-21 0:00 ` Programming language vote - results Alan E & Carmel J Brain
1997-10-21 0:00 ` Randy MacDonald
1997-10-22 0:00 ` Don Guinn
[not found] ` <01bce1bf$5c2baaa0$95b66bcf@dkelly.ark.com>
1997-10-29 0:00 ` FRS DES
1997-10-29 0:00 ` Don Guinn
1997-10-29 0:00 ` Shmuel (Seymour J.) Metz
1997-10-31 0:00 ` Documenting Code (was:Programming language vote - results) Alan E & Carmel J Brain
1997-10-30 0:00 ` Charles Lin
1997-10-30 0:00 ` James L. Ryan
1997-10-31 0:00 ` Robert Bernecky
1997-10-31 0:00 ` Robert Bernecky
1997-11-01 0:00 ` Randy MacDonald
1997-11-01 0:00 ` Robert Dewar
1997-11-03 0:00 ` Jon S Anthony
1997-10-29 0:00 ` Programming language vote - results Randy MacDonald
1997-10-25 0:00 ` Alan E & Carmel J Brain
1997-10-26 0:00 ` functionality of Java (was Re: Programming language vote - results) Randy MacDonald
1997-10-23 0:00 ` Programming language vote - results Jack Rudd
1997-10-25 0:00 ` Alan E & Carmel J Brain
1997-10-25 0:00 ` Kaz
1997-10-26 0:00 ` FRS DES
1997-10-27 0:00 ` Robert Bernecky
1997-10-27 0:00 ` APL argument W. Wesley Groleau x4923
1997-10-28 0:00 ` Randy MacDonald
1997-10-28 0:00 ` Programming language vote - results Jan Karman
1997-10-28 0:00 ` Robert Bernecky
1997-10-28 0:00 ` James L. Ryan
1997-10-29 0:00 ` Robert Bernecky
[not found] ` <bosworth-2910972044300001@access59.accsyst.com>
1997-10-30 0:00 ` Robert Bernecky
1997-10-30 0:00 ` James L. Ryan
1997-10-31 0:00 ` Robert Bernecky
1997-10-31 0:00 ` James L. Ryan
1997-10-29 0:00 ` Jack Rudd
1997-10-25 0:00 ` Peter Seebach
1997-11-18 0:00 ` Ingemar Ragnemalm
1997-11-18 0:00 ` firewind
1997-11-18 0:00 ` Kevin Swan
1997-11-19 0:00 ` Alan E & Carmel J Brain
1997-11-18 0:00 ` Larry Elmore
1997-11-20 0:00 ` firewind
1997-11-19 0:00 ` Mike Smith
1997-11-19 0:00 ` Matt
1997-11-20 0:00 ` firewind
[not found] ` <3474C71B.536B12F6@cgocable.net>
1997-11-21 0:00 ` CVigue
1997-11-23 0:00 ` Lawrence Kirby
1997-11-24 0:00 ` FRS DES
1997-11-20 0:00 ` Coding for Obscurity Alan E & Carmel J Brain
1997-11-20 0:00 ` Stephan Wilms
1997-11-21 0:00 ` Jos A. Horsmeier
1997-11-23 0:00 ` Alex Krol
1997-11-24 0:00 ` Jim Johnson
1997-11-24 0:00 ` Mark Wilden
1997-11-26 0:00 ` Robert S. White
1997-11-26 0:00 ` Leon Jones
1997-11-26 0:00 ` Ron Natalie
1997-11-27 0:00 ` Joerg Rodemann
1997-11-26 0:00 ` Lawrence Kirby
1997-11-26 0:00 ` Miguel Carrasquer Vidal
1997-12-01 0:00 ` ISONE
1997-12-01 0:00 ` ISONE
1997-11-26 0:00 ` Mark Wilden
1997-11-27 0:00 ` Richard A. O'Keefe
1997-11-23 0:00 ` Al Christians
1997-11-24 0:00 ` Richard A. O'Keefe
1997-11-24 0:00 ` Matt
1997-11-24 0:00 ` Ed Falis
1997-11-24 0:00 ` Samuel T. Harris
1997-11-24 0:00 ` Jon S Anthony
1997-11-25 0:00 ` Samuel T. Harris
1997-11-20 0:00 ` firewind
1997-11-20 0:00 ` Jos A. Horsmeier
1997-11-20 0:00 ` Programming language vote - results Andy Knight
1997-11-20 0:00 ` firewind
1997-11-20 0:00 ` Terry Richards
1997-11-20 0:00 ` Andy Knight
1997-11-23 0:00 ` Alex Krol
1997-11-25 0:00 ` William Tanksley
1997-11-26 0:00 ` Ron Natalie
1997-11-27 0:00 ` William Tanksley
1997-11-27 0:00 ` Lawrence Kirby
[not found] ` <65keij$mkd$1@nerd.apk.net>
1997-11-27 0:00 ` Kaz Kylheku
1997-11-28 0:00 ` Shmuel (Seymour J.) Metz
1997-12-01 0:00 ` FRS DES
1997-11-18 0:00 ` Lawrence Kirby
1997-11-24 0:00 ` Martin M Dowie
1997-11-25 0:00 ` Mark Wilden
1997-11-25 0:00 ` Martin M Dowie
1997-11-26 0:00 ` Lawrence Kirby
1997-11-26 0:00 ` FRS DES
1997-11-25 0:00 ` Kaz Kylheku
1997-11-26 0:00 ` Peter Seebach
1997-12-02 0:00 ` ANDREAS LEITNER
1997-12-02 0:00 ` Robert Dewar
1997-12-02 0:00 ` Lawrence Kirby
1997-12-03 0:00 ` Billy Chambless
1997-12-03 0:00 ` Robert Dewar
1997-12-05 0:00 ` John Sullivan
1997-11-18 0:00 ` Kevin Swan
1997-11-29 0:00 ` Ingemar Ragnemalm
1998-09-10 0:00 ` Steven Katz
1997-11-19 0:00 ` Peter Seebach
1997-11-19 0:00 ` Alan E & Carmel J Brain [this message]
1997-10-16 0:00 ` Randy MacDonald
[not found] ` <01bcdad2$fa9fdf60$25a43a91@basil.omroep.nl>
1997-10-17 0:00 ` D'Arcy J.M. Cain
1997-10-17 0:00 ` Robert I. Eachus
1997-10-13 0:00 ` Robert S. White
1997-10-13 0:00 ` Gary L. Scott
1997-10-13 0:00 ` Matthew Heaney
1997-10-14 0:00 ` Gary L. Scott
1997-10-19 0:00 ` William Rapp
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox