jacob said:
a little tongue in cheek...
Yes but, as you say in the next line:
I submit you can usually keep the *compiler* extensions down to a dull
roar (as opposed to library extensions)
There you are. Extensions ARE needed, and all languages and improvements
of software were born as extensions of some other stuff.
The C language?
Was an "extension" of BCPL,
yes but you were no longer coding BCPL. I'm not against innovation-
I've used
Python I'm looking at Perl. Innovation is good. But if you use every
goody in
your current compiler you may have problems later.
This is a very useful extension, one that I have included also in the
lcc-win32 compiler. As you can see useful extensions are that: USEFUL
we didn't use it. In fact the compiler documentation *specifically*
warned
against it (it was needed in some system headers).
and they tend to be copied by other compiler, and eventually they make
it into the standard, if the commitee agrees on "existing practice"...
It is a stupid course because:
but we got the system running *without* using the extension.
If you change the layout of the structures you have to modify ALL THOSE
LINES in your code that access that particular field!!!!!
Instead of all that work, your code A.c still works NO MATTER WHERE in
the structure you change the layout!
so don't nest structs or unions
You understand now?
Extensions are NOT just evil stuff that compiler writers find out to
"lock their users in" but are USEFUL for certain situations!
but they effectivly lock you in. Every file in a large project I know
has some
#ifdef magic in it because HP and MS do their precompiled headers
differently.
There are some pretty obscure systems out there and your choice of
compilers may be limited. PSos, Telematics-TRAX, VersaDos
When these age and die you port them to Linux. The less compiler
specific stuff you've indulged in the less pain you suffer.
Some day our old Sun based stuff may migrate to Windows. Same
argument. Some systems live a long time and entire technologies can
wax and wane ovwer their lifetime.
So innovate by all means I'll continue to use (and encourage others) to
be cautious with *unneeded* extensions.