Karl said:
I see your point and I agree: it's not that big of a deal.
But I also see Beth's point and she has a point there:
Why have a special rule for something which really is not
a problem and just brings up confusion?
You're actually not totally getting my point exactly...these
"exceptions to the rule" are _cumulative_ because of "backwards
compatibility"...what is "not a big deal" now will come back as a
right royal pain in the arse later...just ask Intel with their
ludicrously horrible and ugly layout for the instruction set encodings
of the x86 chips...that's what happens when you insist on being
"backwards compatible" for going on three decades...where you can't
remove...where you can't redefine...where you can't do much of
anything but _add_ on yet more "exceptions" to cover
"exceptions"..."patches" over "patches"...blah-blah-blah...
With all due respect to our Microsoft representative, Windows 9x also
demonstrates the eventually absurdity of this mode of thinking...yes,
it _is_ "tolerable" now...but you're not giving a thought for
later...and that's when it really, really starts hurting..."backwards
compatibility" _will_ eventually come back to haunt you, if you're not
_incredibly careful_ not to set up future problems for yourself...
If somebody would bring up a vote, if this rule should be
dropped, I would vote with a loud and clear: YES!
There's no point in doing so...and it's dubious as to whether all such
"exceptions" are capable of being dropped...
When you make a commitment to "backwards compatibility", you're
signing a contract to only _add_ new things...never remove, never
change (in any radical way), never redefine...if you do any of these
things, then your "backwards compatibility" is highly likely to become
broken...
Even if there were a vote and somehow a means to drop this (or some
similar construction) were to happen, it would have no practical
effect...Microsoft, GNU, Borland, etc. will still keep these things
because of the contracts they have implicitly signed to be "backwards
compatible"...
Just like Sage's "void main"...it _has_ been dropped and it's _NOT_ in
the standard...but Sage is right that they'll all accept it, anyway...
This is the message I was trying to deliver..."backwards
compatibility" is a _contract_ to follow a policy of never changing or
redefining or dropping any of the past in any way...the notion and the
words "backwards compatibility" are often almost worshipped as
gods...but, in this world, there is always a price...and making a
guarantee to people is an implicit _contract_ to them, which you
cannot break in good Faith...
Compilers get changed, millions of programmers spend 30 seconds
on adding the missing return 0; and can turn to more important
things afterward. The standard gets corrected and gets shortened
(IMHO a good thing) and compiler writes don't have to spend a thought
about a special case in the data flow analysis for checking if a function
actually returns something in all cases except main(). But other then
that: the earth still revolves the same way.
But I agree: It is certainly not a topic to make a big fuzz about.
I'll see you all in three decades' time (presuming C++ survives that
long...though I see no reason why it shouldn't, looking at other
things for comparison) and see if you're still carrying that same
opinion...
I guess that Intel and Microsoft probably also thought "oh, this is
only a minor thing, it's not worth making a fuss over" every time they
added yet another ugly patch over an ugly patch...they no longer think
that way, in general...Intel are going for "lateral compatibility"
rather than "backwards" for their 64-bit chips (that is, the 64-bit
core is NOT x86 compatible...instead, they include both a x86 and a
64-bit core)...and Microsoft take a lot more care in defining their
standards and such correct the first time around rather than their old
style of "oh, just patch the patch"...recently announcing that they'd
like to crop the tens of thousands of API down to 8,000, if
possible...
You _still_ pay with "backwards compatibilty"...it's just a "pay
later" scheme, is all...again, feel free to ignore me - I'm used to
it - but I'm supremely confident in the basic message here...it's
self-evident if you only think it over fully...
Beth