Paul Hsieh said:
Nonsense. You don't substantiate even *one* counter-claim.
You didn't substantiate even one of the original claims. Of course, I
happen to have been an active member of the committee who attended
nearly all the meetings, and I don't remember you attending even one.
So my unsubstantiated claims might be just a tad more credible than
yours.
[...] There is *no* part of C99 that
has not been implemented. Many parts were implemented before they were
standardized.
*Sigh*. *OBVIOUSLY*. But that's a ridiculously low bar.
But it belies your claim that implementability was not considered.
They had to make sure that the whole she-bang could be all done at
once.
Which it obviously can, since there are a number of fulling conforming
C99 compilers.
But its obvious from looking at the Intel effort and the gcc
effort (both groups, being *motivated* to implement C99) that
something stopped each of them. In the end you end up with just a
couple of marginal C99 implementations which can only do so because
they are so marginal that they don't have any backward compatibility
problems to deal with.
Hardly. According to Intel, their C compiler conforms to C99 except
that long double is not supported. I assume that means that they intend
to support long double in the future but have not gotten around to it
yet and didn't want to have binary compatibility problems down the road.
Otherwise, since there's no requirement that long double actually be any
longer than double, they could have just made it a synonym for double
and been fully conforming. In addition, I understand that there a
number of fully conforming implementations -- Comeau C w/ Dinkumware
library, IBM C for AIX, HP C, and SGI C -- at least some of which are
not "so marginal that they don't have any backward compatibility
problems to deal with."
You have to be kidding me. Complex numbers that are incompatible with
C++?!?!
They're not incompatible. They're different, but they're not
incompatible. It's not at all difficult to write code that is valid in
both languages.
Randomly positioned declarations?
Intermixed declarations and code was one of the most requested features,
probably second only to // comments. Many programmers really like
declaring at first use, no matter how "nonsensical" it seems to you.
[re. GCC not participating in the ISO standards committee being bad]
I agree. So what the hell is the committee planning on doing about
it?
That's not the committee's job. In fact, it would probably go against
the rules. Participation is open to all, but actively soliciting one
vendor would open the committee to complaints from other vendors who
were not solicited and raise questions about the fairness of the
process.
What? First of all, if you need to *deal* with complex numbers in a
non-trivial manner (like implementing trigonometry, or numerical
integration or something like that), you better *BE* good enough to
implement your own complex number library.
You don't need to know how to implement a library to know how to use
one.
And you are saying the embedded/driver applications have a great need
for really marginal and difficult to implement complex numbers?
No -- freestanding implementations (which is what most embedded/driver
applications use) are not required to implement complex. The committee
is not stupid, no matter what you think.
C++ is the *path* to take C forward. It means that the areas that
they carve out should be solved by them, and the C standard committee
should accept this fact. This is the only, and best way for them to
remain relevant. This lack of consideration for C++ has help *cause*
C99 to be ignored by end-users.
C99 made a concerted effort to remain compatible with C++ without either
reinventing C++ or giving up on making any enhancements to C. If you
want C++, you know where to find it, but true booleans and complex types
are quite useful in C without all the rest of the C++ baggage. And they
*are* compatible with C++; not identical, but compatible.
[various suggestions for future enhancements to C]
So make a formal proposal to the committee. It's easy to toss around
ideas, it's a lot of hard work to flesh out all the details, make sure
it's portable to all the environments C is used in, come up with the
appropriate "standardeese" to describe it, make sure you've covered all
the interactions with other parts of the standard, etc. The committee
members are all quite busy with their own ideas, thanks.
And that ignores what the C standard committee *should* do just for
sanity reasons (fix the ftell/fseek nonsense, fix the time APIs to be
non-static and >= 64 bits).
We can't change existing APIs in a way that would break binary
compatibility -- that would guarantee that no one implement it. (That's
why we were essentially forced to adopt long long rather than just
mandating that long be at least 64 bits.) The best we could do would
probably be to adopt ftello/fseeko, but that also requires adopting
off_t and requires much care to align with POSIX. Since most systems
already support POSIX, I'm not sure what the actual benefit would be.
Time handling is a known problem: the committee tried to address it in
C99, but it's complicated (there are lots of conflicting requirements)
and we weren't able to come up with a significantly better solution in
the time available. David Tribble has since done a lot of work in this
area (<
http://david.tribble.com/letters.html>) and I expect his
proposals to receive serious attention in the next revision.
-Larry Jones
I don't think math is a science, I think it's a religion. -- Calvin