469,266 Members | 1,803 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,266 developers. It's quick & easy.

Storgae durations

what is the difference between the tree storage
durations(static,automatic and dynamic) in C?
Aug 16 '08
241 5674
On Mon, 25 Aug 2008 15:44:47 -0500, ja*********@verizon.net wrote
(in article
<18**********************************@79g2000hsk.g ooglegroups.com>):
Randy Howard wrote:
>On Mon, 25 Aug 2008 14:05:40 -0500, ja*********@verizon.net wrote
(in article
<5f**********************************@d77g2000hsb .googlegroups.com>):
>>Randy Howard wrote:
...
But, we can't pretend that gcc is what determines C99 availability
The vast majority of software development done for hire involves a
Windows platform of some flavor. Like it or not, it still has a huge
market share.

Microsoft has a huge share of the desktop market. However, there's a
lot more to the C programming world than the desktop market, and
Microsoft's share of the mainframe and embedded markets, for instance,
is much smaller (non-existent?).

You seem to be conveniently forgetting all the Windows servers out
there as well.

No, I'm just remembering all of those Unix and Unix-like servers out
there. I can't give you any solid numbers for market shares - do you
have any?
Not directly. Looking through half a dozen "jobs" sites for software
dev jobs shows a preponderance of positions in the wintel space
though. Not one word about mainframes, and a few embedded jobs. A
lot web, and database jobs that could be on any platform, and heaps
and heaps of .NET and MS-specific acronym jobs. Not authoritative,
but enough to show it's at least a major player as far as programmer
headcount, imo. ymmv.


Aug 25 '08 #201
Randy Howard wrote:
On Mon, 25 Aug 2008 15:44:47 -0500, ja*********@verizon.net wrote
(in article
<18**********************************@79g2000hsk.g ooglegroups.com>):
Randy Howard wrote:
On Mon, 25 Aug 2008 14:05:40 -0500, ja*********@verizon.net wrote
(in article
<5f**********************************@d77g2000hsb. googlegroups.com>):
....
>Microsoft has a huge share of the desktop market. However, there's a
lot more to the C programming world than the desktop market, and
Microsoft's share of the mainframe and embedded markets, for instance,
is much smaller (non-existent?).

You seem to be conveniently forgetting all the Windows servers out
there as well.
No, I'm just remembering all of those Unix and Unix-like servers out
there. I can't give you any solid numbers for market shares - do you
have any?

Not directly. Looking through half a dozen "jobs" sites for software
dev jobs shows a preponderance of positions in the wintel space
though. Not one word about mainframes, and a few embedded jobs. A
lot web, and database jobs that could be on any platform, and heaps
and heaps of .NET and MS-specific acronym jobs. Not authoritative,
but enough to show it's at least a major player as far as programmer
headcount, imo. ymmv.
The last time I did a serious job search, it was pretty difficult to
distinguish jobs involved C programming from jobs involving C++. Many
search engines would produce the same results for "C" and for "C++".
Many of them would return every job using any word that started with
"c", regardless of length. No search engine I tried gave me an easy
way to search for "C", excluding "C++". Many employers would use the
term "C/C++", when what they actually needed was either a C programmer
or a C++ programmer, but they didn't need someone skilled in both
languages (often the employers themselves were unaware of the fact
that they didn't need someone with both skill sets). Have the newer
sites made any improvement in this regard? If not, it could be very
difficult to use job listings to distinguish a Microsoft "C"
predominance from a Microsoft "C++" or "C#" predominance.
I have decades of paid C programming experience, but only a couple of
weeks of very-recently acquired paid C++ programming experience, and
very little unpaid experience in C++, so this will be an important
issue in my next job search.
Aug 25 '08 #202
Randy Howard wrote:
....
Taking a slightly different tack than Richard's question, can anyone
post a piece of C source code using a reasonable selection of "new
for C99" features (which must include at least VLAs) which will
compile and work equivalently across more than one C compiler, and
for more than one operating system? A set of test cases to validate
it is working equivalently on each would be worth bonus stars next to
your name.

If such code can be written, and people here can compile it and see
it run on multiple platforms and compilers, that would be a much more
convincing argument than "I heard it from a friend, who heard it from
a friend, that somewhere there is a real C99 compiler, so we should
all feel free to use C99 extensions".
As jacob has demonstrated, your challenge is not sufficiently well
specified. He provided code which meets your specification, but only
very weakly supports the concept that there is a usable "nearly
conforming" C99 implementation. His code declares a VLA, but makes no
actual use of it, thereby very neatly side-stepping all the issues
related to the fact that the most commonly available compilers fail to
implement all VLA features correctly, and that different commonly
available compilers differ with regard to the ways in which they fail.
Only an idiot would think that such code proves that VLAs are well-
implemented by the compilers that can compile it, but the code does
meet your challenge.

The gcc "Status of C99" web page says:
Some details of variable length arrays (VLAs) relating to when size expressions are evaluated and when the
memory for VLAs is freed are not implemented, and other details are not checked against the requirements of
the C99 standard.
I can't tell from that description what precisely it is that gcc gets
wrong; and the second clause implies that gcc people themselves do not
know for sure, either. The second clause is the main reason I couldn't
use VLAs in any code that I was putting to serious use. For less
serious use, given the above description, I'd have to be very careful
about any use of sizeof, getjmp/longjmp, goto, or anything remotely
resembling Duff's Device in the vicinity of a gcc VLA. Except for
sizeof, that's not a serious restriction. However, I can easily
imagine wanting to pass "sizeof myvla" to a function like memcpy();
having to use "rows*cols*sizeof myvla[0][0]" rather than "sizeof
myvla" would be a pain, and a bit of a maintenance problem too.

I'm sure that someone who did know the exact nature of gcc's defective
handling of VLAs would be able to write a program that makes extensive
and sophisticated use of VLAs without ever triggering any of the
defects. Of course, the danger is that the next person who maintains
such code who knows less than the original designer about the nature
of gcc's defects could easily make a change that triggers one of them.
In the worst case, the resulting failures could easily be both silent
and too subtle to be easily noticed.

Aug 25 '08 #203
On Mon, 25 Aug 2008 18:42:58 -0500, ja*********@verizon.net wrote
(in article
<11**********************************@s50g2000hsb. googlegroups.com>):
Randy Howard wrote:
...
>Taking a slightly different tack than Richard's question, can anyone
post a piece of C source code using a reasonable selection of "new
for C99" features (which must include at least VLAs) which will
compile and work equivalently across more than one C compiler, and
for more than one operating system? A set of test cases to validate
it is working equivalently on each would be worth bonus stars next to
your name.

If such code can be written, and people here can compile it and see
it run on multiple platforms and compilers, that would be a much more
convincing argument than "I heard it from a friend, who heard it from
a friend, that somewhere there is a real C99 compiler, so we should
all feel free to use C99 extensions".

As jacob has demonstrated, your challenge is not sufficiently well
specified. He provided code which meets your specification,
Only for incredibly weak interpretations of "a reasonable selection
of new for C99 features". I didn't take his response seriously.
but only
very weakly supports the concept that there is a usable "nearly
conforming" C99 implementation. His code declares a VLA, but makes no
actual use of it, thereby very neatly side-stepping all the issues
related to the fact that the most commonly available compilers fail to
implement all VLA features correctly, and that different commonly
available compilers differ with regard to the ways in which they fail.
Exactly.
Only an idiot would think that such code proves that VLAs are well-
implemented by the compilers that can compile it
We are in total agreement on that point.
Aug 26 '08 #204
On Aug 25, 6:11 am, Richard Heathfield <rj*@see.sig.invalidwrote:
s0****@gmail.com said:
Richard Heathfield wrote:
s0****@gmail.com said:
Richard Heathfield wrote:
I don't need any evidence, because I know I'm right.
But the rest of us don't :-(

Right, which is why I supplied evidence to support my view. Not for my
benefit, but for other people's.
You didn't *supply* evidence; you *mentioned* the evidence, which is,
unfortunately, not sufficiently convincing to make a strong and
reasonable argument.
Moreover, some of us believe you're wrong.

Yes, I know you do, and it's quite clear that no amount of evidence is
going to change your mind. I can live with that.
No only me. And perhaps no amount of mentioned evidence will do that,
but maybe some clearly presented evidence would.
<snip>
There are some subscribers to this group who wouldn't trust me to get
the day right - but since they can't actually read with any degree of
comprehension, I'm not overly concerned with any lack of faith they
might express in my eye-witness account of the paucity of C99
installations, and I probably wouldn't even get to read such an
expression anyway.
I'm not sure who you mean by those subscribers who you claim can't
read with any degree of comprehension,

Yes, I know - but *I'm* sure who I mean.
but the interesting point is
*why* you would claim they can't read with any degree of
comprehension.

Simple - it's because they have demonstrated this on countless occasions.
If it is because they don't believe in your so-called
eye-witness evidence,

No, it's because they can't read with any degree of comprehension.
Well, that's not much of an answer. The one you gave above, "because
they have demonstrated this on countless occasions" *is* a valid and
reasonable answer, but I don't know who "they" are, nor do I know when
they have demonstrated that, so I can't comment on whether it's true
or not.
I would argue they can read with a higher degree
of comprehension than anyone who would believe in your so-called eye-
witness evidence, since it is potentially unsafe and stupid to believe
in anyone's so-called eye-witness evidence without having actually
seen that so-called eye-witness evidence.

It is clear from your reply that you still don't understand the nature of
eye-witness evidence, even though it has been explained to you several
times.
It sure has been explained, but regardless of who understands it, no
such evidence has been presented.
Most people know full well that there's hardly any C99 conformance out
there in the field, so those who are maximally or at least very highly
concerned with portability will necessarily stick to the common subset
of C90 and C99.
I think people who are highly concerned with portability can stick
with the current standard.

The current de facto standard, yes. Not the de jure standard, since there
aren't sufficiently many C99 installations to make that feasible -
*unless* the portability is only required across C99 installations, in
which case it's obviously just fine to rely on C99 features.
I think it's clear that we don't agree on what the current standard
means, even though the dictionary disagrees with you, but hey, you've
got your own terminology...
If they need more portability in terms of
cross-machine compiler availability than C99 offers, well, they can go
with C90, but that isn't normally the case.

You have not demonstrated this, and I don't believe it to be true. Can you
convince me by providing evidence? For example, you could tell us whether
you've actually encountered any C99 installations in the field (and note
that I do not mean "not-quite-C99", for reasons that have already been
explained ad nauseam).
It depends on what you mean by "C99 installation" (is that term in the
standard?). There's for example GCC, Intel, Sun, lcc-win, etc. Though
I don't have the intention of giving an exhaustive list; anyone can
find that out on his own.
Reported observations [of C99 installations in the field]? If you're
talking about /your/ reported observations, remember that not everyone
of us can see through your mind.
I agree that not everyone has the wit to understand what "reported
observations" means.
Yes, especially when those "reported observations" haven't actually
been reported.

They have been, in this case. I reported them. Let me do so again. I have
been using C since the summer of 1989. Obviously *nobody* encountered any
C99 implementations in the period from 1989 up to the point where ISO
finalised the Standard in late 1999, but I report that I have never
observed a single C99 installation, *ever*, including the period from 1999
to the present day. Not once. Every conforming C installation I have seen
has been C90-conforming but none of them has been C99-conforming.
Do you mean "installation" as in "a compiler installed on an actual
machine"? If yes, then that report is surely valid--it simply shows
that you work on systems where there haven't been C99 installations
(which sounds a little unrealistic since some OSs actually come with
one pre-installed). But reports like this are hardly useful; anyone
could come and say the same thing about installations of a compiler
for any standard!
Have you any counter-examples whatsoever? Have *you* ever encountered a
conforming C99 installation? Even one?
With the definition of "installation" as described above, yes: Intel.
But again, that's hardly a useful comment.
/My/ observations, on the other hand, do make my claim
plausible.
No, they don't, because you don't understand what you're observing.
You have not enough knowledge about me to know what I understand or
not.

My knowledge about you is based purely on what you write here, and it is on
that basis that I draw the conclusion that you don't understand what
you're observing.
Then your knowledge about me is mistaken.
<snip>
Since the standard does not define the term "non-conforming C99
implementation," then the meaning of that term is subject to what
everyone of us thinks about it.
Yes, you can interpret "non-conforming C99 implementation" any way you
like. That doesn't necessarily make your interpretation useful or
meaningful to others.
Funny, because the only person who has objected about the usability of
that term so far is you.

Wrong. "In the context of a debate over whether or not compilers that fully
conform to the C90 standard are overwhelmingly more common than compilers
that fully conform to the C99 standard, using a term that doesn't clearly
identify the compiler as conforming to at least one of those two standards
is not very useful." - James Kuyper, in message
<dc**********************************@l42g2000hsc. googlegroups.com>
Right. That makes it... TWO people!

Also note that he mentioned that the term wasn't very useful _in the
context_ that he specified.
<snip>
The claim was:
"But if this newsgroup is any guide, by far the majority of people who
use the term "C99 implementation" use it to mean a /conforming/ C99
implementation - and apart from Usenet, ISO committee meetings, and
the odd Web page the term is rarely, if ever, used at all."
No research has been done to back this up, and common sense stands out
against it.

In this very thread, people have presented research that backs this up.
Here's an example, and it's James Kuyper again: "A quick Google Groups
search gives an estimated 880 uses of "C99 implementation" across all
newsgroups. Among the first 100 hits, the only ones that I could find
using that term to refer to an implementation which falls short of being
fully conforming are by you and jacob navia. A large fraction of those
hits involve arguments about that very issue, in this newsgroup."

Message ID:
<38**********************************@a1g2000hsb.g ooglegroups.com>
The very first sentence is wrong. A Google Groups search across all
newsgroups gives an estimated 17,600 uses of "C99 installation." And I
did find people other than me and Jacob Navia who used the term as he
described:

http://groups.google.com/groups/sear...implementation
<snip>
The trouble with pointing out the "falsehood" of something that is
pretty obviously true is that, unless you can demonstrate to other
people's satisfaction that you're right, people tend to think you're
talking nonsense. For example, it is pretty obviously true that the
world is approximately spherical - someone who claims that that
observation is false is setting himself up to be thought a crank unless
he can provide a rigorous demonstration that he's right.
Sure, it's obviously true that the world is (approximately) spherical.

Not to the Flat Earth Society. (Their home page appears to be
http://www.alaska.net/~clund/e_djubl...rthsociety.htm although
I can't guarantee this.)
Well, it was your comment :-)
But that isn't nearly related to this case since your claim is not
obviously true,

It is to most of us. Your views seem as odd to me and to others here
But not to everybody.
as
those of a Flat Earther would seem to you.
Err... to us! :-)
and it would take some (corrupted) lawyer work to back it up.

No, it wouldn't take any lawyer work. The claim has already been backed up,
by other people here, none of whom is a corrupted lawyer (or indeed a
lawyer of any kind) as far as I am aware. Now, the backing up of such a
claim with evidence does not of itself make it *true* - it simply makes
the claim more likely to be true. If you wish to attack the claim, fine,
but to convince people that you're right you will need to do more than
simply claim "it's false". You need to demonstrate why it's false. If you
can *prove* it's false, fine - do it. But if not, you should at least be
able to provide plausible *evidence* that it's false, and you have not yet
done this.
True, because I believe it to be hardly possible to prove (and so too
for the opposite). And little "evidences" that simply make the claim a
little bit more likely to be true are nearly useless and don't achieve
anything in the end.
<snip>
If you want people to believe that the claim is false, you will need to
find a way to demonstrate this.
Obviously not all C programmers agree with that, as this thread shows.

Neither did I claim that they all do. For one thing, there are at least
three people, possibly four, in this very group who are prepared to
disagree with just about any claim I make, no matter how unexceptionable
it might be.
You talk as if those people who disagree with you would just do it out
of stubbornness. But even if those three or four people do, I'm
certain they're not the only ones that would disagree with what you
said.
Nevertheless, the research presented in this thread - not by
me, but by others participating in this discussion - does suggest very
strongly that I'm right.
Well, at least the research you mentioned by James Kuyper was
mistaken, as I explained above.

Sebastian

Aug 26 '08 #205
s0****@gmail.com said:
On Aug 25, 6:11 am, Richard Heathfield <rj*@see.sig.invalidwrote:
>s0****@gmail.com said:
Richard Heathfield wrote:
s0****@gmail.com said:
Richard Heathfield wrote:
I don't need any evidence, because I know I'm right.
But the rest of us don't :-(

Right, which is why I supplied evidence to support my view. Not for my
benefit, but for other people's.

You didn't *supply* evidence;
You still don't understand what evidence is.

<snip>
If they need more portability in terms of
cross-machine compiler availability than C99 offers, well, they can go
with C90, but that isn't normally the case.

You have not demonstrated this, and I don't believe it to be true. Can
you convince me by providing evidence? For example, you could tell us
whether you've actually encountered any C99 installations in the field
(and note that I do not mean "not-quite-C99", for reasons that have
already been explained ad nauseam).

It depends on what you mean by "C99 installation"
I am sure I've explained this several times already. Still, here we go
again. I mean a copy of a conforming C99 implementation that has actually
been installed on a particular machine. If "conforming C99 implementation"
were a type, it would be an object of that type.
(is that term in the standard?).
No - it's a term I concocted to describe the concept of a C99
implementation that a particular programmer is actually using, to make it
easier to talk about the very important fact that, simply because (say)
EDG has a conforming C99 implementation, that doesn't mean that everybody
in the world has access to a C99 implementation. The proportion of C99
implementations to C90 implementations gives you a guide to how seriously
implementors take C99 (i.e. not very), but the proportion of C99
*installations* to C90 installations tells you how seriously *programmers*
take C99 (i.e. not even remotely).
There's for example GCC, Intel, Sun, lcc-win, etc.
Neither gcc nor lcc-win are conforming C99 implementations, and therefore
any installation of gcc or lcc-win is not a C99 installation.
Though
I don't have the intention of giving an exhaustive list; anyone can
find that out on his own.
You failed to provide even an *accurate* list, let alone an exhaustive one
- half the entries on it were wrong.
Do you mean "installation" as in "a compiler installed on an actual
machine"?
****** APPLAUSE!!! ******
If yes, then that report is surely valid
Could it be that you are beginning to understand what eye-witness evidence
is?
--it simply shows
that you work on systems where there haven't been C99 installations
My claim is broader than that. I'm saying that in all the time I've been
using C, I have never once seen a single copy of a C99 compiler installed
on *any* machine on *any* site where I've worked - and I've been around
the block a few times, I assure you. I don't just mean the machines I've
used - I mean all the other machines in the place too. No C99 - zip, nada,
nil, ne C99 pas. Not a single installation. Not even a little one.
(which sounds a little unrealistic since some OSs actually come with
one pre-installed).
Name two. In fact, name one. (Note that gcc is not a C99 implementation, so
Linux certainly doesn't count.)
But reports like this are hardly useful;
I disagree.
anyone
could come and say the same thing about installations of a compiler
for any standard!
Anyone who has never seen a C90 installation clearly has no C experience
worth speaking of, since C90 implementations are widespread and have been
for almost twenty years. But C99 installations are another matter. I've
never seen one, and neither has Randy Howard (another very experienced C
programmer). Nobody who has taken part in this discussion, as far as I'm
aware, has ever seen one. Actually, that rather surprises me. I would have
guessed that at least one regular comp.lang.c contributor might have seen
/one/ C99 installation. But nobody has so far come forward to say so. The
evidence on your side is so sparse that it is currently non-existent.
>Have you any counter-examples whatsoever? Have *you* ever encountered a
conforming C99 installation? Even one?

With the definition of "installation" as described above, yes: Intel.
But again, that's hardly a useful comment.
On the contrary, it's revelatory. You have actually claimed, for the very
first time, to have witnessed the existence of an actual C99
implementation installed on an actual machine. Now, I won't be so churlish
as to disbelieve you - I will accept the veracity of the eye-witness
evidence that you have just provided - but I invite you to compare this
figure of... ONE... with the number of C90 installations you've seen.

If you have only ever seen ONE C90 installation, then your experience of C
is certainly insufficient to justify the claims you are making about it.
And if you have seen more than one, then it would seem that even you must
realise that the number of C90 installations outnumbers the number of C99
installations, and consequently it can hardly be "usual" for new C
developments to be undertaken using C99.
/My/ observations, on the other hand, do make my claim
plausible.
>No, they don't, because you don't understand what you're observing.
You have not enough knowledge about me to know what I understand or
not.

My knowledge about you is based purely on what you write here, and it is
on that basis that I draw the conclusion that you don't understand what
you're observing.

Then your knowledge about me is mistaken.
In which case the inescapable conclusion is that what you write here is
also mistaken, because it is on that writing that my knowledge of you is
based.

<snip>
>Yes, you can interpret "non-conforming C99 implementation" any way
you like. That doesn't necessarily make your interpretation useful or
meaningful to others.
Funny, because the only person who has objected about the usability of
that term so far is you.

Wrong. "In the context of a debate over whether or not compilers that
fully conform to the C90 standard are overwhelmingly more common than
compilers that fully conform to the C99 standard, using a term that
doesn't clearly identify the compiler as conforming to at least one of
those two standards is not very useful." - James Kuyper, in message
<dc**********************************@l42g2000hsc .googlegroups.com>

Right. That makes it... TWO people!
You said I was the only one. I produced a counter-example that proves you
wrong. Keith Thompson is another (see his reply, parallel to yours, in
which he points this out). And bear in mind that others who may otherwise
have objected refrained from doing so because they had seen that James and
Keith had already voiced that view (this is good Usenet practice).

<snip>
>Here's an example, and it's James Kuyper again: "A quick Google Groups
search gives an estimated 880 uses of "C99 implementation" across all
newsgroups. Among the first 100 hits, the only ones that I could find
using that term to refer to an implementation which falls short of being
fully conforming are by you and jacob navia. A large fraction of those
hits involve arguments about that very issue, in this newsgroup."

Message ID:
<38**********************************@a1g2000hsb. googlegroups.com>

The very first sentence is wrong.
No, you just misread it - understandably, in this case. The quotation marks
around "C99 implementation" are significant.
A Google Groups search across all
newsgroups gives an estimated 17,600 uses of "C99 installation."
Searching for:
C99 implementation
in Google Groups, I get 17,600 hits, as you say.

Searching for:
"C99 implementation"
in Google Groups, I get 958 hits. Clearly we've used the term a number of
times since James did his research.
And I
did find people other than me and Jacob Navia who used the term as he
described:

http://groups.google.com/groups/sear...implementation
I'm not about to plough through 17600 hits looking for one that backs you
up. If such an article exists, please provide a reference to it.

<snip>
>If you wish to attack the claim,
fine, but to convince people that you're right you will need to do more
than simply claim "it's false". You need to demonstrate why it's false.
If you can *prove* it's false, fine - do it. But if not, you should at
least be able to provide plausible *evidence* that it's false, and you
have not yet done this.

True, because I believe it to be hardly possible to prove
If you can't show that it's false or at least defend the claim that it's
false, you have no business saying it's false. Doing so just makes you a
laughing-stock.

<snip>
You talk as if those people who disagree with you would just do it out
of stubbornness.
Yes. Now, a great many people disagree with me when I'm wrong or at least
not obviously right - Keith Thompson, Chris Torek, David Thompson, the
lower-case santosh, Martin Ambuhl, Dann Corbit, Ben Pfaff, James Kuyper,
Larry Jones, and plenty more besides. But there are some people who
disagree with me not because I'm wrong (or not obviously right) but
because they're either stupid or malicious or both (and "both" seems the
most likely). It's a small handful of people, but quite a noisy bunch.
>Nevertheless, the research presented in this thread - not by
me, but by others participating in this discussion - does suggest very
strongly that I'm right.

Well, at least the research you mentioned by James Kuyper was
mistaken, as I explained above.
No, it wasn't mistaken at all. You simply misinterpreted it.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Aug 26 '08 #206
Randy Howard wrote:
On Mon, 25 Aug 2008 18:42:58 -0500, ja*********@verizon.net wrote
(in article
<11**********************************@s50g2000hsb. googlegroups.com>):
Randy Howard wrote:
...
Taking a slightly different tack than Richard's question, can anyone
post a piece of C source code using a reasonable selection of "new
for C99" features (which must include at least VLAs) which will
compile and work equivalently across more than one C compiler, and
for more than one operating system? A set of test cases to validate
it is working equivalently on each would be worth bonus stars next to
your name.

If such code can be written, and people here can compile it and see
it run on multiple platforms and compilers, that would be a much more
convincing argument than "I heard it from a friend, who heard it from
a friend, that somewhere there is a real C99 compiler, so we should
all feel free to use C99 extensions".
As jacob has demonstrated, your challenge is not sufficiently well
specified. He provided code which meets your specification,

Only for incredibly weak interpretations of "a reasonable selection
of new for C99 features". I didn't take his response seriously.
My point is that your specification allows that weak of an
interpretation. Until you make it more specific, he's going to have no
trouble "meeting" your specification.
Aug 26 '08 #207
On Aug 25, 10:47 pm, Richard Heathfield <rj*@see.sig.invalidwrote:
s0****@gmail.com said:
On Aug 25, 6:11 am, Richard Heathfield <rj*@see.sig.invalidwrote:
s0****@gmail.com said:
Richard Heathfield wrote:
s0****@gmail.com said:
Richard Heathfield wrote:
I don't need any evidence, because I know I'm right.
But the rest of us don't :-(
Right, which is why I supplied evidence to support my view. Not for my
benefit, but for other people's.
You didn't *supply* evidence;

You still don't understand what evidence is.
You snipped a relevant part. The rest continued as: "you *mentioned*
the evidence, which is, unfortunately, not sufficiently convincing to
make a strong and reasonable argument."
<snip>
If they need more portability in terms of
cross-machine compiler availability than C99 offers, well, they can go
with C90, but that isn't normally the case.
You have not demonstrated this, and I don't believe it to be true. Can
you convince me by providing evidence? For example, you could tell us
whether you've actually encountered any C99 installations in the field
(and note that I do not mean "not-quite-C99", for reasons that have
already been explained ad nauseam).
It depends on what you mean by "C99 installation"

I am sure I've explained this several times already. Still, here we go
again. I mean a copy of a conforming C99 implementation that has actually
been installed on a particular machine. If "conforming C99 implementation"
were a type, it would be an object of that type.
(is that term in the standard?).

No - it's a term I concocted to describe the concept of a C99
implementation that a particular programmer is actually using, to make it
easier to talk about the very important fact that, simply because (say)
EDG has a conforming C99 implementation, that doesn't mean that everybody
in the world has access to a C99 implementation. The proportion of C99
implementations to C90 implementations gives you a guide to how seriously
implementors take C99 (i.e. not very), but the proportion of C99
*installations* to C90 installations tells you how seriously *programmers*
take C99 (i.e. not even remotely).
Well, you have talked about /your/ observations of C99 installations.
And that's perfect. But not everybody has the same observations as
you, so you can't say the same thing about all C programmers by basing
on those observations.
There's for example GCC, Intel, Sun, lcc-win, etc.

Neither gcc nor lcc-win are conforming C99 implementations, and therefore
any installation of gcc or lcc-win is not a C99 installation.
Well, you hadn't specified that you meant a conforming C99
implementation.
Though
I don't have the intention of giving an exhaustive list; anyone can
find that out on his own.

You failed to provide even an *accurate* list, let alone an exhaustive one
- half the entries on it were wrong.
Only because I'm not familiar with your private terminology, and
therefore can't speak fluently using it.
Do you mean "installation" as in "a compiler installed on an actual
machine"?

****** APPLAUSE!!! ******
If yes, then that report is surely valid

Could it be that you are beginning to understand what eye-witness evidence
is?
It's probably that I'm finally getting to understand your very
intimate terminology!
--it simply shows
that you work on systems where there haven't been C99 installations

My claim is broader than that. I'm saying that in all the time I've been
using C, I have never once seen a single copy of a C99 compiler installed
on *any* machine on *any* site where I've worked - and I've been around
the block a few times, I assure you. I don't just mean the machines I've
used - I mean all the other machines in the place too. No C99 - zip, nada,
nil, ne C99 pas. Not a single installation. Not even a little one.
How is that different from the conclusion I made? It's simply that:
you haven't seen any. That raises some rather interesting questions
about the places where you've worked...
(which sounds a little unrealistic since some OSs actually come with
one pre-installed).

Name two. In fact, name one. (Note that gcc is not a C99 implementation, so
Linux certainly doesn't count.)
It is a C99 implementation, so it counts (and not only Linux, but
other UNIX variants like Mac OS X and Solaris).
But reports like this are hardly useful;

I disagree.
anyone
could come and say the same thing about installations of a compiler
for any standard!

Anyone who has never seen a C90 installation clearly has no C experience
worth speaking of, since C90 implementations are widespread and have been
for almost twenty years. But C99 installations are another matter. I've
never seen one, and neither has Randy Howard (another very experienced C
programmer). Nobody who has taken part in this discussion, as far as I'm
aware, has ever seen one. Actually, that rather surprises me. I would have
guessed that at least one regular comp.lang.c contributor might have seen
/one/ C99 installation. But nobody has so far come forward to say so. The
evidence on your side is so sparse that it is currently non-existent.
Anyone who has worked on a UNIX variant has been in front of a C99
installation (unless, of course, we're talking about /your/ definition
for "C99 installation").
Have you any counter-examples whatsoever? Have *you* ever encountered a
conforming C99 installation? Even one?
With the definition of "installation" as described above, yes: Intel.
But again, that's hardly a useful comment.

On the contrary, it's revelatory. You have actually claimed, for the very
first time, to have witnessed the existence of an actual C99
implementation installed on an actual machine. Now, I won't be so churlish
as to disbelieve you - I will accept the veracity of the eye-witness
evidence that you have just provided - but I invite you to compare this
figure of... ONE... with the number of C90 installations you've seen.
I've seen only two C90 installations. See? Not a very useful comment.
If you have only ever seen ONE C90 installation, then your experience of C
is certainly insufficient to justify the claims you are making about it.
No. The experience of someone as a C programmer isn't based on the
number of C installations that that person has seen. For example, a
person who has never been introduced to C might see 10 C installations
in one day, while another person might have been working with C using
only one installation during several years.
And if you have seen more than one, then it would seem that even you must
realise that the number of C90 installations outnumbers the number of C99
installations, and consequently it can hardly be "usual" for new C
developments to be undertaken using C99.
The fact that there are more installations of C90 doesn't mean that
most new C development is done in C90. I, for example, and according
to your definition of "installation," have seen the double of C90
installations than C99 installations (i.e., 2 vs. 1), and yet most new
C development I've started has been in C99. Of course, this is just a
minimal example, but it shows that the fact that there are more
installations of compilers for a particular standard doesn't imply
that most new development takes place using that standard.
/My/ observations, on the other hand, do make my claim
plausible.
No, they don't, because you don't understand what you're observing.
You have not enough knowledge about me to know what I understand or
not.
My knowledge about you is based purely on what you write here, and it is
on that basis that I draw the conclusion that you don't understand what
you're observing.
Then your knowledge about me is mistaken.

In which case the inescapable conclusion is that what you write here is
also mistaken, because it is on that writing that my knowledge of you is
based.
Which only means that you have misinterpreted the statements in that
writing.
<snip>
Yes, you can interpret "non-conforming C99 implementation" any way
you like. That doesn't necessarily make your interpretation useful or
meaningful to others.
Funny, because the only person who has objected about the usability of
that term so far is you.
Wrong. "In the context of a debate over whether or not compilers that
fully conform to the C90 standard are overwhelmingly more common than
compilers that fully conform to the C99 standard, using a term that
doesn't clearly identify the compiler as conforming to at least one of
those two standards is not very useful." - James Kuyper, in message
<dc**********************************@l42g2000hsc. googlegroups.com>
Right. That makes it... TWO people!

You said I was the only one. I produced a counter-example that proves you
wrong. Keith Thompson is another (see his reply, parallel to yours, in
which he points this out).
Sure, you proved me wrong and now we've got... would you believe it,
THREE people!!
And bear in mind that others who may otherwise
have objected refrained from doing so because they had seen that James and
Keith had already voiced that view (this is good Usenet practice).
We could say the same about the opinion I and Jacob Navia have.
<snip>
Here's an example, and it's James Kuyper again: "A quick Google Groups
search gives an estimated 880 uses of "C99 implementation" across all
newsgroups. Among the first 100 hits, the only ones that I could find
using that term to refer to an implementation which falls short of being
fully conforming are by you and jacob navia. A large fraction of those
hits involve arguments about that very issue, in this newsgroup."
Message ID:
<38**********************************@a1g2000hsb.g ooglegroups.com>
The very first sentence is wrong.

No, you just misread it - understandably, in this case. The quotation marks
around "C99 implementation" are significant.
A Google Groups search across all
newsgroups gives an estimated 17,600 uses of "C99 installation."

Searching for:
C99 implementation
in Google Groups, I get 17,600 hits, as you say.

Searching for:
"C99 implementation"
in Google Groups, I get 958 hits. Clearly we've used the term a number of
times since James did his research.
I see... but why in heaven's sake would someone search for something
using quotation marks?
And I
did find people other than me and Jacob Navia who used the term as he
described:
http://groups.google.com/groups/sear...implementation

I'm not about to plough through 17600 hits looking for one that backs you
up.
Neither am I :-(
If such an article exists, please provide a reference to it.

<snip>
If you wish to attack the claim,
fine, but to convince people that you're right you will need to do more
than simply claim "it's false". You need to demonstrate why it's false.
If you can *prove* it's false, fine - do it. But if not, you should at
least be able to provide plausible *evidence* that it's false, and you
have not yet done this.
True, because I believe it to be hardly possible to prove

If you can't show that it's false or at least defend the claim that it's
false, you have no business saying it's false. Doing so just makes you a
laughing-stock.
By that token, we're both a laughing-stock, since neither of us has
been able to fully prove our claims.
<snip>
You talk as if those people who disagree with you would just do it out
of stubbornness.

Yes. Now, a great many people disagree with me when I'm wrong or at least
not obviously right - Keith Thompson, Chris Torek, David Thompson, the
lower-case santosh, Martin Ambuhl, Dann Corbit, Ben Pfaff, James Kuyper,
Larry Jones, and plenty more besides. But there are some people who
disagree with me not because I'm wrong (or not obviously right) but
because they're either stupid or malicious or both (and "both" seems the
most likely). It's a small handful of people, but quite a noisy bunch.
But like I said, I'm certain that in this case they're not just that
noisy bunch the ones who disagree with you.
Nevertheless, the research presented in this thread - not by
me, but by others participating in this discussion - does suggest very
strongly that I'm right.
Well, at least the research you mentioned by James Kuyper was
mistaken, as I explained above.

No, it wasn't mistaken at all. You simply misinterpreted it.
"Well," "I'm" "not" "used" "to" "live" "in" "a" "world" "where"
"people" "make" "their" "searches" "with" "quotation" "marks" "around"
"the" "words"!

Sebastian

Aug 26 '08 #208
s0****@gmail.com writes:
On Aug 25, 10:47 pm, Richard Heathfield <rj*@see.sig.invalidwrote:
[...]
>You failed to provide even an *accurate* list, let alone an exhaustive one
- half the entries on it were wrong.

Only because I'm not familiar with your private terminology, and
therefore can't speak fluently using it.
How many times do we have to explain to you that most of us use the
term "C99 implementation" to refer to a *fully conforming*
implementation of the C99 language?

Seriously, how many times? Give us a number.

[...]
It's probably that I'm finally getting to understand your very
intimate terminology!
Well, that's a relief ...

[...]
>Name two. In fact, name one. (Note that gcc is not a C99 implementation, so
Linux certainly doesn't count.)

It is a C99 implementation, so it counts (and not only Linux, but
other UNIX variants like Mac OS X and Solaris).
.... or maybe not.

gcc is not a C99 implementation. gcc is a *partial* C99
implementation.

[...]
Anyone who has worked on a UNIX variant has been in front of a C99
installation (unless, of course, we're talking about /your/ definition
for "C99 installation").
Anyone who has ever been to a horse farm has been in front of a
unicorn (unless, of course, we're talking about /your/ definition for
"unicorn").

[...]
I've seen only two C90 installations. See? Not a very useful comment.
Only two? Seriously? There are at least two in the room I'm sitting
in (and it's not a big room).

[...]
>Searching for:
"C99 implementation"
in Google Groups, I get 958 hits. Clearly we've used the term a number of
times since James did his research.

I see... but why in heaven's sake would someone search for something
using quotation marks?
Um, because they're significant in Google searches. Searching for
"C99 implementation" with quotation marks finds pages containing the
phrase "C99 implementation"; without the quotation marks, it finds
pages containing the word "C99" and the word "implementation".

[...]

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Aug 26 '08 #209
On Aug 26, 3:20 am, Keith Thompson <ks***@mib.orgwrote:
s0****@gmail.com writes:
On Aug 25, 10:47 pm, Richard Heathfield <rj*@see.sig.invalidwrote:
[...]
You failed to provide even an *accurate* list, let alone an exhaustive one
- half the entries on it were wrong.
Only because I'm not familiar with your private terminology, and
therefore can't speak fluently using it.

How many times do we have to explain to you that most of us use the
term "C99 implementation" to refer to a *fully conforming*
implementation of the C99 language?
Like I've said, I don't think that "most" of us use the term that way
(not always, of course), and none of us has been able to prove for or
against it. Getting to know the ng, I realize that most people here do
use the term that way. So if by "most" you mean the people here, then
you're probably right.
Seriously, how many times? Give us a number.
None, since it's not a matter of understanding.
>
It's probably that I'm finally getting to understand your very
intimate terminology!

Well, that's a relief ...
For Richard, sure...
[...]
Name two. In fact, name one. (Note that gcc is not a C99 implementation, so
Linux certainly doesn't count.)
It is a C99 implementation, so it counts (and not only Linux, but
other UNIX variants like Mac OS X and Solaris).

... or maybe not.

gcc is not a C99 implementation. gcc is a *partial* C99
implementation.
That's a way to see it. Some people would sometimes refer to GCC as a
C99 implementation only for brevity. Some others would refer to it as
a C99 implementation because it has implemented it and has only minor
failures.
[...]
Anyone who has worked on a UNIX variant has been in front of a C99
installation (unless, of course, we're talking about /your/ definition
for "C99 installation").

Anyone who has ever been to a horse farm has been in front of a
unicorn (unless, of course, we're talking about /your/ definition for
"unicorn").
What guarantees that a horse farm has a unicorn?

<snip>
>
Searching for:
"C99 implementation"
in Google Groups, I get 958 hits. Clearly we've used the term a number of
times since James did his research.
I see... but why in heaven's sake would someone search for something
using quotation marks?

Um, because they're significant in Google searches. Searching for
"C99 implementation" with quotation marks finds pages containing the
phrase "C99 implementation"; without the quotation marks, it finds
pages containing the word "C99" and the word "implementation".
With quotation marks, does it find the phrase "C99 implementation"
*including* the quotation marks (i.e., the " characters at the start
and end of the words)? Or does it simply find the phrase "C99
implementation" excluding the quotation marks?

Sebastian

Aug 26 '08 #210
s0****@gmail.com said:
On Aug 26, 3:20 am, Keith Thompson <ks***@mib.orgwrote:
>s0****@gmail.com writes:
On Aug 25, 10:47 pm, Richard Heathfield <rj*@see.sig.invalidwrote:
[...]
>You failed to provide even an *accurate* list, let alone an
exhaustive one - half the entries on it were wrong.
Only because I'm not familiar with your private terminology, and
therefore can't speak fluently using it.

How many times do we have to explain to you that most of us use the
term "C99 implementation" to refer to a *fully conforming*
implementation of the C99 language?

Like I've said, I don't think that "most" of us use the term that way
(not always, of course),
You and your two colleagues aren't necessarily a representative sample of
the entire C programming community.
and none of us has been able to prove for or
against it. Getting to know the ng, I realize that most people here do
use the term that way.
Hallelujah.
So if by "most" you mean the people here, then you're probably right.
He is.

<snip>
>gcc is not a C99 implementation. gcc is a *partial* C99
implementation.

That's a way to see it. Some people would sometimes refer to GCC as a
C99 implementation only for brevity. Some others would refer to it as
a C99 implementation because it has implemented it and has only minor
failures.
By that token, Turbo C is a C99 implementation (and yet it was written
about a decade before C99 was published). We covered this before.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Aug 26 '08 #211
[Correction]

Richard Heathfield said:
s0****@gmail.com said:
<snip>
>>
No. The experience of someone as a C programmer isn't based on the
number of C installations that that person has seen.

I agree, but their experience of C as it is used in the community cannot
help but be limited if they've only ever seen two C99 installations.
Here, of course, I meant to type "C90", not "C99". (I am not the first in
this thread to make this particular typographical error.)
--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Aug 26 '08 #212
s0****@gmail.com wrote:
On Aug 25, 6:11 am, Richard Heathfield <rj*@see.sig.invalidwrote:
>s0****@gmail.com said:
>>Richard Heathfield wrote:
s0****@gmail.com said:
Richard Heathfield wrote:
I don't need any evidence, because I know I'm right.
But the rest of us don't :-(
Right, which is why I supplied evidence to support my view. Not for my
benefit, but for other people's.

You didn't *supply* evidence; you *mentioned* the evidence, which is,
unfortunately, not sufficiently convincing to make a strong and
reasonable argument.
It seems to me that he did supply the evidence. Perhaps if you gave an
example of the difference you see between "supplying" and "mentioning"
evidence, he could find a way say exactly the same thing he's already
said in terms that would allow you to recognize it as "supplying" evidence.

....
Also note that he mentioned that the term wasn't very useful _in the
context_ that he specified.
I don't think it's useful in general, either, but I thought it might be
easier for you to accept my statement as true if I restricted it's
applicability.

....
>In this very thread, people have presented research that backs this up.
Here's an example, and it's James Kuyper again: "A quick Google Groups
search gives an estimated 880 uses of "C99 implementation" across all
newsgroups. Among the first 100 hits, the only ones that I could find
using that term to refer to an implementation which falls short of being
fully conforming are by you and jacob navia. A large fraction of those
hits involve arguments about that very issue, in this newsgroup."

Message ID:
<38**********************************@a1g2000hsb. googlegroups.com>

The very first sentence is wrong. A Google Groups search across all
newsgroups gives an estimated 17,600 uses of "C99 installation."
The term I was discussing was "C99 implementation", not "C99
installation". You'll find lots of computer people using the second
term; the first term is likely to be used mainly by people interested in
and knowledgeable of the C standard.
Aug 26 '08 #213
s0****@gmail.com wrote:
On Aug 25, 10:47 pm, Richard Heathfield <rj*@see.sig.invalidwrote:
>s0****@gmail.com said:
>>On Aug 25, 6:11 am, Richard Heathfield <rj*@see.sig.invalidwrote:
s0****@gmail.com said:
Richard Heathfield wrote:
>s0****@gmail.com said:
>>Richard Heathfield wrote:
....
>>(which sounds a little unrealistic since some OSs actually come with
one pre-installed).
Name two. In fact, name one. (Note that gcc is not a C99 implementation, so
Linux certainly doesn't count.)

It is a C99 implementation, so it counts (and not only Linux, but
other UNIX variants like Mac OS X and Solaris).
It does not fully conform to the C99 standard, which is the only sense
in which I or Richard Heathfield or many other people in this newsgroup
use the term "C99 implementation". I will graciously acknowledge that it
matches your misuse of the term to refer to nearly-conforming
implementations, but such implementations are not relevant to Richard
Heathfields comments.

....
Anyone who has worked on a UNIX variant has been in front of a C99
installation (unless, of course, we're talking about /your/ definition
for "C99 installation").
I've worked on many Unix variants that didn't even have what you would
call a C99 installation, much less a compiler that actually qualifies a
a C99 installation. Possibly you think that C99 is older than it really
is? Or possibly that Unix is younger than it really is?

....
>Searching for:
C99 implementation
in Google Groups, I get 17,600 hits, as you say.

Searching for:
"C99 implementation"
in Google Groups, I get 958 hits. Clearly we've used the term a number of
times since James did his research.

I see... but why in heaven's sake would someone search for something
using quotation marks?
Because a search for "C99 implementation" retrieves only those messages
which contain the phrase "C99 implementation", which is what we were
discussing. Without the quotation marks, it retrieves any message that
contains both the word "C99" and the word "implementation", even if
those words are nowhere near each other. Why would you do the search
without the quotation marks? Don't you know anything about how to use
search engines? This is a common feature on a wide variety of them.

....
>>Well, at least the research you mentioned by James Kuyper was
mistaken, as I explained above.
No, it wasn't mistaken at all. You simply misinterpreted it.

"Well," "I'm" "not" "used" "to" "live" "in" "a" "world" "where"
"people" "make" "their" "searches" "with" "quotation" "marks" "around"
"the" "words"!
You need to learn more about the features of typical search engines.
Aug 26 '08 #214
s0****@gmail.com writes:
On Aug 26, 3:20 am, Keith Thompson <ks***@mib.orgwrote:
[...]
>gcc is not a C99 implementation. gcc is a *partial* C99
implementation.

That's a way to see it. Some people would sometimes refer to GCC as a
C99 implementation only for brevity. Some others would refer to it as
a C99 implementation because it has implemented it and has only minor
failures.
The vast majority of participants in this newsgroup use the term "C99
implementation" only to refer to fully conforming C99 implementations.
Your refusal to admit that any usage other than your own is valid is,
I think, a large part of what's led to this tedious discussion.

[...]
>Anyone who has ever been to a horse farm has been in front of a
unicorn (unless, of course, we're talking about /your/ definition for
"unicorn").

What guarantees that a horse farm has a unicorn?
If you define a "C99 implementation" as something that implements most
of C99, without further specifying that it must implement all of C99,
C99 implementations are easy to find.

If you define a "unicorn" as a horse-like animal, without further
specifying that it has a long horn on its forehead, unicorns are easy
to find.

In both cases, I find the hypothetical definitions misleading because
they leave out important factors.
<snip>
>>
>Searching for:
"C99 implementation"
in Google Groups, I get 958 hits. Clearly we've used the term a number of
times since James did his research.
I see... but why in heaven's sake would someone search for something
using quotation marks?

Um, because they're significant in Google searches. Searching for
"C99 implementation" with quotation marks finds pages containing the
phrase "C99 implementation"; without the quotation marks, it finds
pages containing the word "C99" and the word "implementation".

With quotation marks, does it find the phrase "C99 implementation"
*including* the quotation marks (i.e., the " characters at the start
and end of the words)? Or does it simply find the phrase "C99
implementation" excluding the quotation marks?
Since this isn't an appropriate forum for
discssing how to use Google, I'll just refer you to
<http://www.googleguide.com/quoted_phrases.html>. (In the future,
you might consider not ridiculing things you don't understand.)

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Aug 26 '08 #215
In article <ln************@nuthaus.mib.org>,
Keith Thompson <ks***@mib.orgwrote:
>s0****@gmail.com writes:
>On Aug 26, 3:20 am, Keith Thompson <ks***@mib.orgwrote:
[...]
>>gcc is not a C99 implementation. gcc is a *partial* C99
implementation.

That's a way to see it. Some people would sometimes refer to GCC as a
C99 implementation only for brevity. Some others would refer to it as
a C99 implementation because it has implemented it and has only minor
failures.

The vast majority of participants in this newsgroup use the term "C99
implementation" only to refer to fully conforming C99 implementations.
Where the term "vast majority" means about 10 (out of hundreds of total
participants). These 10 are the so-called "regs" - and it is they who
do most of the posting.

No sane person defines things the way that Keith does - but the regs
certainly do.

Aug 26 '08 #216
On Aug 26, 8:27*am, James Kuyper <ja*********@verizon.netwrote:
s0****@gmail.com wrote:
<snip>
In this very thread, people have presented research that backs this up..
Here's an example, and it's James Kuyper again: "A quick Google Groups
search gives an estimated 880 uses of "C99 implementation" across all
newsgroups. Among the first 100 hits, the only ones that I could find
using that term to refer to an implementation which falls short of being
fully conforming are by you and jacob navia. A large fraction of those
hits involve arguments about that very issue, in this newsgroup."
Message ID:
<38**********************************@a1g2000hsb.g ooglegroups.com>
The very first sentence is wrong. A Google Groups search across all
newsgroups gives an estimated 17,600 uses of "C99 installation."

The term I was discussing was "C99 implementation", not "C99
installation". You'll find lots of computer people using the second
term; the first term is likely to be used mainly by people interested in
and knowledgeable of the C standard.
Yes, sorry, that was a mistake in my post, but not in the search I
did; I did search for "C99 implementation" (not for "C99
installation"), as shown by the link I provided, and it did yield
17,600 results (without the quotaton marks).

Sebastian

Aug 26 '08 #217
Flash Gordon wrote:
....
So how many of those implementations will build the following C99
program and execute it correctly:

#include <stdio.h>
#include <math.h>

int main(void)
{
printf("%f\n",atan2(1,1));
}

The nearest thing I have to a C99 implementation certainly does not.
That's very odd. Can you tell me which feature of C99 it fails to
implement correctly to make that fail?
To save you some trouble I'll let you know that it does not build on Linux.
It builds on my CentOS Linux system with gcc 3.2.3, both in C90
conforming mode and in the closest thing gcc has to a c99 conforming
mode. In C90 mode it gives a warning message about control reaching
the end of a non-void function, but it still compiles, links, and
executes correctly.

On my Irix 6.5 system, using gcc 3.3, it gives the warning for both
C90 and C99, but still compiles and executes correctly. The Irix mips4
compiler has no problem either, despite being only a C90 compiler (in
the version we have installed). It makes a remark about the missing
return statement, but still compiles, links, and executes the program
properly.
Aug 26 '08 #218
ja*********@verizon.net writes:
Flash Gordon wrote:
...
>So how many of those implementations will build the following C99
program and execute it correctly:

#include <stdio.h>
#include <math.h>

int main(void)
{
printf("%f\n",atan2(1,1));
}

The nearest thing I have to a C99 implementation certainly does not.

That's very odd. Can you tell me which feature of C99 it fails to
implement correctly to make that fail?
[...]

It failed for me as well. I was about to post an answer; I'm really
glad I took the time to check the C90 standard before posting.

I suspect both Flash and I made the same mistake: assuming that atan2
is new in C99 (it isn't; C90 has it), and ... drum roll please ...
forgetting to use the "-lm" option.

D'oh!

(But I've *already* read the FAQ!)

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Aug 27 '08 #219
ja*********@verizon.net wrote, On 27/08/08 00:15:
Flash Gordon wrote:
...
>So how many of those implementations will build the following C99
program and execute it correctly:

#include <stdio.h>
#include <math.h>

int main(void)
{
printf("%f\n",atan2(1,1));
}

The nearest thing I have to a C99 implementation certainly does not.

That's very odd. Can you tell me which feature of C99 it fails to
implement correctly to make that fail?
<snip>

My brain. I should not try building SW after a long day. However,
someone else has posted something which does fail.
--
Flash Gordon
Aug 27 '08 #220
Keith Thompson wrote, On 27/08/08 02:54:
ja*********@verizon.net writes:
>Flash Gordon wrote:
...
>>So how many of those implementations will build the following C99
program and execute it correctly:

#include <stdio.h>
#include <math.h>

int main(void)
{
printf("%f\n",atan2(1,1));
}

The nearest thing I have to a C99 implementation certainly does not.
That's very odd. Can you tell me which feature of C99 it fails to
implement correctly to make that fail?
[...]

It failed for me as well. I was about to post an answer; I'm really
glad I took the time to check the C90 standard before posting.

I suspect both Flash and I made the same mistake: assuming that atan2
is new in C99 (it isn't; C90 has it), and ... drum roll please ...
forgetting to use the "-lm" option.

D'oh!
Indeed. Some of the problems reported on the gcc page would not cause
failure to compile just incorrect results which could be worse.
(But I've *already* read the FAQ!)
I've read that part of the FAQ as well. Oops.
--
Flash Gordon
Aug 27 '08 #221
Keith Thompson wrote:
I suspect both Flash and I made the same mistake: assuming that atan2
is new in C99 (it isn't; C90 has it), and ... drum roll please ...
forgetting to use the "-lm" option.

D'oh!

(But I've *already* read the FAQ!)
Well, it happens EACH time I restart compiling under
Unix after a fewmonths vacation from it.

I have told many times here that this is brain-dead!

WHY should we have to add the math library to the
command line?

It should be included by default!

--
jacob navia
jacob at jacob point remcomp point fr
logiciels/informatique
http://www.cs.virginia.edu/~lcc-win32
Aug 27 '08 #222
ja*********@verizon.net wrote:
Flash Gordon wrote:
...
>So how many of those implementations will build the following C99
program and execute it correctly:

#include <stdio.h>
#include <math.h>

int main(void)
{
printf("%f\n",atan2(1,1));
}

The nearest thing I have to a C99 implementation certainly does not.

That's very odd. Can you tell me which feature of C99 it fails to
implement correctly to make that fail?
>To save you some trouble I'll let you know that it does not build on Linux.

It builds on my CentOS Linux system with gcc 3.2.3, both in C90
conforming mode and in the closest thing gcc has to a c99 conforming
mode. In C90 mode it gives a warning message about control reaching
the end of a non-void function, but it still compiles, links, and
executes correctly.

On my Irix 6.5 system, using gcc 3.3, it gives the warning for both
C90 and C99, but still compiles and executes correctly. The Irix mips4
compiler has no problem either, despite being only a C90 compiler (in
the version we have installed). It makes a remark about the missing
return statement, but still compiles, links, and executes the program
properly.
Mr Gordon was trying to be too clever...
It is perfectly legal program and will compile everywhere.
--
jacob navia
jacob at jacob point remcomp point fr
logiciels/informatique
http://www.cs.virginia.edu/~lcc-win32
Aug 27 '08 #223
jacob navia wrote:
Keith Thompson wrote:
>I suspect both Flash and I made the same mistake: assuming that atan2
is new in C99 (it isn't; C90 has it), and ... drum roll please ...
forgetting to use the "-lm" option.

D'oh!

(But I've *already* read the FAQ!)

Well, it happens EACH time I restart compiling under
Unix after a fewmonths vacation from it.

I have told many times here that this is brain-dead!

WHY should we have to add the math library to the
command line?

It should be included by default!
The standard says nothing about this. What command line options, if any,
that you have to give to a compiler to make it fully conform to the
standard is the implementor's decision, not the standard's. There are
some compilers for which "-lm" is supported only for backwards
compatibility with existing make files and build scripts - it doesn't
actually do anything.

The fact that it is not the default on many systems is mainly a
historical artifact. Many programs make no use whatsoever of the math
library. In the past, the extra time required to search the math
libraries for symbols that the developer knew weren't going to be used
was unacceptable. The C99 math library is a lot larger than the C90 one,
but computers are so much faster now that this is no longer a
significant issue on most systems.
Aug 27 '08 #224
jacob navia said:
Keith Thompson wrote:
<snip>
>forgetting to use the "-lm" option.

D'oh!

(But I've *already* read the FAQ!)

Well, it happens EACH time I restart compiling under
Unix after a fewmonths vacation from it.

I have told many times here that this is brain-dead!
For what it's worth, I agree with you on this issue, but you're complaining
in the wrong place. We can't do anything about it. If you want the GNU
guys to fix the problem, tell the GNU guys about the problem.
WHY should we have to add the math library to the command line?
Ask the GNU guys.
It should be included by default!
Tell the GNU guys.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Aug 27 '08 #225
On Aug 27, 12:55 pm, jacob navia <ja...@nospam.comwrote:
Keith Thompson wrote:
I suspect both Flash and I made the same mistake: assuming that atan2
is new in C99 (it isn't; C90 has it), and ... drum roll please ...
forgetting to use the "-lm" option.
D'oh!
(But I've *already* read the FAQ!)

Well, it happens EACH time I restart compiling under
Unix after a fewmonths vacation from it.

I have told many times here that this is brain-dead!

WHY should we have to add the math library to the
command line?

It should be included by default!
Just alias gcc to gcc -lm.
Having an option to include the math library is IMHO a lot better than
having an option to exclude the math library.
Aug 27 '08 #226
vi******@gmail.com wrote:
On Aug 27, 12:55 pm, jacob navia <ja...@nospam.comwrote:
>Keith Thompson wrote:
>>I suspect both Flash and I made the same mistake: assuming that atan2
is new in C99 (it isn't; C90 has it), and ... drum roll please ...
forgetting to use the "-lm" option.
D'oh!
(But I've *already* read the FAQ!)
Well, it happens EACH time I restart compiling under
Unix after a fewmonths vacation from it.

I have told many times here that this is brain-dead!

WHY should we have to add the math library to the
command line?

It should be included by default!

Just alias gcc to gcc -lm.
Having an option to include the math library is IMHO a lot better than
having an option to exclude the math library.
Why you would want to exclude the math library?

If you do not use it, nothing will be linked in into
your program. What could be the point of doing that?

--
jacob navia
jacob at jacob point remcomp point fr
logiciels/informatique
http://www.cs.virginia.edu/~lcc-win32
Aug 27 '08 #227
s0****@gmail.com said:
On Aug 26, 4:58 am, Richard Heathfield <rj*@see.sig.invalidwrote:
Perhaps I don't understand /your/ personal definition of "evidence."
I don't have a personal definition of "evidence". I use the word in the
canonical way. See Chambers, for example: "evidence: information that
gives grounds for belief; that which points to, reveals, or suggests
something".

<snip>
>Yes, I know. You seem to have failed yet again to grasp the essential
point, which is that IF C99 were as prevalent as you say, I'd have
expected to see, personally, AT LEAST one or two C99 installations out
there. The fact that I haven't does not prove that C99 is not prevalent,
but it does suggest to me that it's very, very, very unlikely indeed.
And those who have had similar non-encounters are going to think the
same way.

No, it only suggests that you work on weird places where things aren't
ported to.
Actually, I spend most of my time in places where portability is rated very
highly. But even if I didn't, I'd still expect to have seen at least one
or two C99 installations at some point over the last few years, if C99
were as prevalent as you claim. But I haven't, and I consider this to be
good evidence that you're wrong. It's not conclusive evidence, of course,
but your case is not helped by the fact that another experienced C
programmer has added that he hasn't ever come across a C99 installation in
the field either. What's more, I don't think anyone here has actually said
that they *have* come across a C99 installation. Presumably *someone* has,
and perhaps they just haven't got around to mentioning it yet - but if C99
were the dominant C dialect in new development, I'd have expected a lot of
people to pitch in and say "yeah, we use EDG at work" or "5 VisualAge
installations on our site", or whatever it is. Wouldn't you?
>
There's for example GCC, Intel, Sun, lcc-win, etc.
>Neither gcc nor lcc-win are conforming C99 implementations, and
therefore any installation of gcc or lcc-win is not a C99
installation.
Well, you hadn't specified that you meant a conforming C99
implementation.

Yes, I did, because - as I have explained before - if it doesn't conform
to C99, it isn't a C99 implementation. Duh. This is so blindingly
obvious I can't believe you still don't get it.

I can't believe you still don't get that your opinion isn't universal.
<grinThat isn't the problem. The problem is that you can't believe that
*your* opinion is not universal.
WAKE UP RICHARD.
I'm awake, and I'm using the term "C99 implementation" in the obvious way,
the way that most people I know who use it, use it. I only know of two
people who don't use the term the same way I do, and you're one of them.
>The same "private terminology" is used by practically everyone here,

Yes, but clc isn't the whole world.
Sure. Nevertheless, you are one of only two people I know who use the term
"C99 implementation" to mean "not a C99 implementation". Everyone else I
have ever come across who uses the term uses it to mean "an implementation
of the C programming language that conforms to ISO/IEC 9899:1999".
>and
newbies normally pick it up without any trouble.

Of course, newbies will pick up whatever you tell them--because
they're newbies.
Not *all* newbies, it seems.

<snip>
I'd rather not becaome a clc zealot.
I'm not asking you to become a zealot of any kind. I'm just asking you to
make more of an effort to communicate effectively.

<snip>
>Your conclusion is that C99 is dominant. Mine is that it is practically
non-existent.

No, my conclusion was that, according to your reported observations,
C99 wasn't very common in the environment where you've worked.
No, it wasn't "not very common"; it was non-existent, in *any* and *every*
environment I've ever been in.
It has little to do with C99 being or not being dominant.
Of course it has plenty to do with that. Do the math.

Or perform this thought experiment. There is a large quantity of coloured
beads in a bag, but you don't know how many. (Arbitrary conditions
restrict you from examining more than one at a time, so you can't just
pour all the beads out on the floor. You are, however, assured that the
beads are thoroughly mixed.) Someone tells you most of the beads are red,
but he admits that a few are green. (No other colours need be considered.)
You pull one out. It's green. You pull another one out. It's green. You
pull another one out. It's green. And another - green. And more - green,
green, green, green, green, green, green. How many do you have to pull out
before you realise that your informant is talking nonsense?

That's a serious question. How many? Clearly it would be unfair to reject
his hypothesis after seeing just one. Or two. Or even four or five. That
might just be how the beads fall. But how many green beads must you see
before you reject the hypothesis that red beads are prevalent? Do the
math.
It's simply that:
you haven't seen any. That raises some rather interesting questions
about the places where you've worked...

My background includes consultancies at a number of UK banks and
insurance companies, a number of software houses, an airline, and a
couple of startups. If what you claim about C99 dominance is true, I
would have expected to see DOZENS of C99 installations.

What kinds of systems do they use that C99 isn't available there?
For C99 to be "available" on a particular computer, there are two
requirements, one of which depends on the other:

(1) a C99 implementation (by which I mean an implementation of C that
conforms to ISO/IEC 9899:1999) must exist for the platform;
(2) a copy of that implementation must have been installed on that
computer, or at least on a computer to which that one has access and which
allows remote compilation. This is what I mean by "C99 installation".

Even in cases where (1) is the case, (2) is sufficiently rare that I've
never seen it happen, not even on sites where "everything's a PC running
Windows" or "everything's a PC running Linux".
(which sounds a little unrealistic since some OSs actually come
with one pre-installed).
>Name two. In fact, name one. (Note that gcc is not a C99
implementation, so Linux certainly doesn't count.)
It is a C99 implementation, so it counts

No, it isn't, so it doesn't.

Umm...

It is, so it does.
gcc does *not* conform to ISO/IEC 9899:1999, much as you might like to
pretend otherwise.
Anyone who has worked on a UNIX variant has been in front of a C99
installation (unless, of course, we're talking about /your/ definition
for "C99 installation").

We are. Your definition is useless, since it includes bananas, cough
medicine, the Suez Crisis, and the Metropolitan District of South
Humberside.

I've never said anything like that.
No, and I didn't say you had, but you *have* said that you consider
something that doesn't conform to C99 to be a C99 implementation. None of
the items in that bizarre list conform to C99. Nevertheless, by /your/
definition of "C99 implementation", they all qualify.
>Have you any counter-examples whatsoever? Have *you* ever
encountered a conforming C99 installation? Even one?
With the definition of "installation" as described above, yes:
Intel. But again, that's hardly a useful comment.
>On the contrary, it's revelatory. You have actually claimed, for the
very first time, to have witnessed the existence of an actual C99
implementation installed on an actual machine. Now, I won't be so
churlish as to disbelieve you - I will accept the veracity of the
eye-witness evidence that you have just provided - but I invite you
to compare this figure of... ONE... with the number of C90
installations you've seen.
I've seen only two C90 installations.

This demonstrates (a) that your experience of the C programming
community is insufficiently broad for your comments to be taken
seriously,

No, because the experience of someone as a C programmer has nothing to
do with the number of C installations they've seen, as I explained
below.
We're not talking about your experience as a C programmer. We're talking
about your experience of the C programming community, the community about
which you make such confident claims.
>and (b)
that even in your limited experience, C90 is twice as prevalent as C99.

If your definition of "prevalent" is "the standard for which one has
seen more installations."
Are you saying that you define "prevalent" as "the standard for which one
has seen least installations"? Because that's how it's coming across.
<snip>
>If you have only ever seen ONE C90 installation, then your experience
of C is certainly insufficient to justify the claims you are making
about it.
No. The experience of someone as a C programmer isn't based on the
number of C installations that that person has seen.

I agree, but their experience of C as it is used in the community cannot
help but be limited if they've only ever seen two C99 installations. For
one thing, it means that they've only worked at one site with one other
C programmer, or perhaps at two sites where in each case they were the
*only* C programmer.

I don't know what you mean by "site."
Come back in twenty years, when you've got some real world experience.

<snip>
For example, a
person who has never been introduced to C might see 10 C installations
in one day, while another person might have been working with C using
only one installation during several years.

Agreed, but the fact that he hasn't seen any others indicates that he's
working alone without any other C programmers around him, in which case
he is not in a position to judge the prevalence or otherwise of C99.

What makes you think that using only one implementation indicates that
someone is working alone? In a project in the Windows environment, for
example, it's common to see the whole team using MSVC.
In which case that's a whole team's worth of MSVC installations. If it's a
time of five, and they each have a copy of MSVC, that's five MSVC
installations. Do you still not realise this?

(Note that MSVC conforms to C90, but not to C99, and note that MSVC has a
huge mindshare in the Windows-based C programming community. It is used
for a vast proportion of new C development on Windows.)

<snip>
You talk as if every person in
the world would use a different C implementation.
s/implementation/installation/ - if I'm using MSVC on my computer, you
can't be using MSVC on my computer. You can, however, be using MSVC on
*your* computer. Sheesh, why do we have to explain everything to you six
times over?
I, for example, and according
to your definition of "installation," have seen the double of C90
installations than C99 installations (i.e., 2 vs. 1), and yet most new
C development I've started has been in C99. Of course, this is just a
minimal example,

No, it's just pathetic.

In the context of this discussion, yes. But you're the one who keeps
worshipping personal expiriences.
No, I'm merely the one who keeps saying that you can't ignore personal
experience. You, on the one hand, don't have any to speak of, which is
presumably why you are seeking to ignore its importance.
Moreover, you snipped the part that
*wasn't* pathetic: "but it shows that the fact that there are more
installations of compilers for a particular standard doesn't imply
that most new development takes place using that standard."
I agree, but as I've already explained, the almost total ABSENCE of
installations of compilers for a particular standard doesn't bode well
either!

>
But, like Twink has mentioned, your whole modus operandi involves
snipping the relevant parts that prove you wrong. He's got you spot
on! :-)
You're already in an extraordinarily weak position. Relying on idiots like
Twink will only weaken it further.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Aug 27 '08 #228
s0****@gmail.com said:

<snip>
The second
sentence proves that [James Kuyper] isn't able to find stuff since, among
those very first 100 hits, there *are* people other than me and Jacob
Navia who have used the mentioned term to refer to an implementation
which falls short of being fully conforming. Here is the counter-example:

http://groups.google.com/group/comp....64bc633d9b1db?

(Someone named E. Robert Tisdale
ROTFL!

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Aug 27 '08 #229
s0****@gmail.com wrote:
On Aug 26, 4:58 am, Richard Heathfield <rj*@see.sig.invalidwrote:
....
Perhaps I don't understand /your/ personal definition of "evidence."
It's not particularly personal. You haven't explained adequately what
"supplying evidence" means to you, such that what he's done fails to
qualify. If you could give an example of "supplying evidence", that
might help us understand how you are misunderstanding the term.

....
>The same "private terminology" is used by practically everyone here,

Yes, but clc isn't the whole world.
True, but it is highly representative of that very tiny fraction of the
world that is ever likely to use the phrase "C99 implementation". In
fact, a noticeable fraction of that tiny group of people probably post here.

....
>My background includes consultancies at a number of UK banks and insurance
companies, a number of software houses, an airline, and a couple of
startups. If what you claim about C99 dominance is true, I would have
expected to see DOZENS of C99 installations.

What kinds of systems do they use that C99 isn't available there?
In this context, "isn't available" can be interpreted in two different
way. One meaning is that it is not installed, and that is all that
Richard Heathfield is saying. The other meaning is "could not be
installed, even if the owners wanted it to be". I just wanted to make
sure that you weren't misinterpreting his statement as implying that C99
was unavailable in the second sense.

....
>>Anyone who has worked on a UNIX variant has been in front of a C99
installation (unless, of course, we're talking about /your/ definition
for "C99 installation").
We are. Your definition is useless, since it includes bananas, cough
medicine, the Suez Crisis, and the Metropolitan District of South
Humberside.

I've never said anything like that. Could you please provide a quote
from one of my posts where I say that my definition includes bananas,
cough medicine, the Suez Crisis, and the Metropolitan District of
South Humberside?
Do any of those fully conform to the C99 standard? The only requirement
you've specified for applicability of the phrase "C99 implementation" is
that fully conforming to the C99 standard is NOT required. If you have
any additional requirements, you've yet to specify them.

Understand, I fully realize that you do have additional requirements;
but until you specify what they are, it's impossible to seriously
discuss with you what "C99 implementation" means.
>and (b)
that even in your limited experience, C90 is twice as prevalent as C99.

If your definition of "prevalent" is "the standard for which one has
seen more installations."
It doesn't define prevalence, but it's a reasonable piece of evidence in
support of prevalence.

....
>Someone in your position cannot have the faintest
idea of what is prevalent in the C community.

As this thread demonstrates, someone in my position has a better idea
of what is prevalent in the C community than someone who has worked at
a number of UK banks and insurance companies, a number of software
houses, an airline, and a couple of startups.
Actually, to those of use who know better, it demonstrates precisely the
opposite.
Aug 27 '08 #230
jacob navia wrote:
vi******@gmail.com wrote:
....
>Just alias gcc to gcc -lm.
Having an option to include the math library is IMHO a lot better than
having an option to exclude the math library.

Why you would want to exclude the math library?

If you do not use it, nothing will be linked in into
your program. What could be the point of doing that?
To avoid the linker wasting time looking through the math library. This
is a much smaller issue than it used to be, and I wouldn't consider it
very important any more, but it is a real issue, and it used to be a
very important one (which is why the -lm option was created in the first
place).
Aug 27 '08 #231
s0****@gmail.com wrote:

_Twelve hundred_ lines!? Can you double-act idiots please learn to snip?

Furrfu.

Richard
Aug 27 '08 #232
s0****@gmail.com writes:
On Aug 26, 4:58*am, Richard Heathfield <rj*@see.sig.invalidwrote:
>s0****@gmail.com said:
On Aug 25, 10:47 pm, Richard Heathfield <rj*@see.sig.invalidwrote:
s0****@gmail.com said:
On Aug 25, 6:11 am, Richard Heathfield <rj*@see.sig.invalidwrote:
s0****@gmail.com said:
Richard Heathfield wrote:
s0****@gmail.com said:
Richard Heathfield wrote:
I don't need any evidence, because I know I'm right.
But the rest of us don't :-(
Right, which is why I supplied evidence to support my view. Not for
my benefit, but for other people's.
You didn't *supply* evidence;
You still don't understand what evidence is.
You snipped a relevant part. The rest continued as: "you *mentioned*
the evidence, which is, unfortunately, not sufficiently convincing to
make a strong and reasonable argument."
See? You still don't understand what evidence is.

Perhaps I don't understand /your/ personal definition of "evidence."
Richard has told you about his personal experience. Apparently that's
not "evidence" as you use the word. (As I use the word, and as I
think most people use the word, it is evidence, though it's not
proof.) What would be "evidence"? Does Richard have to take you on a
personal guided tour of every site he's worked at?

(And you're ignoring the distinction between an implementation and an
installation.

[...]
(which sounds a little unrealistic since some OSs actually come with
one pre-installed).
>Name two. In fact, name one. (Note that gcc is not a C99 implementation,
so Linux certainly doesn't count.)
It is a C99 implementation, so it counts

No, it isn't, so it doesn't.

Umm...

It is, so it does.
You are expecting the rest of us to accept your definition of "C99
implementation", a definition that gcc apparently satisfies. You are
perfectly well aware, since it's been explained to you countless
times, that many of us use a different definition of "C99
implementation", one that gcc does not satisfy. Why should we accept
your definition without question when you're unwilling even to
acknowledge the one we use?

Ok, just for now, let's drop the phrase "C99 implementation" and try
to define a few terms unambiguously. Some of the boundary cases will
be a bit vague.

A "C99-specific feature" is a feature that's part of the C99 standard
but not part of the C90 standard. (I'm ignoring the few features that
were added in the 1995 amendment.)

The "language" includes both the language and library features defined
by the standard (primarily in sections 6 and 7, respectively, but
including all normative portions of the standard).

I'll assume that minor bugs don't cause an implementation to fail to
conform to a given standard, but outright failures to implement a
given language feature, or to implement it correctly, do cause it to
fail. The boundary here is admittedly vague.

A "full C99 implementation" is an implementation that fully conforms
to the C99 standard, that correctly implements *all* C99-specific
features as well as the C90-based core of the language.

A "nearly full C99 implementation" is an implementation that
implements most of the C99 standard, but that fails to conform due to
some C99-specific features that either aren't implemented or aren't
implemented correctly. It correctly implements the intersection of
C90 and C99, i.e., it will properly handle any code that is valid in
both C90 and C99.

A "partial C99 implementation" is an implementation that only
partially conforms to the C99 standard. As above, it fully implements
the intersection of C90 and C99. In addition, it implements only a
few C99-specific features. For example, a C90 compiler that also
supports // comments, long long, and mixed declarations and
statements, but no other C99-specific features, is a "partial C99
implementation". The boundary between "partial" and "nearly full" is
not well defined.

A "full C90 implementation" is an implementation that fully conforms to the
C90 standard.

I won't provide definitions for "nearly full" or "partial" C90
implementations at this time.

Are you with me so far? Note again that I'm very deliberately
avoiding the phrase "C99 implementation". For purposes of this
article, I'm not interested in debating what that phrase means, or
what any other phrase means; I prefer to explore the question of what
kinds of implementations actually exist in the real world. I ask you
to accept, at least for purposes of this immediate discussion, the
definitions I've provided above.

I believe the following statements to be accurate. I am not at this
time offering evidence to support them, but I'll ask for your opinion
on whether they're accurate.

There are a large number of full C90 implementations in widespread
use. In some cases, you might need to specify certain options (e.g.,
command-line options) to cause an implementation to behave as a full
C90 implementation. The vast majority of C implementations are able
to behave as full C90 implementations with proper settings.

There are probably nearly as many partial C99 implementations as there
are full C90 implementations. For example, I suspect that most full
C90 implementations are capable of accepting // comments with
appropriate settings (not the same settings used for full C90
conformance).

Depending on where you draw the line, there are a substantial number
of nearly full C99 implementations. gcc is one example; it does not
fully conform to the C99 standard, but it comes fairly close. lcc-win
is another example; the most recent information I have is that there
are still a couple of C99-specific features that it doesn't yet
implement.

There are very few full C99 implementations, and the few that do exist
are not sufficiently widespread that a programmer may reasonably
assume that such an implementation will be available on all systems on
which he needs to work. For example, the computer on which I'm typing
this has gcc 4.2.3 installed on it; it does not have any full C99
implementation. (In my personal opinion, this is quite unfortunate; I
truly wish that full C99 implementations were much more common than
they currently are.)

Do you agree with the above statements? If not, can you specifically
tell us on what points you disagree?

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Aug 27 '08 #233
s0****@gmail.com wrote, On 27/08/08 12:54:
On Aug 26, 4:48 pm, Flash Gordon <sp**@flash-gordon.me.ukwrote:
<snip>
>I've snipped a lot of the rubbish you were
talking. Feel free to have the last word.

I hope I did. I'm glad to see you've finally given up in holding this
absurd position.
I never stated that I was giving up on my position, which is perfectly
reasonable. I said you could have the last word. Very different things.
Why do you think I used the word "rubbish" to describe what you wrote?
--
Flash Gordon
Aug 27 '08 #234
On Wednesday 27 August 2008 18:56, Keith Thompson wrote:

[...]
Do you agree with the above statements? If not, can you specifically
tell us on what points you disagree?
Has s0****@gmail.com made such an outstanding contribution to this
newsgroup that people are so eager to know exactly what he thinks?
Frankly, who cares?

--
Jean-François Lemaire
Aug 27 '08 #235
On 27 Aug, 21:09, "J. F. Lemaire" <jflema...@skynet.bewrote:
On Wednesday 27 August 2008 18:56, Keith Thompson wrote:

[...]
Do you agree with the above statements? *If not, can you specifically
tell us on what points you disagree?

Has s0s...@gmail.com made such an outstanding contribution to this
newsgroup that people are so eager to know exactly what he thinks?
Frankly, who cares?
it's for the sake of the Lurkers. The poor things might think he knew
what he was talking about.

--
Nick Keighley
Aug 28 '08 #236
On Thursday 28 August 2008 11:07, Nick Keighley wrote:
On 27 Aug, 21:09, "J. F. Lemaire" <jflema...@skynet.bewrote:
>On Wednesday 27 August 2008 18:56, Keith Thompson wrote:

[...]
Do you agree with the above statements? *If not, can you
specifically tell us on what points you disagree?

Has s0s...@gmail.com made such an outstanding contribution to this
newsgroup that people are so eager to know exactly what he thinks?
Frankly, who cares?

it's for the sake of the Lurkers. The poor things might think he knew
what he was talking about.
I'm afraid you might be right. Oh boy.

--
Jean-François Lemaire
Aug 28 '08 #237
On Aug 27, 3:09 pm, "J. F. Lemaire" <jf*******@skynet.bewrote:
On Wednesday 27 August 2008 18:56, Keith Thompson wrote:

[...]
Do you agree with the above statements? If not, can you specifically
tell us on what points you disagree?

Has s0****@gmail.com made such an outstanding contribution to this
newsgroup that people are so eager to know exactly what he thinks?
Frankly, who cares?
Nobody--at least not in this ng where I don't know anybody. However,
it's not a matter of caring or blindly believing in anyone. The same
applies to Richard Heathfield, Flash Gordon, Keith Thompson, etc., and
I presume they all know it. It's about how things are actually like in
the real world.

Sebastian

Aug 29 '08 #238
s0****@gmail.com wrote:
On Aug 29, 3:24 am, Richard Heathfield <rj*@see.sig.invalidwrote:
>s0****@gmail.com said:
<snip>
....
>>>I'm awake, and I'm using the term "C99 implementation" in the obvious
way, the way that most people I know who use it, use it. I only know of
two people who don't use the term the same way I do, and you're one of
them.
Well, perhaps it's OK to use it that way with your buddies.
It's OK to use the term that way with anyone, because that's what it means.
It is you, not me, who use the term in a non-canonical way.

For it to be canonical, it would have to be widely accepted as such.
I've seen no sign of acceptance for the way you suggest, other than in
this discussion.
As I pointed out earlier, I reviewed a couple of hundred messages on
usenet containing the term "C99 implementation", and found many dozens
of uses of the term in ways that were inconsistent with the idea that it
includes nearly-conforming implementations. Though I did not keep count,
many different authors posted those messages, a lot more than the number
who have contributed to this discussion. I only found two authors who
used that phrase in a sense that required it to include
nearly-conforming implementations (and a lot of messages where it was
ambiguous whether or not newly-conforming implementations were allowed).

That pretty clearly establishes your usage, not ours, as the unusual one.

....
Have you really heard the opinion of *everyone* in the world who has
expressed an opinion? So far you've just talked about your opinion and
the one of the people in clc.
There's something called sampling - for a population that is too big to
be cost-effectively examined in detail, sampling is a perfectly
legitimate technique for collecting data that can be used to draw
conclusions about the statistical properties of that population, such as
the percentage of C Programmers familiar with the C99 standard who would
interpret "C99 implementation" in a given way.

In this discussion, we have three samples with strong biases (my own
experiences, Richard Heathfield's, and yours), and one much smaller
sample which was designed, as well as possible, to be unbiased. If this
were a more important issue, or if you had even bothered attempting to
collect an unbiased sample that turned out to support your
interpretation, I might want a larger sample size, and a better sampling
methodology. However, the samples we've collected so far seem sufficient
to support the conclusion that yours is a minority interpretation of the
term "C99 implementation".

....
>>However, it would depend on the size of the bag containing the beads,
No, the spec says that you don't know how big the bag is (this is an
accurate parallel because we don't know in advance how many C compiler
installations we'll come across in the future).

Exactly. And that's exactly why we haven't been able to bring up any
strong evidence, and probably never will--at least not just by
discussing it.
No - if having a statistical universe of unknown size were something
that prevented one from reaching any conclusions about the
characteristics of that universe, then most of science would be
impossible. Statistics shows that it is the size of the sample, not the
size of the universe that it is a sample from, that determines the
accuracy of conclusions based upon that sample.

....
Well, perhaps, but there's no way to know which installations everyone
has.
There's also no way to know what height everyone has. However, that
doesn't prevent us from recognizing that a 16-foot tall person is
unusual, and not the norm. For the same reason, the lack of perfect
knowledge does not prevent us from using the knowledge we do have about
the implementations we've actually seen, to realize that installations
of compilers that fully conform to the C99 standard are quite rare.
>>>gcc does *not* conform to ISO/IEC 9899:1999, much as you might like to
pretend otherwise.
I've never pretended otherwise.
Then it isn't a C99 implementation.

By your definition of C99 implementation.
And mine, and that used by most of the authors I've read of messages on
either this newsgroup or comp.std.c, over a dozen years of posting to
those newsgroups.
>>>>If your definition of "prevalent" is "the standard for which one has
seen more installations."
Are you saying that you define "prevalent" as "the standard for which
one has seen least installations"? Because that's how it's coming
across.
No. Much more important points about the prevalence of a C standard
include which one the C community thinks is the most prevalent, or
which one they use. C90 is still prevalent,
I rest my case.

Perhaps I misused the term. The dictionary defines it as

1. widespread; of wide extent or occurrence; in general use or
acceptance.
No one is using the term in any other sense here. The ratio of the
numbers of actual installations of each type of compiler is relevant
evidence concerning their relative prevalence. Drawing a conclusion
based upon such evidence, (particularly when the ratio is as large as it
actually appears to be), is far more reasonable than drawing a
conclusion inconsistent with that ratio, which is what you are doing.
Aug 31 '08 #239
James Kuyper said (in a reply to s0****@gmail.com):

<snip>
In this discussion, we have three samples with strong biases (my own
experiences, Richard Heathfield's, and yours),
At least four. Randy Howard, whose experience of C is pretty broad, has
also pointed out in this thread that he's never come across an
installation of C99 in the wild. Message ID:
<00*****************************@news.verizon.ne t>

<snip>

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Aug 31 '08 #240
Richard wrote:
James Kuyper <ja*********@verizon.netwrites:
....
>I think you've got it backwards; at least a few of the members of this
newsgroup could be counted on to race to disagree with him, if they
could, precisely because they are not his buddies. The silence of his
numerous enemies on this issue is a pretty strong indication that
you're alone in this.

Enemies? There are no enemies. Only people that are sick to death of his
smarmy, godly, holier than thou persona and his egotistical preening. It
is more likely the "way" rather than the "what" that riles people with
him.
It's really not relevant to my point what excuses they give for their
attitudes toward him; it's only the attitudes themselves that matter.
Sep 1 '08 #241
On Tue, 19 Aug 2008 12:10:32 +0530, santosh <sa*********@gmail.com>
wrote:
s0****@gmail.com wrote:
On Aug 18, 9:02 am, Richard Heathfield <rj*@see.sig.invalidwrote:

[about value of portable code]

<massive snip>
My favourite example is a Web browser product for set-top
boxes that was already well-established when I joined the project,
and which comprised about half a million lines of code, of which 99%
(495,000 lines or so) was written in ISO C - and yes, it was C90, not
C99, although C99 had been the de jure standard for at least a couple
of years by then.
<snip>
It isn't possible to write anything that even nearly resembles a Web
browser in ISO C. A modern Web browser depends heavily on things like
Graphical User Interfaces, networking, threading, and OS environment
stuff. If 1% of the code did this things, what in heaven did the other
99%?

Things may be different for set-top boxes though I'm not sure. Certainly
graphics can be done in 100% ISO C if the OS allowed full privileges to
the program.
Graphics algorithms/(de)coding/rendering, yes. Actual display, no;
even if 'privilege' means writing directly to a display buffer and/or
engine, that part isn't standard. The semantics defined (portably) by
the standard only allow you to form addresses of, and access, declared
objects (aka variables) and space from malloc et al. The nonstandard
part may be only a few lines, leaving 99.9% standard, but not 100%.
Cooperative multitasking can be implemented in the place
of preemptive threading. Most of the networking too can be done in ISO
C except for the actual transfer which is simply an OS API call. The
Or preemptive can be localized into a small (nonstandard) module,
if not provided by the (also nonstandard) OS API.
meat of a web browser is of course the HTML parser and renderer, as
well code for HTTP, FTP, SSL, TLS etc. etc., all of which can be done
in ISO C except for the interface to the outside world, which is simply
an OS call or two. It won't be strictly conforming C, but it *can* be
highly portable C nevertheless.
I would add at least images (PNG, JPEG, more?) and perhaps other
mediatypes -- there is disagreement over whether those belong 'in' the
browser or as addons/plugins/etc., but for a settop-box in particular
I'd expect them to be important. And at least some scripting e.g.
Javascript. And CSS, although that's sort-of just HTML. And cache and
cookie management. SSL and TLS are within epsilon a single thing.
And perhaps Java, although doing that yourself rather than using Sun's
might not be worth it.

It's arguable whether 'the Web' should include FTP, and indeed whether
it should include graphics/media, but in practice it does.

- formerly david.thompson1 || achar(64) || worldnet.att.net
Sep 1 '08 #242

This discussion thread is closed

Replies have been disabled for this discussion.

By using this site, you agree to our Privacy Policy and Terms of Use.