|
|
Response to Karen and to Willem on recursive proofs
"Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
news:f5dda427.0401091705.5af933c9@posting.google.com...
>
>> Furthermore, I've demonstrated, by willingly making myself a target
of
>> bullies, that white male on white male bullying performs the
political
>> task of excluding women and people of color from a technical field.
>Please. I'm one of those women that you occasionally say you are
concerned
>about, and I agree that this is off-topic in this newsgroup.
Furthermore,
>yours are the only posts lately with language that offends me. Are
you
>perhaps yourself engaging in "white male bullying"?
>-karen (a girl geek)
I respect your opinion. I wonder if it is the norm. But I agree that
my strong language may offend and intimidate.
However, what, in all probability, you are not aware of is the long
term context, in which people are, in my opinion, systematically
excluded and completely out of date paradigms are inappropriately
promoted for commercial gain.
Furthermore, it's not about gender. It's about social origin and
class.
Context isn't a matter of one or two "sound bytes", it is a matter of
my observation of poster behavior over a very long period of time.
Since people can intimidate in quiet business offices with a sober
mien, there is no metric for the offense given in which one or two
stylistic offenses of mine become replicated by school leavers expert
only in C and become the "truth" in a discourse cascade. It's fucked
up.
Furthermore, to say, well, perhaps you are doing the bullying, is an
excellent way of discouraging people with high principles from
defending themselves against people who don't care whether they have
high principles or not. I think I have high principles: I fail to live
up to them in ways which aren't your business except insofar as they
affect you, which is minimal.
Let me be blunt. The good in this ng lack all conviction, while it is
used in part for the commercial promotion of stolen goods and an out
of date language. Useful information is minimized and my time is
wasted.
However, I have a lot of real work to do and I've just spent a
mini-vacation on the northern coast of California. I decided to desist
examining this discourse cascade, since people will believe what they
like, and to desist responding for at least a month or so.
If anybunny wants to continue the discussion I may be reached at
spinoza1111@yahoo.com. Also, further information is available at
http://members.screenz.com/edNilges, my home page.
One final remark:
Willem, mein Herr, your answer on program proving was correct but you
concealed the fact that the steps from what you called the
"preposition" to the n+1th preposition are trivial except for a for
or do loop...in which recursion nearly always is necessary.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/15/2004 1:20:02 AM |
|
"Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message <news:f5dda427.0401141720.5fe473eb@posting.google.com>...
> Furthermore, to say, well, perhaps you are doing the bullying, is an
> excellent way of discouraging people with high principles from
> defending themselves against people who don't care whether they have
> high principles or not. I think I have high principles: I fail to live
> up to them in ways which aren't your business except insofar as they
> affect you, which is minimal.
IOW, you're just another garden-variety hypocrite?
> Let me be blunt. The good in this ng lack all conviction, while it is
> used in part for the commercial promotion of stolen goods and an out
> of date language. Useful information is minimized and my time is
> wasted.
The only one here who might be wasting your time is yourself.
> However, I have a lot of real work to do and I've just spent a
> mini-vacation on the northern coast of California. I decided to desist
> examining this discourse cascade, since people will believe what they
> like, and to desist responding for at least a month or so.
You were released on your own recognizance after a 72-hour observation?
And why does your doctor think only a month's treatment is sufficient?
--
Joe Foster <mailto:jlfoster%40znet.com> DC8s in Spaace: <http://www.xenu.net/>
WARNING: I cannot be held responsible for the above They're coming to
because my cats have apparently learned to type. take me away, ha ha!
|
|
0
|
|
|
|
Reply
|
joe303 (601)
|
1/15/2004 1:44:29 AM
|
|
In article <f5dda427.0401141720.5fe473eb@posting.google.com>, spinoza1111
@yahoo.com says...
> I decided to desist examining this discourse cascade ...
> and to desist responding for at least a month or so.
Thank you very much. We will all appreciate it.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/15/2004 2:29:50 AM
|
|
Randy Howard wrote:
> In article <f5dda427.0401141720.5fe473eb@posting.google.com>, spinoza1111
> @yahoo.com says...
>> I decided to desist examining this discourse cascade ...
>> and to desist responding for at least a month or so.
>
> Thank you very much. We will all appreciate it.
Don't make the mistake of believing his unsupported statements, because they
have proven in the past to be unreliable. When he has desisted responding
for at least a month or so, /then/ we can believe that he has done so.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/15/2004 5:38:32 AM
|
|
[I have reflowed the text for clarity. I have also restored the attribution
that Mr Nilges incorrectly snipped; it appears he can't even get the
credits right, let alone the program itself.]
Edward G. Nilges wrote:
[> karen wrote:]
> "Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
> news:f5dda427.0401091705.5af933c9@posting.google.com...
>>
>>> Furthermore, I've demonstrated, by willingly making
>>> myself a target of bullies, that white male on white
>>> male bullying performs the political task of excluding
>>> women and people of color from a technical field.
>>
>> Please. I'm one of those women that you occasionally
>> say you are concerned about, and I agree that this is
>> off-topic in this newsgroup.
>>
>> Furthermore, yours are the only posts lately with
>> language that offends me. Are you perhaps yourself
>> engaging in "white male bullying"?
>>
>>-karen (a girl geek)
>
> I respect your opinion. I wonder if it is the norm.
Mr Nilges should Read The Newsgroup if he wishes to know the answer to his
question.
> But I agree that
> my strong language may offend and intimidate.
If Mr Nilges were to refrain from the weak language that he thinks is so
strong, he would offend and intimidate less; this would make the world a
very slightly better place.
> However, what, in all probability, you are not aware of is the long
> term context,
How on EARTH does Mr Nilges think he can possibly know that? How has he
arrived at his utterly spurious "in all probability"? Has he any message
IDs to show us that demonstrate an existing naive attitude on karen's part?
> in which people are, in my opinion, systematically
> excluded and completely out of date paradigms are inappropriately
> promoted for commercial gain.
Mr Nilges's opinion on this matter is well-known, and has been rebutted many
times.
>
> Furthermore, it's not about gender. It's about social origin and
> class.
Mr Nilges talked of "white male bullying". If he doesn't mean to speak of
"gender", perhaps "male" wasn't the best word to select. It is hard to
believe that anyone can think he knows so many long words and yet be so
ignorant of what the short words mean.
<snip>
> Since people can intimidate in quiet business offices with a sober
> mien, there is no metric for the offense given in which one or two
> stylistic offenses of mine become replicated by school leavers expert
> only in C and become the "truth" in a discourse cascade. It's fucked
> up.
Mr Nilges is incorrect in saying that his stylistic offences have been
replicated here. He is unique.
If Mr Nilges seeks to imply that I am a school leaver expert only in C,
well, it's certainly true that I left school, and it's possibly true that
I'm expert in C. It is probable that Mr Nilges has also left school, and
it's certainly not true that he's expert in C. So, if I have read his
intent correctly, he's saying that I'm better at C than he is. Well, he's
right there. The final sentence in his paragraph is, of course,
misdirected. No doubt it was intended to be a wry comment on his own life.
> Furthermore, to say, well, perhaps you are doing the bullying, is an
> excellent way of discouraging people with high principles
No, karen's point was that maybe Mr Nilges is a bully. If Mr Nilges had any
high principles, perhaps it is time he started demonstrating them, by:
1) not swearing in public access newsgroups;
2) not comparing people who disagree with him to Fascists;
3) not posting off-topic sociological material in technical groups;
4) not making arbitrary attacks on people he doesn't like;
5) not making arbitrary attacks on languages he doesn't like;
6) owning up to his mistakes like the rest of us;
7) not posting opinions and made-up stuff as if they were facts;
8) generally not being a pillock.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/15/2004 6:04:55 AM
|
|
spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401141720.5fe473eb@posting.google.com>...
> However, I have a lot of real work to do and I've just spent a
> mini-vacation on the northern coast of California. I decided to desist
> examining this discourse cascade, since people will believe what they
> like, and to desist responding for at least a month or so.
well, i for one don't really have a problem with you posting to
comp.programming as such. I'd go as far as to think it creates a net
gain, for all the theory on noise -> signal, what you stir up spins
off a lot of interesting technical discussion and some other comment
of merit, shame about the animosity also stirred and i sometimes
question the reference to (purely IMO) social issues so broad as to be
difficult at best to relate to programming as programming, esp. given
an audience of working programmers who showed up in search of an
algorithm! You'd go down a storm in comp.society.* if anyone read
those groups anymore...
Your posts do increase the tempo of comp.programming to near frenetic
and i guess that's unsustainable. so rest up and next time a more
genteel facet of yourself eh? mindful of the roomfull of working
programmers that are the audience, mostly interested in programming as
programming.
|
|
0
|
|
|
|
Reply
|
gswork (648)
|
1/15/2004 8:21:34 AM
|
|
Richard Heathfield wrote:
>
.... snip ...
>
> No, karen's point was that maybe Mr Nilges is a bully. If Mr
> Nilges had any high principles, perhaps it is time he started
> demonstrating them, by:
>
> 1) not swearing in public access newsgroups;
> 2) not comparing people who disagree with him to Fascists;
> 3) not posting off-topic sociological material in technical groups;
> 4) not making arbitrary attacks on people he doesn't like;
> 5) not making arbitrary attacks on languages he doesn't like;
> 6) owning up to his mistakes like the rest of us;
> 7) not posting opinions and made-up stuff as if they were facts;
> 8) generally not being a pillock.
I recently discovered a highly appropriate word for use in
describing EGN: coprolalia. He evidently suffers from it.
I wonder if nilgewater is going to make it into future dictionary
editions?
--
Chuck F (cbfalconer@yahoo.com) (cbfalconer@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!
|
|
0
|
|
|
|
Reply
|
cbfalconer (19183)
|
1/15/2004 10:38:37 AM
|
|
gswork wrote:
> spinoza1111@yahoo.com (Edward G. Nilges) wrote in message
> news:<f5dda427.0401141720.5fe473eb@posting.google.com>...
>
>> However, I have a lot of real work to do and I've just spent a
>> mini-vacation on the northern coast of California. I decided to desist
>> examining this discourse cascade, since people will believe what they
>> like, and to desist responding for at least a month or so.
>
> well, i for one don't really have a problem with you posting to
> comp.programming as such.
Neither do I, *as such*. It's just a shame that Mr Nilges is so hard to
teach.
> I'd go as far as to think it creates a net
> gain, for all the theory on noise -> signal, what you stir up spins
> off a lot of interesting technical discussion and some other comment
> of merit,
....which could just as easily be raised topically in the first place.
> shame about the animosity also stirred
Yes, that /is/ a shame, especially when it's so easily avoided.
> and i sometimes
> question the reference to (purely IMO) social issues so broad as to be
> difficult at best to relate to programming as programming, esp. given
> an audience of working programmers who showed up in search of an
> algorithm! You'd go down a storm in comp.society.* if anyone read
> those groups anymore...
Well well well...
comp.society
comp.society.cu-digest
comp.society.development
comp.society.folklore
comp.society.futures
comp.society.privacy
comp.society.women
Perhaps we should start redirecting followups to Mr Nilges's articles, where
appropriate. The comp.society and comp.society.development groups look like
the most obvious candidates, although I can't be certain because I haven't
yet dug out their charters.
> Your posts do increase the tempo of comp.programming to near frenetic
> and i guess that's unsustainable. so rest up and next time a more
> genteel facet of yourself eh? mindful of the roomfull of working
> programmers that are the audience, mostly interested in programming as
> programming.
Were Mr Nilges to remain mindful of that, and were that attitude to be
reflected in his articles, I doubt whether anyone here would have any
objection to those articles appearing here.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/15/2004 10:57:05 AM
|
|
Edward wrote:
) Willem, mein Herr, your answer on program proving was correct but you
) concealed the fact that the steps from what you called the
) "preposition" to the n+1th preposition are trivial except for a for
) or do loop...in which recursion nearly always is necessary.
All you need to do is prove that 'preposition-in-loop' holds during the
loop, and that 'preposition-in-loop' AND NOT 'loop-condition' implies
'preposition-after-loop'. No recursion involved there.
Could you give an example of a correctness proof involving recursion ?
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/15/2004 11:09:02 AM
|
|
In article <f5dda427.0401141720.5fe473eb@posting.google.com>, spinoza1111@yahoo.com (Edward G. Nilges) wrote:
>"Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
>>> white male on white male bullying
>
> it's not about gender. It's about social origin and
>class.
<Sigh>
- Gerry Quinn
|
|
0
|
|
|
|
Reply
|
gerryq2 (435)
|
1/15/2004 12:07:35 PM
|
|
CBFalconer wrote:
> I recently discovered a highly appropriate word for use in
> describing EGN: coprolalia. He evidently suffers from it.
Expect his future articles to contain the term from time to time, as if he
had known the word before you mentioned it.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/15/2004 1:33:06 PM
|
|
Richard Heathfield wrote:
>
> CBFalconer wrote:
>
> > I recently discovered a highly appropriate word for use in
> > describing EGN: coprolalia. He evidently suffers from it.
>
> Expect his future articles to contain the term from time to time,
> as if he had known the word before you mentioned it.
echolalia is another symptom of the same disorder.
--
pete
|
|
0
|
|
|
|
Reply
|
pfiland (6613)
|
1/15/2004 2:24:17 PM
|
|
In article <bu590n$ccv$2@hercules.btinternet.com>,
dontmail@address.co.uk.invalid says...
> Randy Howard wrote:
>
> > In article <f5dda427.0401141720.5fe473eb@posting.google.com>, spinoza1111
> > @yahoo.com says...
> >> I decided to desist examining this discourse cascade ...
> >> and to desist responding for at least a month or so.
> >
> > Thank you very much. We will all appreciate it.
>
> Don't make the mistake of believing his unsupported statements, because they
> have proven in the past to be unreliable. When he has desisted responding
> for at least a month or so, /then/ we can believe that he has done so.
Why keep asking him questions then elsethread? Let him go wherever he
plans to go and be done with him.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/15/2004 3:31:27 PM
|
|
Randy Howard wrote:
>
.... snip ...
>
> Why keep asking him questions then elsethread? Let him go wherever
> he plans to go and be done with him.
He may have done so. The ratio of transferred to available
messages in this group has suddenly risen sharply for me.
--
Chuck F (cbfalconer@yahoo.com) (cbfalconer@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!
|
|
0
|
|
|
|
Reply
|
cbfalconer (19183)
|
1/15/2004 7:47:16 PM
|
|
In article <slrnc0ct6e.1jac.willem@toad.stack.nl>,
Willem <willem@stack.nl> wrote:
>Edward wrote:
>) Willem, mein Herr, your answer on program proving was correct but you
>) concealed the fact that the steps from what you called the
>) "preposition" to the n+1th preposition are trivial except for a for
>) or do loop...in which recursion nearly always is necessary.
>
>All you need to do is prove that 'preposition-in-loop' holds during the
>loop,
Oh, I want to pick a nit here:
"During the loop" would seem to me to be a tad inaccurate: As
I understand it, what you generally want to show is that if the
preposition ("loop invariant", no?) holds before a trip through the
loop body and the loop condition is true, then the preposition is
true after the trip through the loop body. It might be false at some
point in the middle. Example on request.
Maybe that's what you meant.
> and that 'preposition-in-loop' AND NOT 'loop-condition' implies
>'preposition-after-loop'. No recursion involved there.
>Could you give an example of a correctness proof involving recursion ?
How about a correctness proof of a recursive algorithm? I'm not up to
searching the literature right now to see whether the real formalists
use recursion or induction in that case, but -- maybe it's more a
question of terminology than a real distinction, because they seem
to me to be related/similar notions.
--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.
--
-- blm
|
|
0
|
|
|
|
Reply
|
blmblm (1187)
|
1/18/2004 2:28:37 AM
|
|
)>All you need to do is prove that 'preposition-in-loop' holds during the
)>loop,
blmblm@myrealbox.com wrote:
) Oh, I want to pick a nit here:
)
) ...
That's what I meant, yes. The loop invariant only has to be true at the
beginning and end of the loop, of course.
)>Could you give an example of a correctness proof involving recursion ?
)
) How about a correctness proof of a recursive algorithm? I'm not up to
) searching the literature right now to see whether the real formalists
) use recursion or induction in that case, but -- maybe it's more a
) question of terminology than a real distinction, because they seem
) to me to be related/similar notions.
Hm, I guess you could say that assuming the correctness of a function call
inside that function to prove that the function is correct could be called
a recursive proof. But because Mr. Nilges was talking about using a
'recursive proof' to prove the correctness of a simple loop, I assumed that
he meant something else by it.
Of course, proving that some recursion terminates is a bit less
straightforward.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/18/2004 2:37:28 PM
|
|
Willem <willem@stack.nl> wrote in message news:<slrnc0ct6e.1jac.willem@toad.stack.nl>...
> Edward wrote:
> ) Willem, mein Herr, your answer on program proving was correct but you
> ) concealed the fact that the steps from what you called the
> ) "preposition" to the n+1th preposition are trivial except for a for
> ) or do loop...in which recursion nearly always is necessary.
>
> All you need to do is prove that 'preposition-in-loop' holds during the
> loop, and that 'preposition-in-loop' AND NOT 'loop-condition' implies
> 'preposition-after-loop'. No recursion involved there.
>
> Could you give an example of a correctness proof involving recursion ?
My reply's conditions are these, since I have considerable other committments:
(1) The reply shall exclusively focus on Willem's question. It shall contain
some high flights but they shall relate to the matter at hand except for the
last line in the post.
(2) There is a working set of trolls in this ng who won't be answered.
OK, for the reply. The following extempore C function
int nFactorial(int n)
{
if ( n < 1 ) { ... error handler ... }
for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
return(nFactorial);
}
has this correctness proof
int nFactorial(int n)
{
// n is an integer
if ( n < 1 ) { ... error handler ... }
// n is an integer >= 1
for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
//
// Proof of the for loop validity...using recursion aka induction
//
// A recursive proof proves an assertion A true for 1 or 0, and then proves
// "if the assertion is true for the natural number n, it is true for n+1".
// But since it can be seen by inspection of the loop termination condition
// that the above will leave 1 in nFactorial when n=1, I
// will prove A true for n=2 and then the assertion "if A is true for n it
// is true for n+1". Zero factorial and one factorial are after all
// degenerate cases, which sound more fun than they are.
//
// The assertion: if n is an integer >=2, nFactorial will contain n! at
// termination of the loop.
//
// A is true for n=2 because you only have to "unroll" the loop in such
// a way that "correctness proving" becomes identical to "desk checking"
// as practiced by competent programmers. In Marx's sense, "desk checking"
// is a praxis which anticipates the Platonism of correctness proofs.
//
// // n = 2
// int nFactorial = n
// // n = 2 && nFactorial = 2
// int n2 = n - 1;
// // n = 2 && nFactorial = 2 && n2 = 1
// if n2 <= 1 then exit the loop (reversal of loop condition)
//
// After this "unrolling" it is clear that nFactorial is 2 which is the
// factorial of 2 QED: the first part of the recursive proof is complete.
//
// The second part of this proof supposes that the loop validly calculates
// m! where m is an integer > 1. Does it then validly calculate the value of n,
// where n=m+1? It would seem that it does.
//
// Here, nFactorial is assigned the value of n=m+1 while n2 is assigned the
// value m. The repetition condition allows control to flow to
// "nFactorial *= n2" which places (m+1)*(m) in nFactorial. But more
// generally, this step will multiply n times m! since we've asserted that
// the loop for m does calculate m!.
//
// Put another way, after the the sequence (test termination condition for
// n2, multiply, decrement) is performed, the residual loop is the
// calculation of m!. But the first pass through
// the loop calculates n*m!: if m=n-1, the loop calculates n*(n-1)! which
// is n!.
//
// Note that the SYNTAX of the poorly designed C for seems to this non-
// specialist to make the argument clumsier than it should, for the
// decrement comes textually before the process.
//
// But IF the for loop calculates m! for m=n-1, it calculates n! QED.
//
// I'm not a mathematician, and I don't play one in the movies, and they
// couldn't get Cruise to play my role in A Beautiful Mind. Furthermore, this
// is an informal proof that doesn't use a formal notation.
//
// But it uses MATHEMATICAL recursion...which has "nothing to do" with
// recursion in programming only in a somewhat moronized separation of
// disciplines.
//
// Recursion in programming is, of course, a subroutine calling itself. But
// it is deeply linked with mathematical recursion aka induction because
// programming recursion is just a LOOP unless you can prove, formally or
// informally, that the inner call deals with fewer (n-1) elements than the
// containing subroutine.
//
// The recursive proof seems a waste of time until you realize that informal
// correctness proofs using recursion are sociologically identical to
// productive discourse in productive structured walkthroughs.
//
// And it is very interesting to me that this discourse gets often short-
// circuited by stylistic quibbling because of math anxiety and the pressure
// software developers are under to provide "results". Of course, I could
// not resist taking a whack at C's for loop above, so here we have a case
// of the famous pot, and the dirty kettle.
//
// But in dysfunctional structured walkthroughs, people forget (if they ever
// learned) Aristotle's sage advice in The Rhetoric, which is that the
// rhetor can supplement his logic with stylistic gestures to the extent that
// the rhetor self-deprecates in the old and gentlemanly style. Indeed,
// Dijkstra's rhetoric of the "humble" programmer is consciously or
// inconsciously Aristotelean in this regard.
//
// The issues that have arisen in dysfunctional structured walkthroughs and
// in childish exchanges on comp.programming MAY be addressed in Husserl's
// work on the foundations of geometry and general phenomenology, but I
// haven't read enough of this fantastically difficult thinker to be sure.
//
// For example, in both venues, there is no clear separation between token
// and type. A typo in this environment is unforgiveable for as opposed to
// discourse in a mathematical community, no shared understanding exists in
// a bourgeois, tenured community.
//
// Uncertainty about job tenure becomes math anxiety with the result that a
// false certainty is sought in typesetting as opposed to writing. Levels
// in other words occlude.
//
// For Husserl, the "crisis" in the European sciences may have been the
// attempt to generalize from a mechanical certainty as seen a deduction
// that was for Kant content-free, to a general social and political
// certainty.
//
// In this context, proof retreats to its original position under Euclid,
// which is less "proof" and more occluded with teaching.
//
// The recursive proof of the algorithm teaches little that we don't already
// know. But it can be applied to more difficult problems productively, and it
// also generates a testing methodology: test for zero, test for one, test
// for "the myriad creatures" as in the Tao.
//
// And in the sphere, of brute-force praxis, I have stood up before programming
// classes and like a stand up guy, used this method to show the students
// that a Visual Basic program actually worked. In a world constitutive of
// an attack on consciousness, language, memory, and its replacement by TV,
// this is quite an accomplishment, if I do say so myself.
//
// Genuine symbolic manipulation as seen in both mathematics and in
// programming teaches a political lesson which goes against the sullen
// grain, and it is that we can "know".
//
//
return(nFactorial);
// The function returns n! for all natural numbers QED
//
// Recursion is used in proving loop correctness QED QED
//
// US out of Iraq
}
>
>
> SaSW, Willem
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/20/2004 2:28:37 AM
|
|
In article <f5dda427.0401191828.4722200d@posting.google.com>, spinoza1111
@yahoo.com says...
> int nFactorial(int n)
> {
> if ( n < 1 ) { ... error handler ... }
> for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
> return(nFactorial);
> }
This code won't compile for me, even after commenting out the error handler
gibberish (which isn't required if you make it take unsigned int), even w/
C99 extensions.
D:\>gcc -Wall -std=c99 nilges2.c -o nilges2
nilges2.c: In function `nFactorial':
nilges2.c:11: parse error before "int"
nilges2.c:11: `n2' undeclared (first use in this function)
nilges2.c:11: (Each undeclared identifier is reported only once
nilges2.c:11: for each function it appears in.)
nilges2.c:11: parse error before ')' token
My modified version as follows:
It's strange that you have a correctness proof for invalid code.
Of course, you're relying on non-standard behavior. Fixing that,
and making it more readable, we arrive at:
int nFactorial(int n)
{
int nFactorial;
int n2;
if ( n < 1 )
{
/* ... error handler ... */
}
for ( nFactorial = n, n2 = n - 1; n2 > 1; n2-- )
nFactorial *= n2;
return(nFactorial);
}
However, this code is also broken, as 0! is supposed to be 1,
not unsupported. Even the MS Windows calculator gets this
correct, along with every other one I tried.
Of course, it rather trivial to change the conditions such
that it handles n==0 as a special case, it is troubling that
a formal correctness proof could determine that this function
is correct, despite it obviously not being correct. How
did that happen Mr. Nilges?
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/20/2004 4:23:27 AM
|
|
In article <f5dda427.0401191828.4722200d@posting.google.com>, spinoza1111
@yahoo.com says...
> int nFactorial(int n)
> {
> if ( n < 1 ) { ... error handler ... }
> for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
> return(nFactorial);
> }
>
> has this correctness proof
I failed to mention that this also has exceedingly poor error handling on
the high end. What happens when someone passes an n for which n! is larger
than INT_MAX? Oops, yet another problem with this code. How can code
for which Mr. Nilges has constructed a supposedly correct proof have such
problems?
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/20/2004 4:27:00 AM
|
|
Randy Howard wrote:
> spinoza1111 @yahoo.com says...
>
> > int nFactorial(int n)
> > {
> > if ( n < 1 ) { ... error handler ... }
> > for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
> > return(nFactorial);
> > }
> >
> > has this correctness proof
>
> I failed to mention that this also has exceedingly poor error handling on
> the high end. What happens when someone passes an n for which n! is larger
> than INT_MAX? Oops, yet another problem with this code. How can code
> for which Mr. Nilges has constructed a supposedly correct proof have such
> problems?
Are you sure it is Eddie? After all, he promised on his mothers
something or other to leave us in peace for a month or so. Surely
no honest gentleman would abrogate such a promise.
--
Chuck F (cbfalconer@yahoo.com) (cbfalconer@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!
|
|
0
|
|
|
|
Reply
|
cbfalconer (19183)
|
1/20/2004 8:01:45 AM
|
|
Edward G. Nilges wrote:
> Willem <willem@stack.nl> wrote in message news:<slrnc0ct6e.1jac.willem@toad.stack.nl>...
>
>>Edward wrote:
>>) Willem, mein Herr, your answer on program proving was correct but you
>>) concealed the fact that the steps from what you called the
>>) "preposition" to the n+1th preposition are trivial except for a for
>>) or do loop...in which recursion nearly always is necessary.
>>
>>All you need to do is prove that 'preposition-in-loop' holds during the
>>loop, and that 'preposition-in-loop' AND NOT 'loop-condition' implies
>>'preposition-after-loop'. No recursion involved there.
>>
>>Could you give an example of a correctness proof involving recursion ?
[snip]
For those interested, The Art of Computer Programming Vol.1 contains a
much better and thurough explaination of proving through the use of
induction. Of course this is for those that may be new and have not
read or seen this book.
NR
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/20/2004 8:12:14 AM
|
|
Gerry Quinn wrote:
> In article <f5dda427.0401141720.5fe473eb@posting.google.com>, spinoza1111@yahoo.com (Edward G. Nilges) wrote:
>
>>"Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
>
>
>>>> white male on white male bullying
>>
>>it's not about gender. It's about social origin and
>>class.
>
>
> <Sigh>
>
> - Gerry Quinn
http://www.winternet.com/~mikelr/flame16.html
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/20/2004 8:27:18 AM
|
|
In article <400CE079.45019ED2@yahoo.com>, cbfalconer@yahoo.com says...
> Randy Howard wrote:
> > I failed to mention that this also has exceedingly poor error handling on
> > the high end. What happens when someone passes an n for which n! is larger
> > than INT_MAX? Oops, yet another problem with this code. How can code
> > for which Mr. Nilges has constructed a supposedly correct proof have such
> > problems?
>
> Are you sure it is Eddie? After all, he promised on his mothers
> something or other to leave us in peace for a month or so. Surely
> no honest gentleman would abrogate such a promise.
I'm not sure he has ever been accused of being that.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/20/2004 8:53:55 AM
|
|
In article <buioq6$rgp$1@quark.scn.rain.com>, nroberts@dontemailme.com says...
> Gerry Quinn wrote:
> > In article <f5dda427.0401141720.5fe473eb@posting.google.com>, spinoza1111@yahoo.com (Edward G. Nilges) wrote:
> >
> >>"Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
> >
> >
> >>>> white male on white male bullying
> >>
> >>it's not about gender. It's about social origin and
> >>class.
> >
> >
> > <Sigh>
> >
> > - Gerry Quinn
>
> http://www.winternet.com/~mikelr/flame16.html
Presumably in reference to Mr. Nilges. I think this one is
even more appropriate...
http://www.winternet.com/~mikelr/flame88.html
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/20/2004 9:07:12 AM
|
|
Edward G. Nilges wrote:
> Willem <willem@stack.nl> wrote in message
> news:<slrnc0ct6e.1jac.willem@toad.stack.nl>...
>>
>> Could you give an example of a correctness proof involving recursion ?
>
<snip>
>
> OK, for the reply. The following extempore C function
>
> int nFactorial(int n)
> {
> if ( n < 1 ) { ... error handler ... }
> for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
> return(nFactorial);
> }
>
> has this correctness proof
>
<snip>
> // The function returns n! for all natural numbers QED
No, it doesn't.
> //
> // Recursion is used in proving loop correctness QED QED
But the "proof" is flawed; the function does not return the correct values
for n = 0 or n! > INT_MAX, as others have already pointed out.
I just wanted to add that the code needlessly invites unnecessarily
erroneous inputs into the function, by using signed, rather than unsigned,
inputs. Furthermore, the only values of n for which it will provide the
correct answer on /all/ implementations are: 1, 2, 3, 4, 5, 6, 7
The author might as well have written:
int factorial(int n)
{
int rc = 0;
if(n < 1 || n > 7)
{
error("factorial: bad input");
}
else
{
int f[] = {1, 2, 6, 24, 120, 720, 5040};
rc = f[n - 1];
}
return rc;
}
This would have been considerably easier to prove!
Even had the author been wise enough to use unsigned long instead of signed
int, the function could only be guaranteed to return the correct result on
all systems for values of n up to 12. Again, a lookup table is almost
certainly easier to get right, and easier to prove. It's also O(1) instead
of O(n).
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/20/2004 2:06:34 PM
|
|
)> Could you give an example of a correctness proof involving recursion ?
Edward wrote:
) My reply's conditions are these, since I have considerable other committments:
)
) (1) The reply shall exclusively focus on Willem's question. It shall contain
) some high flights but they shall relate to the matter at hand except for the
) last line in the post.
)
) (2) There is a working set of trolls in this ng who won't be answered.
)
) OK, for the reply. The following extempore C function
)
) int nFactorial(int n)
) {
) if ( n < 1 ) { ... error handler ... }
) for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
) return(nFactorial);
) }
)
) has this correctness proof
I'll snip the correctness proof, but I should mention that you've got your
terminologies mixed, that was an _inductive_ proof.
Instead I'll write down how I would prove it, *without* induction.
(I had to pull apart the statements into multiple lines to be able to put
comments between them. The bits with 'max' are because the loop is a bit
unclean in that n2 could be zero after the loop.)
Of course, if you use a while-loop, you don't have the problem that you
have to account for three jumps within the loop. I grant you that.
But then, VB has the same problem with its for loop. And even worse
problem, because increments or decrements happen implicitly.
P.S: Can you have a variable with the same name as a function ?
int nFactorial(int n)
{
int n2, f;
// n is an integer
if ( n < 1 ) { error() }
// n >= 1
for (
f = n,
n2 = n - 1;
// Guard
// f * max(n2,1)! == n!
n2 > 1;
// f * max(n2,1)! == n!
// n2 > 1
// Note: jump to begin of loop body.
// Note: jump from end of loop body.
// f * max(n2-1,1)! == n!
n2--;
// f * max(n2,1)! == n!
// Note: Jump to guard
)
// begin of loop body
// f * max(n2,1)! == n!
// n2 > 1
f *= n2;
// f * max(n2 - 1,1)! == n!
// End of loop body.
// Loop guard was false, so:
// n2 <= 1
// f * max(n2,1)! == n!
// Therefore: f == n!
return(f);
// Function returns n!
}
Very simple, and no induction required.
If you use a while loop, and do the edge case differently:
int nFactorial(int n)
{
int n2, f;
// n is an integer
if ( n < 1 ) { error() }
// n >= 1
n2 = n;
f = 1;
// f * n2! == n!
// n2 >= 1
while (n2 > 1) {
// f * n2! == n!
// n2 > 1
f *= n2;
// f * (n2-1)! == n!
// n2 > 1
n2--;
// f * n2! == n!
// n2 >= 1
// Note: THis is the same as the prep. before the loop.
}
// f * n2! == n!
// n2 == 1 (Loop guard was false)
// Therefore: f == n!
return (f);
// Function returns n!
}
Easy, huh.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/20/2004 2:16:22 PM
|
|
In article <400d332d@news2.power.net.uk>, invalid@address.co.uk.invalid says...
> > // The function returns n! for all natural numbers QED
>
> No, it doesn't.
Maybe we're being too hard on the guy, after all, he's not a programmer,
he's a sociologist. However, I would think that even a sociologist
with 30+ years practice pretending to be a programmer could figure
out the right answer to 0!
But, he's not going to respond to us, he's afraid of us now, because
he's been shown to be wrong on too many occasions. He'll only
associate with those that don't show him the error of his ways,
which is an ever shrinking circle.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/20/2004 5:41:40 PM
|
|
Willem <willem@stack.nl> wrote in message news:<slrnc0qe1m.6nc.willem@toad.stack.nl>...
I have skipped over the working set of trolls including Randy Howard.
I will also skip Richard Heathfield who is higher on the evolutionary
scale than the troll and is more a gnome. Per my committment I shall
keep the focus here on program correctness proving and deduction of
behavior, mit seinem relationship to a critical theory of computer
science.
> )> Could you give an example of a correctness proof involving recursion ?
>
> Edward wrote:
>
> ) My reply's conditions are these, since I have considerable other committments:
> )
> ) (1) The reply shall exclusively focus on Willem's question. It shall contain
> ) some high flights but they shall relate to the matter at hand except for the
> ) last line in the post.
> )
> ) (2) There is a working set of trolls in this ng who won't be answered.
> )
> ) OK, for the reply. The following extempore C function
> )
> ) int nFactorial(int n)
> ) {
> ) if ( n < 1 ) { ... error handler ... }
> ) for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
> ) return(nFactorial);
> ) }
> )
> ) has this correctness proof
>
> I'll snip the correctness proof, but I should mention that you've got your
> terminologies mixed, that was an _inductive_ proof.
The use of the word "terminologies" reifies understanding and means,
literally, that the mathematician becomes a mathematical clerk. The
proof was indeed "inductive" but the problem with calling it
"inductive" as a teacher is that it is then promptly confused with an
*empirical* argument. That's why an alternate description is
"recursive".
And in a substantive sense, the proof recurses for it mentions itself
in the second half. We've proved QED for m bounded by n and need only
to prove that if A(m) then A(m+1).
> Instead I'll write down how I would prove it, *without* induction.
>
> (I had to pull apart the statements into multiple lines to be able to put
> comments between them. The bits with 'max' are because the loop is a bit
> unclean in that n2 could be zero after the loop.)
>
> Of course, if you use a while-loop, you don't have the problem that you
> have to account for three jumps within the loop. I grant you that.
> But then, VB has the same problem with its for loop. And even worse
> problem, because increments or decrements happen implicitly.
The increments and decrements are as explicit as hell, for Next
intIndex1 is in effect a command to increment or decrement, context
sensitive with regards to the Step clause.
The for loop of C is overgeneral and overexplicit because when it was
designed good programmers were still having problems with loops.
>
> P.S: Can you have a variable with the same name as a function ?
Not in Visual Basic. Nor in C to my knowledge. Chalk up a point in
favor of Hungarian Notation!
>
>
> int nFactorial(int n)
> {
> int n2, f;
> // n is an integer
> if ( n < 1 ) { error() }
> // n >= 1
> for (
> f = n,
> n2 = n - 1;
> // Guard
> // f * max(n2,1)! == n!
> n2 > 1;
> // f * max(n2,1)! == n!
> // n2 > 1
> // Note: jump to begin of loop body.
>
> // Note: jump from end of loop body.
> // f * max(n2-1,1)! == n!
> n2--;
> // f * max(n2,1)! == n!
> // Note: Jump to guard
> )
> // begin of loop body
> // f * max(n2,1)! == n!
> // n2 > 1
> f *= n2;
> // f * max(n2 - 1,1)! == n!
> // End of loop body.
> // Loop guard was false, so:
> // n2 <= 1
> // f * max(n2,1)! == n!
> // Therefore: f == n!
> return(f);
> // Function returns n!
> }
>
>
> Very simple, and no induction required.
As a layperson I would have to ask if it is not "hidden" in the max.
Also, I consider my proof more elegant. Even an Intuitionist cannot
get by without recursion and I don't know why delenda est.
>
> If you use a while loop, and do the edge case differently:
>
> int nFactorial(int n)
> {
> int n2, f;
> // n is an integer
> if ( n < 1 ) { error() }
> // n >= 1
> n2 = n;
> f = 1;
> // f * n2! == n!
> // n2 >= 1
> while (n2 > 1) {
> // f * n2! == n!
> // n2 > 1
> f *= n2;
> // f * (n2-1)! == n!
> // n2 > 1
> n2--;
> // f * n2! == n!
> // n2 >= 1
> // Note: THis is the same as the prep. before the loop.
> }
> // f * n2! == n!
> // n2 == 1 (Loop guard was false)
> // Therefore: f == n!
> return (f);
> // Function returns n!
> }
>
> Easy, huh.
I agree that (1) this does not need recursion and (2) it is an elegant
and illuminating proof: the last five lines are very exciting.
The line after the loop closure can be rewritten because you've shown
how inside the loop it is invariantly true. Essentially the proof
creates a vision of the algorithm as "unrolled" for any N and replaced
by a series of multiplies.
I do not know whether it disproves the need for recursion ANYWHERE in
proving programs correct (or deductively predicting their behavior).
Can you provide a proof that recursion is never needed?
My concern happens to be codifying ways in which informal, natural
language proofs can be used, and I need to keep the language informal
and not at all symbolic. Your approach is useful since mine was less
detailed and your approach would be better for teaching students who
don't know recursion.
My concern is the use of natural language because as soon as you
formalize something sufficiently and you have at least one computer,
there is an irresistable tendency to want to create, not
knowledge-in-students, but Yet Another programming tool or programming
language which in many cases is destructive of knowledge-in-students.
Instead of learning to discourse as did Dijkstra in natural language
about program behavior, the student masters a proof notation, inline
and preprocessed with his program, and the result isn't that the
programs become self-assuring.
Instead they become a mass of claptrap because the connection with the
human world (in the form of insight) has been abandoned in favor of
gear.
Thanks for an illuminating proof. I shall keep this simpler approach
in mind.
Does it work for
int nFactorial(int intN)
{
if (intN < 1) { ... error ... };
if (intN == 1) return(1);
return(nFactorial(intN - 1));
}
?
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/21/2004 1:17:27 AM
|
|
Richard Heathfield wrote:
>
> Edward G. Nilges wrote:
>
> > Willem <willem@stack.nl> wrote in message
> > news:<slrnc0ct6e.1jac.willem@toad.stack.nl>...
> >>
> >> Could you give an example of a correctness proof involving recursion ?
> But the "proof" is flawed; the function does not return the correct
I didn't even realize that it was C code.
I thought it was a manifesto.
--
pete
|
|
0
|
|
|
|
Reply
|
pfiland (6613)
|
1/21/2004 1:17:34 AM
|
|
Edward wrote:
) The use of the word "terminologies" reifies understanding and means,
) literally, that the mathematician becomes a mathematical clerk. The
) proof was indeed "inductive" but the problem with calling it
) "inductive" as a teacher is that it is then promptly confused with an
) *empirical* argument. That's why an alternate description is
) "recursive".
I have never heard an empirical proof called 'inductive'.
) The increments and decrements are as explicit as hell, for Next
) intIndex1 is in effect a command to increment or decrement, context
) sensitive with regards to the Step clause.
'context sensitive' indeed. In other words, implicit.
) Not in Visual Basic. Nor in C to my knowledge. Chalk up a point in
) favor of Hungarian Notation!
Don't you use HN to mark the return type of a function, then ?
I think the people at microsoft do.
) As a layperson I would have to ask if it is not "hidden" in the max.
) Also, I consider my proof more elegant. Even an Intuitionist cannot
) get by without recursion and I don't know why delenda est.
Nope, that max is just there because it's possible for n2 to be 0 at the
beginning. Maybe there's a more elegant way but the last time I did proofs
of correctness was over 10 years ago.
) My concern is the use of natural language because as soon as you
) formalize something sufficiently and you have at least one computer,
) there is an irresistable tendency to want to create, not
) knowledge-in-students, but Yet Another programming tool or programming
) language which in many cases is destructive of knowledge-in-students.
I find it a great benefit that it's possible to have a machine-assisted
proof of correctness. Humans make errors, you know.
Besides, formal maths is less prone to errors anyway.
) Instead they become a mass of claptrap because the connection with the
) human world (in the form of insight) has been abandoned in favor of
) gear.
I disagree. Especially if you use the language that was designed to be
used with this method of proving, everything is very clean and visible.
) Does it work for
)
) int nFactorial(int intN)
) {
) if (intN < 1) { ... error ... };
) if (intN == 1) return(1);
) return(nFactorial(intN - 1));
) }
Yes, obviously. I'm not sure I remember the formalities exactly, though.
Could be that this requires something that looks a bit like an inductive
proof (although not quite, the 'first step' is implicit).
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/21/2004 2:06:37 AM
|
|
gswork@mailcity.com (gswork) wrote in message news:<81f33a98.0401150021.55548cdb@posting.google.com>...
> spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401141720.5fe473eb@posting.google.com>...
>
> > However, I have a lot of real work to do and I've just spent a
> > mini-vacation on the northern coast of California. I decided to desist
> > examining this discourse cascade, since people will believe what they
> > like, and to desist responding for at least a month or so.
>
> well, i for one don't really have a problem with you posting to
> comp.programming as such. I'd go as far as to think it creates a net
> gain, for all the theory on noise -> signal, what you stir up spins
> off a lot of interesting technical discussion and some other comment
> of merit, shame about the animosity also stirred and i sometimes
> question the reference to (purely IMO) social issues so broad as to be
> difficult at best to relate to programming as programming, esp. given
> an audience of working programmers who showed up in search of an
> algorithm! You'd go down a storm in comp.society.* if anyone read
> those groups anymore...
>
> Your posts do increase the tempo of comp.programming to near frenetic
> and i guess that's unsustainable. so rest up and next time a more
> genteel facet of yourself eh? mindful of the roomfull of working
> programmers that are the audience, mostly interested in programming as
> programming.
I think I shall generalize my strategy in the response to Willem on
software correctness proving. I shall not reply to the working set of
trolls in this ng, nor to Richard who is not a troll. This should
reduce the noise level.
I shall focus on technology and its relation to the critical theory of
computer science as seen in my article on Labyrinths.
The "critical theory of computer science" is a "thick" (detailed)
analysis of the ways in which actual, applied computer science makes
the rich richer and the poor, poorer...analogous to critical legal
studies which shows how actual law as practised in actual courts tends
in American and other societies to screw the little guy.
For example, the article I published at Labyrinths asked the question
why it is all "business rules" in MIS.
Also, there is a strange discussion of how we all can be "super"
programmers by...coding a lot of lines of code per month. Well, gee,
my boss at one job had me determine this for him and when I gave him
the numbers (4K debugged lines of VB per month, Hungarian Notation and
everything) guy gave me a bonus. I also left the company on the same
day because this guy, albeit a real smart individual, like to beat
people up and throw them across the room, and I am a sensitive guy.
I think the problem, with the strange discussion, is whether we can so
self-objectify as to even WANT to grind out lines of code without at
all participating in problem definition, including bringing in the
interests of other parties beyond upper managers and shareholders. In
terms of today's business climate, this is wild-eyed radicalism, of
course.
But one of the reasons software took longer in the 1970s was indeed
the fact that programmers would talk back, and ask about the interests
of other parties.
Today, we have been trained to focus exclusively on the needs of
people who define themselves as the only stakeholders. When I raised
this issue in a seminar with Ralph Nader, all the Ralphster could
suggest was a complete abandonment of the corporate world...which is
impossible when you have kids.
The corporation and its "needs" have, to programmers and everybody
else, become take it or leave it. For example, an article on a poor
woman in last Sunday's New York Times describes how no social worker
even thought to call her supervisor at work, and ask the supervisor to
let her work a schedule that would allow her time to take care of her
daughter.
To programmers in particular and society in general, the corporation
and its business rules have become take it or leave it. Even Nader
reinforces this view by being so intransigeant about how bad
corporations are, to the extent that you are either working for him
for peanuts, or a Bad Guy, laughing all the way to the bank.
Only Peter Drucker has a more balanced and a more humanistic view in
which he acknowledges that corporations have genuine needs that must
be respected, but balances this by acknowledging that society exists
and has its own demands.
Programmers have been so brutalized by the strong view of "all power
to the corporation" (as pernicious in its own way as "all power to the
Soviets") that they in fact are skilled, as are many white collar
people, at talking the talk but less than productive in real terms,
the corporation's own terms, in reality: whence the 80% failure rate
of "enterprise" systems.
Willem had some very useful information on software correctness, but I
had to beat it out of him. I was just wrong about "recursive" or
"inductive" proofs being basic to modern correctness proving because
Willem showed us how it is done today, by a sequence of pre and post
positions inside the loop body.
I submit that this is what this ng needs.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/21/2004 2:07:32 AM
|
|
In article <f5dda427.0401201717.226afd3c@posting.google.com>, spinoza1111
@yahoo.com says...
> Willem <willem@stack.nl> wrote in message news:<slrnc0qe1m.6nc.willem@toad.stack.nl>...
>
> I have skipped over the working set of trolls including Randy Howard.
Why? Because I pointed out a flaw in your implementation? You haven't
answered how you can have a proof of an algorithm which is demonstrably
broken. That isn't trolling, that's a legitimate programming question.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/21/2004 2:43:50 AM
|
|
Edward G. Nilges wrote:
> Willem <willem@stack.nl> wrote in message
> news:<slrnc0qe1m.6nc.willem@toad.stack.nl>...
>
> I have skipped over the working set of trolls including Randy Howard.
> I will also skip Richard Heathfield who is higher on the evolutionary
> scale than the troll and is more a gnome.
Mr Nilges's "proof" has been criticised for being deeply flawed. Clearly, if
he is not prepared to address the flaws, then the proof remains flawed. He
can pretend, if he likes, that it is not, but this does not affect reality,
only his perception of it.
> Per my committment I shall
> keep the focus here on program correctness proving and deduction of
> behavior, mit seinem relationship to a critical theory of computer
> science.
That's very silly. The program Mr Nilges was attempting to prove correct
was, in fact, incorrect, so any proof that "proves" it correct must be
wrong.
>> P.S: Can you have a variable with the same name as a function ?
>
> Not in Visual Basic. Nor in C to my knowledge. Chalk up a point in
> favor of Hungarian Notation!
Mr Nilges appears not to have noticed that Hungarian Notation did not save
him. Here is Mr Nilges's code again:
int nFactorial(int n)
{
if ( n < 1 ) { ... error handler ... }
for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
return(nFactorial);
}
As is very plain, Mr Nilges has misused Hungarian Notation here by
describing types rather than purposes; he has mis-named the function (see
below); he has even misunderstood the type of the function, which is not,
as his nFactorial name suggests, int, but in fact int(int), a very
different type indeed.
What a pity Mr Nilges did not try to compile his proven-to-be-correct code.
Had he done so, he would have found very quickly that it is not correct.
A simple fix for the naming problem would be to have a convention of
including verbs in function names, e.g. CalculateFactorial.
> Also, I consider my proof more elegant.
But Mr Nilges's proof *doesn't work*. If it doesn't prove his code correct,
then it hasn't achieved its objective. And if it does, then it's proved
flawed code correct, which is no use at all.
> I do not know whether it disproves the need for recursion ANYWHERE in
> proving programs correct (or deductively predicting their behavior).
> Can you provide a proof that recursion is never needed?
I can't, but I suspect Mr Nilges will find - if he looks hard enough - that
recursion in proofs can always be eliminated.
> Does it work for
>
> int nFactorial(int intN)
> {
> if (intN < 1) { ... error ... };
> if (intN == 1) return(1);
> return(nFactorial(intN - 1));
> }
Mr Nilges didn't compile this one, either - and it still has the range flaws
mentioned elsethread. What's more, he has unnecessarily introduced
recursion into the calculation of a factorial, where it is clearly not
useful.
Exercise for high school programming students:
1. (8 marks.) Provide a critique of Mr Nilges's code.
2. (2 marks.) Write a better version.
Only two marks for the second question, because it's so easy.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/21/2004 6:09:41 AM
|
|
CBFalconer wrote:
> Randy Howard wrote:
>>
> ... snip ...
>>
>> Why keep asking him questions then elsethread? Let him go wherever
>> he plans to go and be done with him.
>
> He may have done so. The ratio of transferred to available
> messages in this group has suddenly risen sharply for me.
It looks like it's about to drop again.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/21/2004 6:11:21 AM
|
|
Edward G. Nilges wrote:
<80+ lines of nonsense snipped>
> Willem had some very useful information on software correctness, but I
> had to beat it out of him.
Mr Nilges may have trouble getting useful information out of people, but
others here don't seem to have that problem. I have found Willem to be a
most helpful and forthcoming contributor to the newsgroup.
> I was just wrong about "recursive" or
> "inductive" proofs being basic to modern correctness proving because
> Willem showed us how it is done today, by a sequence of pre and post
> positions inside the loop body.
Mr Nilges's logic is flawed. He was /not/ just wrong because Willem showed
us how it is done today. Rather, Mr Nilges was just wrong.
> I submit that this is what this ng needs.
What this newsgroup needs is a higher signal-to-noise ratio. When Mr Nilges
is active, that ratio drops.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/21/2004 6:17:46 AM
|
|
On Wed, 21 Jan 2004, Richard Heathfield wrote:
>
> Edward G. Nilges wrote:
> >
> > Does it work for
> >
> > int nFactorial(int intN)
> > {
> > if (intN < 1) { ... error ... };
> > if (intN == 1) return(1);
> > return(nFactorial(intN - 1));
> > }
>
> Mr Nilges didn't compile this one, either - and it still has the range
> flaws mentioned elsethread.
I see no range flaws here. What did you have in mind? :-)
I see also that Nilges specifically asked, "Does [whosever method
of program correctness proving] work for [this function]?", which
one might take to indicate that Nilges believed [whosever method]
to be flawed in some way. After all, if it *did* "work" to prove
this function correct, then it would be flawed in the extreme!
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/21/2004 6:27:14 AM
|
|
Arthur J. O'Dwyer wrote:
>
> On Wed, 21 Jan 2004, Richard Heathfield wrote:
>>
>> Edward G. Nilges wrote:
>> >
>> > Does it work for
>> >
>> > int nFactorial(int intN)
>> > {
>> > if (intN < 1) { ... error ... };
>> > if (intN == 1) return(1);
>> > return(nFactorial(intN - 1));
>> > }
>>
>> Mr Nilges didn't compile this one, either - and it still has the range
>> flaws mentioned elsethread.
>
> I see no range flaws here. What did you have in mind? :-)
Oh, good heavens - I see what you mean. It doesn't just return incorrect
results for 0 and for n! > INT_MAX - it returns incorrect results for
/every/ n except 1. Is there no beginning to Mr Nilges's talents?
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/21/2004 7:54:30 AM
|
|
Richard wrote:
)> Willem had some very useful information on software correctness, but I
)> had to beat it out of him.
)
) Mr Nilges may have trouble getting useful information out of people, but
) others here don't seem to have that problem. I have found Willem to be a
) most helpful and forthcoming contributor to the newsgroup.
Thank you. :)
) Mr Nilges's logic is flawed. He was /not/ just wrong because Willem showed
) us how it is done today. Rather, Mr Nilges was just wrong.
Well, what I showed is the way I was taught to do correctness proofs back
in '91. First year of CS on the university.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/21/2004 1:07:19 PM
|
|
Willem wrote:
> Richard wrote:
>
> ) Mr Nilges's logic is flawed. He was /not/ just wrong because Willem
> showed ) us how it is done today. Rather, Mr Nilges was just wrong.
>
> Well, what I showed is the way I was taught to do correctness proofs back
> in '91. First year of CS on the university.
I'm not disputing what you showed us. I'm disputing Mr Nilges's logic. :-)
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/21/2004 2:54:58 PM
|
|
Richard Heathfield wrote:
> Arthur J. O'Dwyer wrote:
<snip>
>> I see no range flaws here. What did you have in mind? :-)
>
> Oh, good heavens - I see what you mean. It doesn't just return incorrect
> results for 0 and for n! > INT_MAX - it returns incorrect results for
> /every/ n except 1. Is there no beginning to Mr Nilges's talents?
So the range is 'n <> 1' :>
--
Corey Murtagh
The Electric Monk
"Quidquid latine dictum sit, altum viditur!"
|
|
0
|
|
|
|
Reply
|
emonk3 (287)
|
1/21/2004 9:00:45 PM
|
|
Willem <willem@stack.nl> wrote in message news:<slrnc0rnld.30ns.willem@toad.stack.nl>...
> Edward wrote:
> ) The use of the word "terminologies" reifies understanding and means,
> ) literally, that the mathematician becomes a mathematical clerk. The
> ) proof was indeed "inductive" but the problem with calling it
> ) "inductive" as a teacher is that it is then promptly confused with an
> ) *empirical* argument. That's why an alternate description is
> ) "recursive".
>
> I have never heard an empirical proof called 'inductive'.
Well, then, you need to get out more. Induction versus deduction is an
old wheezer from informal logic. Mathematical "induction" was so named
in the later 19th century as a metaphor for scientific induction as
seen in Mill. But those who named it knew full well that it isn't
"empirical", which Mills' induction IS.
>
> ) The increments and decrements are as explicit as hell, for Next
> ) intIndex1 is in effect a command to increment or decrement, context
> ) sensitive with regards to the Step clause.
>
> 'context sensitive' indeed. In other words, implicit.
Yes, C is terribly explicit and most awfully context free. To a fault.
>
> ) Not in Visual Basic. Nor in C to my knowledge. Chalk up a point in
> ) favor of Hungarian Notation!
>
> Don't you use HN to mark the return type of a function, then ?
> I think the people at microsoft do.
Nope, because in an object oriented style, you typically mention the
object and its method as in classname.method. Here, using the class
name will often prompt you, in a development environment, with a small
list of methods and properties and here, using Hungarian gets in the
way. HN is best for value objects as a way of getting the same sort of
facility (variable name prompts) to focus on the identifiers you are
interested in.
>
> ) As a layperson I would have to ask if it is not "hidden" in the max.
> ) Also, I consider my proof more elegant. Even an Intuitionist cannot
> ) get by without recursion and I don't know why delenda est.
>
> Nope, that max is just there because it's possible for n2 to be 0 at the
> beginning. Maybe there's a more elegant way but the last time I did proofs
> of correctness was over 10 years ago.
>
> ) My concern is the use of natural language because as soon as you
> ) formalize something sufficiently and you have at least one computer,
> ) there is an irresistable tendency to want to create, not
> ) knowledge-in-students, but Yet Another programming tool or programming
> ) language which in many cases is destructive of knowledge-in-students.
>
> I find it a great benefit that it's possible to have a machine-assisted
> proof of correctness. Humans make errors, you know.
> Besides, formal maths is less prone to errors anyway.
Hmm, is it? There have been huge errors in formal proofs including the
first edition of the Princeton proof of Fermat's last theorem. Whereas
the breezy, narrative style of the informal proof makes errors easier
to find.
>
> ) Instead they become a mass of claptrap because the connection with the
> ) human world (in the form of insight) has been abandoned in favor of
> ) gear.
>
> I disagree. Especially if you use the language that was designed to be
> used with this method of proving, everything is very clean and visible.
>
> ) Does it work for
> )
> ) int nFactorial(int intN)
> ) {
> ) if (intN < 1) { ... error ... };
> ) if (intN == 1) return(1);
> ) return(nFactorial(intN - 1));
> ) }
>
> Yes, obviously. I'm not sure I remember the formalities exactly, though.
> Could be that this requires something that looks a bit like an inductive
> proof (although not quite, the 'first step' is implicit).
>
The next to last line should be of course
return(intN * nFactorial(intN - 1));
This was a typo and not a "bug".
Recursion is pretty fundamental. While I remain obliged for your
instruction, I am not sure it can be non-recursively applied to the
above.
>
> SaSW, Willem
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/21/2004 11:57:53 PM
|
|
"Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
news:f5dda427.0401191828.4722200d@posting.google.com...
> The following extempore C function
>
> int nFactorial(int n)
> {
> if ( n < 1 ) { ... error handler ... }
> for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
> return(nFactorial);
> }
>
> has this correctness proof
I've snipped your extensive proof because I have a simple question.
The above function does not appear to work for an input value of zero.
Why is it that you do not return 1 for this input? Am I missing something?
--
Fred J. Smith
"When in doubt, read the instructions".
|
|
0
|
|
|
|
Reply
|
fred.j.smith (2)
|
1/21/2004 11:59:31 PM
|
|
Willem <willem@stack.nl> wrote in message news:<slrnc0suc7.1ijn.willem@toad.stack.nl>...
> Richard wrote:
> )> Willem had some very useful information on software correctness, but I
> )> had to beat it out of him.
> )
> ) Mr Nilges may have trouble getting useful information out of people, but
> ) others here don't seem to have that problem. I have found Willem to be a
> ) most helpful and forthcoming contributor to the newsgroup.
>
> Thank you. :)
Mr. Heathfield's English sense of humor seems to be missing and indeed
to have sprung a leak. Of course, I did not beat the proof literally
or for the most part metaphorically out of Willem. But I did insist
that we not post denials without examples and as a result mein Herr
posted an excellent proof.
Richard is less amenable to such correction.
>
> ) Mr Nilges's logic is flawed. He was /not/ just wrong because Willem showed
> ) us how it is done today. Rather, Mr Nilges was just wrong.
>
> Well, what I showed is the way I was taught to do correctness proofs back
> in '91. First year of CS on the university.
It is possible that the teacher was unclear on the concept of a
recursive argument, or, more likely, less difficult ways exist of
proving correctness of iterative loops. Since I proved theorems using
recursion (including recursion itself) in Quine's system before having
access to a computer, I don't find recursion difficult.
But it sounds like you studied CS at a European university which might
be expected to foreground correctness.
The paradox remains: if you add to the programming notation, a complex
formal notation for proofs, then you have an additional exposure in
which you might make errors in the use of the formal notation.
I would suggest instead a class in which you close-read Dijkstra and
other practicing programmers who kin write.
The class would be "Programming as Literature" and authors would
include beyond Dijkstra, Knuth, Gries and Plauger.
To keep nonprogrammers out especially Jane Austen types, I would
require a paper and program every week in which the paper would
"prove" the program right by discoursing about the program.
>
>
> SaSW, Willem
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/22/2004 12:07:20 AM
|
|
Richard Heathfield wrote:
> Edward G. Nilges wrote:
>
> <80+ lines of nonsense snipped>
>
>
>>Willem had some very useful information on software correctness, but I
>>had to beat it out of him.
>
>
> Mr Nilges may have trouble getting useful information out of people, but
> others here don't seem to have that problem. I have found Willem to be a
> most helpful and forthcoming contributor to the newsgroup.
>
>
>>I was just wrong about "recursive" or
>>"inductive" proofs being basic to modern correctness proving because
>>Willem showed us how it is done today, by a sequence of pre and post
>>positions inside the loop body.
>
>
> Mr Nilges's logic is flawed. He was /not/ just wrong because Willem showed
> us how it is done today. Rather, Mr Nilges was just wrong.
>
>
>>I submit that this is what this ng needs.
>
>
> What this newsgroup needs is a higher signal-to-noise ratio. When Mr Nilges
> is active, that ratio drops.
>
Is there no news:comp.dev.null ? There certainly should be!
Jim
|
|
0
|
|
|
|
Reply
|
james.l.NOSPAM.scott (20)
|
1/22/2004 2:28:33 AM
|
|
Edward wrote:
)> Well, what I showed is the way I was taught to do correctness proofs back
)> in '91. First year of CS on the university.
)
) It is possible that the teacher was unclear on the concept of a
) recursive argument,
A professor at a university of technology ? Highly unlikely.
) or, more likely, less difficult ways exist of
) proving correctness of iterative loops.
Difficult for whom ? I find it a lot easier to write a proof down in terse
mathematical notation, so the language doesn't get in the way.
Language is notoriously ambiguous.
) Since I proved theorems using
) recursion (including recursion itself) in Quine's system before having
) access to a computer, I don't find recursion difficult.
Induction was part of one of the first classes on logic. Very basic stuff.
Recursion (as in algorithms) came later, and a lot of students seemed to
have trouble with it.
) But it sounds like you studied CS at a European university which might
) be expected to foreground correctness.
Well, yes.
) The paradox remains: if you add to the programming notation, a complex
) formal notation for proofs, then you have an additional exposure in
) which you might make errors in the use of the formal notation.
False. The two notations are redundant. I can easily check, at the
statement level, if the prepositions are correct. If I'm satisfied that
they are, I'm also satisfied that the program itself is correct.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/22/2004 2:51:14 AM
|
|
Corey Murtagh wrote:
> Richard Heathfield wrote:
>
>> Arthur J. O'Dwyer wrote:
> <snip>
>>> I see no range flaws here. What did you have in mind? :-)
>>
>> Oh, good heavens - I see what you mean. It doesn't just return incorrect
>> results for 0 and for n! > INT_MAX - it returns incorrect results for
>> /every/ n except 1. Is there no beginning to Mr Nilges's talents?
>
> So the range is 'n <> 1' :>
Yes. The program's fundamental design flaws were completely obscured by its
superficial design flaws.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/22/2004 5:01:01 AM
|
|
Edward G. Nilges wrote:
> The next to last line should be of course
>
> return(intN * nFactorial(intN - 1));
>
> This was a typo and not a "bug".
It was a bug. Typos are bugs. Note that the revised code is still flawed for
most inputs.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/22/2004 5:03:11 AM
|
|
Edward G. Nilges wrote:
> But I did insist
> that we not post denials without examples
Mr Nilges's position might be more credible if he posted supporting evidence
to back up his own assertions.
> Richard is less amenable to such correction.
This will raise a wry smile for anyone familiar with the OP's posting
history.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/22/2004 5:08:48 AM
|
|
"Richard Heathfield" <invalid@address.co.uk.invalid> wrote:
> Edward G. Nilges wrote:
> > I do not know whether it disproves the need for recursion ANYWHERE in
> > proving programs correct (or deductively predicting their behavior).
> > Can you provide a proof that recursion is never needed?
>
> I can't, but I suspect Mr Nilges will find - if he looks hard enough - that
> recursion in proofs can always be eliminated.
By "recursion," if you mean self-reference, I would say you
can't even define many of the useful things in mathematics
without it, let alone prove anything about them. Once you
have a transfinite recursively/inductively-defined set (say,
the set of natural numbers for instance), you can use that
to essentially package "recursion" away, but on some level,
it's going to be there one way or the other for any
non-trivial proof.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/22/2004 5:21:03 AM
|
|
"Fred J. Smith" <fred.j.smith@netpeople.net> wrote:
> "Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
> news:f5dda427.0401191828.4722200d@posting.google.com...
> > The following extempore C function
> >
> > int nFactorial(int n)
> > {
> > if ( n < 1 ) { ... error handler ... }
> > for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
> > return(nFactorial);
> > }
> >
> > has this correctness proof
>
> I've snipped your extensive proof because I have a simple question.
>
> The above function does not appear to work for an input value of zero.
>
> Why is it that you do not return 1 for this input? Am I missing something?
I don't think 0! is necessarily defined. Whenever it is
defined, it is defined in such a way as to equal 1, but
I'm pretty sure I've seen factorial defined as a function
from N to N where N is the set of of all natural numbers
(using, of course, the definition of a natural number that
does not include 0).
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/22/2004 5:25:19 AM
|
|
"Willem" <willem@stack.nl> wrote in message <news:slrnc0uel2.22n3.willem@toad.stack.nl>...
> Edward wrote:
> )> Well, what I showed is the way I was taught to do correctness proofs back
> )> in '91. First year of CS on the university.
> )
> ) It is possible that the teacher was unclear on the concept of a
> ) recursive argument,
>
> A professor at a university of technology ? Highly unlikely.
Whyever not? After all, EGN claims to have been an instructor at a
university of technology, and he's certainly unclear on the concept.
--
Joe Foster <mailto:jlfoster%40znet.com> DC8s in Spaace: <http://www.xenu.net/>
WARNING: I cannot be held responsible for the above They're coming to
because my cats have apparently learned to type. take me away, ha ha!
|
|
0
|
|
|
|
Reply
|
joe303 (601)
|
1/22/2004 5:55:10 AM
|
|
Edward G. Nilges wrote:
> int nFactorial(int intN)
> {
> if (intN < 1) { ... error ... };
> if (intN == 1) return(1);
> return(nFactorial(intN - 1));
> }
You do realize, of course, that this "nFactorial" function returns the
value 1 for all integers > 0.
I think maybe you mean:
unsigned int fact(unsigned int n) // n is positive or 0.
{
if (n == 0) return 1; /* 0! == 1. */
/* n > 0 */
return n * fact(n-1); /* the definition of n! is n * (n-1)! */
/* an (n > 0) - 1 is never < 0 so no overflow. */
/* therefor the return is n! */
}
In this case I am using the definition of the ! operation to prove my
function. AFAICT this is perfectly adiquate and appropriate for this
algorithm. There are of course other algorithms that require deeper
thinking to prove, this one is elementary. Induction is a valid way to
prove and, like I mentioned earlier, is gone over quite a bit in TAOCP.
I could have added the following after the check for 0 to remove a small
amount of redundant operations:
if (n < 3) return n;
NR
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/22/2004 5:56:43 AM
|
|
"FM" <dartdanfm@yahoo.com> wrote in message
news:39JPb.91176$cM1.16475190@twister.nyc.rr.com...
> "Fred J. Smith" <fred.j.smith@netpeople.net> wrote:
> > "Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
> > news:f5dda427.0401191828.4722200d@posting.google.com...
> > > The following extempore C function
> > >
> > > int nFactorial(int n)
> > > {
> > > if ( n < 1 ) { ... error handler ... }
> > > for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *=
n2;
> > > return(nFactorial);
> > > }
> > >
> > > has this correctness proof
> >
> > I've snipped your extensive proof because I have a simple question.
> >
> > The above function does not appear to work for an input value of zero.
> >
> > Why is it that you do not return 1 for this input? Am I missing
something?
>
> I don't think 0! is necessarily defined. Whenever it is
> defined, it is defined in such a way as to equal 1, but
> I'm pretty sure I've seen factorial defined as a function
> from N to N where N is the set of of all natural numbers
> (using, of course, the definition of a natural number that
> does not include 0).
Actually is is. Please review this site and then tell me what I am missing.
http://mathworld.wolfram.com/Factorial.html
--
Fred J. Smith
|
|
0
|
|
|
|
Reply
|
fred.j.smith (2)
|
1/22/2004 6:09:54 AM
|
|
On Thu, 22 Jan 2004, FM wrote:
>
> I don't think 0! is necessarily defined. Whenever it is
> defined, it is defined in such a way as to equal 1, but
> I'm pretty sure I've seen factorial defined as a function
> from N to N where N is the set of of all natural numbers
> (using, of course, the definition of a natural number that
> does not include 0).
I seriously doubt that any mathematical text defines factorial
in that way. "Natural numbers" usually refers to the set N,
which contains zero; and k! is defined for all k >= 0.
Less argumentatively-from-authority, why *wouldn't* you define
zero factorial? It's obviously equal to 1 (1!/1 = 0! = 1),
unlike notations like (-1)! which have no intuitive meaning.
It makes no sense to define a factorial function that doesn't
do something sensible with zero.
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/22/2004 6:10:22 AM
|
|
In article <39JPb.91176$cM1.16475190@twister.nyc.rr.com>, dartdanfm@yahoo.com
says...
> I don't think 0! is necessarily defined. Whenever it is
> defined, it is defined in such a way as to equal 1, but
> I'm pretty sure I've seen factorial defined as a function
> from N to N where N is the set of of all natural numbers
> (using, of course, the definition of a natural number that
> does not include 0).
I'm pretty sure it's always been defined with non-negative
integers such that 0! = 1. Can you point me to a formal
definition in a respected source that matches your claim
above?
BTW, "The Penguin Dictionary of Curious and Interesting Numbers",
by D. Wells, Penguin Books, 1986, defines zero factorial to be
1.
There are plenty of other sources for this type of information,
but I think this is about as obscure as I could find on short
notice. :-)
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/22/2004 6:22:40 AM
|
|
Fred wrote:
) Actually is is. Please review this site and then tell me what I am missing.
) http://mathworld.wolfram.com/Factorial.html
You're missing the 'natural number religious war', obviously.
It's heresy to say that the natural numbers include 0. Or don't include 0.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/22/2004 1:44:12 PM
|
|
)> A professor at a university of technology ? Highly unlikely.
Joe wrote:
) Whyever not? After all, EGN claims to have been an instructor at a
) university of technology, and he's certainly unclear on the concept.
Sorry, I'll rephrase that.
A professor at a European university of technology ? Highly unlikely.
:-)
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/22/2004 1:46:20 PM
|
|
Edward G. Nilges wrote:
> Willem <willem@stack.nl> wrote in message news:<slrnc0rnld.30ns.willem@toad.stack.nl>...
>
>>Edward wrote:
<snip>
>>) int nFactorial(int intN)
>>) {
>>) if (intN < 1) { ... error ... };
>>) if (intN == 1) return(1);
>>) return(nFactorial(intN - 1));
>>) }
>>
>>Yes, obviously. I'm not sure I remember the formalities exactly, though.
>>Could be that this requires something that looks a bit like an inductive
>>proof (although not quite, the 'first step' is implicit).
>
> The next to last line should be of course
>
> return(intN * nFactorial(intN - 1));
>
> This was a typo and not a "bug".
A typo is where you hit the wrong key, or hit keys in the wrong
sequence, resulting in a malformed section of the typed text. An
omission does not, by reasonable definition, count as a typo.
Regardless however, a typo in or omission from a piece of source code is
a type of bug since it causes incorrect operation.
In short: your originally posted code had a bug.
--
Corey Murtagh
The Electric Monk
"Quidquid latine dictum sit, altum viditur!"
|
|
0
|
|
|
|
Reply
|
emonk3 (287)
|
1/22/2004 9:27:11 PM
|
|
Arthur J. O'Dwyer wrote:
<snipo>
> Less argumentatively-from-authority, why *wouldn't* you define
> zero factorial? It's obviously equal to 1 (1!/1 = 0! = 1),
> unlike notations like (-1)! which have no intuitive meaning.
> It makes no sense to define a factorial function that doesn't
> do something sensible with zero.
The proof above (1!/1 = 0! = 1) could therefore apply to negatives, yes?
In other words:
-1! = 0!/-1 = -1
-2! = -1!/-2 = 0.5
-3! = -2!/-3 = 0.33..
etc.
Fun with numbers :>
--
Corey Murtagh
The Electric Monk
"Quidquid latine dictum sit, altum viditur!"
|
|
0
|
|
|
|
Reply
|
emonk3 (287)
|
1/22/2004 9:33:03 PM
|
|
Corey wrote:
) The proof above (1!/1 = 0! = 1) could therefore apply to negatives, yes?
) In other words:
)
) -1! = 0!/-1 = -1
) -2! = -1!/-2 = 0.5
) -3! = -2!/-3 = 0.33..
) etc.
You mean -0.166.. of course.
Sounds logical, if you say that the factorial is 'multiply-to-the-right'
and 'divide-to-the-left', then you could say:
new_factorial(-x) = -1^x / factorial(x)
I guess if you want to define factorials on Z, this should be the way.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/22/2004 9:41:11 PM
|
|
Corey wrote:
) The proof above (1!/1 = 0! = 1) could therefore apply to negatives, yes?
) In other words:
)
) -1! = 0!/-1 = -1
) -2! = -1!/-2 = 0.5
) -3! = -2!/-3 = 0.33..
) etc.
You mean -0.166.. of course.
Sounds logical, if you say that the factorial is 'multiply-to-the-right'
and 'divide-to-the-left', then you could say:
new_factorial(-x) = -1^x / factorial(x)
I guess if you want to define factorials on Z, this should be the way.
Of course, this function is from Z to Q, which isn't quite that nice.
Maybe you can map some function from R to R that matches this function on
all numbers in Z, and is smooth, to get a 'factorial' from R to R ?
Or has this been done already ?
What would be the derivative of 'f(x) = x!' ?
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/22/2004 9:44:16 PM
|
|
Corey Murtagh wrote:
> Arthur J. O'Dwyer wrote:
>
> <snipo>
>> Less argumentatively-from-authority, why *wouldn't* you define
>> zero factorial? It's obviously equal to 1 (1!/1 = 0! = 1),
>> unlike notations like (-1)! which have no intuitive meaning.
>> It makes no sense to define a factorial function that doesn't
>> do something sensible with zero.
>
> The proof above (1!/1 = 0! = 1) could therefore apply to negatives, yes?
Rearranging slightly: N! = (N + 1)! / (N + 1)
> In other words:
>
> -1! = 0!/-1 = -1
But this gives us
-1! = 0! / 0
which breaks the rules.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/22/2004 10:39:03 PM
|
|
On Thu, 22 Jan 2004, Willem wrote:
>
> Corey wrote:
> ) The proof above (1!/1 = 0! = 1) could therefore apply to negatives, yes?
> ) In other words:
> )
> ) -1! = 0!/-1 = -1
Mistake in Corey's math: this should properly read
-1! = 0!/0 does not exist
and thus we see that (-1)! is, as I wrote, nonsensical.
> Sounds logical, if you say that the factorial is 'multiply-to-the-right'
> and 'divide-to-the-left', then you could say:
>
> new_factorial(-x) = -1^x / factorial(x)
So you're proposing
3! = ((3*2)*1)
2! = (2*1)
1! = 1
0! = 1
(-1)! = -1
(-2)! = (-1/-2)
(-3)! = ((-1/-2)/-3)
Oddly asymmetrical, if you ask me. :) Why not make at least the
Arabic numerals "matching", and write
3! = ((3*2)*1)
2! = (2*1)
1! = 1
0! = 1
(-1)! = -1
(-2)! = (-2/-1)
(-3)! = ((-3/-2)/-1)
?
Obviously, because multiplication is commutative and division isn't.
You're not going to get anywhere interesting on this tack.
> I guess if you want to define factorials on Z, this should be the way.
>
> Of course, this function is from Z to Q, which isn't quite that nice.
Why, I've seen functions that go from Z to R! You don't know what
"nice" is! ;))
> Maybe you can map some function from R to R that matches this function on
> all numbers in Z, and is smooth, to get a 'factorial' from R to R ?
> Or has this been done already ?
http://mathworld.wolfram.com/GammaFunction.html
> What would be the derivative of 'f(x) = x!' ?
See Eq. 18 on that page, for example, and then replace 'n' by 'n-1'
and 'Gamma-prime(foo)' by 'D((foo)!)'.
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/22/2004 10:55:01 PM
|
|
"Fred J. Smith" <fred.j.smith@netpeople.net> wrote in message news:<100u4jcr2h97a0a@corp.supernews.com>...
> "Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
> news:f5dda427.0401191828.4722200d@posting.google.com...
> > The following extempore C function
> >
> > int nFactorial(int n)
> > {
> > if ( n < 1 ) { ... error handler ... }
> > for ( int nFactorial = n, int n2 = n - 1; n2 > 1; n2-- ) nFactorial *= n2;
> > return(nFactorial);
> > }
> >
> > has this correctness proof
>
> I've snipped your extensive proof because I have a simple question.
>
> The above function does not appear to work for an input value of zero.
>
> Why is it that you do not return 1 for this input? Am I missing something?
Factorial is fully defined only for natural numbers greater than zero.
It would be very wrong to return 1 for 0! factorial. This is because
the "factorial" of a number is at a minimum a product including that
number itself as the starting value.
But 0! factorial by this reasoning 0*x, or zero, and not one.
The program works for 0! factorial because it tells the user to take a
hike.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/22/2004 11:59:25 PM
|
|
Willem <willem@stack.nl> wrote in message news:<slrnc0vktb.fnm.willem@toad.stack.nl>...
> Fred wrote:
> ) Actually is is. Please review this site and then tell me what I am missing.
> ) http://mathworld.wolfram.com/Factorial.html
>
> You're missing the 'natural number religious war', obviously.
> It's heresy to say that the natural numbers include 0. Or don't include 0.
>
>
> SaSW, Willem
Kronecker said that "God made the natural numbers: all else is the
work of man".
The European Middle Ages got along very well without zero until guys
started losing their shirt in voyages of discovery, conquest and
trade, and for this reason, stole the concept of the number zero from
the heathen paynim Moors in order to have a coherent story for their
wives when they returned home.
This would perhaps privilege the truly natural numbers as starting
with one and not zero.
In the early history of computers, IBM reinforced the mediaeval
conception because its punched card numbered its columns commencing
with one. This infected IBM mainframes in general with a bias towards
starting stuff at one and not zero.
It were indeed the heathen paynim DEC users who started numbering
things at zero primarliy to cock a snook at IBM. Today, owing to C we
start at zero.
But even IBM was infected with the mystery and terror of the number
zero. Early in the 1970s, IBM manuals began appearing with pages
completely blank, except for the mysterious and terrible words, "this
page intentionally left blank".
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/23/2004 12:05:02 AM
|
|
Edward G. Nilges wrote:
> Factorial is fully defined only for natural numbers greater than zero.
Donald Knuth writes (in "The Art of Computer Programming"):
0! = 1
Who am I to believe?
No contest.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/23/2004 12:16:30 AM
|
|
Edward wrote:
) The European Middle Ages got along very well without zero until guys
) started losing their shirt in voyages of discovery, conquest and
) trade, and for this reason, stole the concept of the number zero from
) the heathen paynim Moors in order to have a coherent story for their
) wives when they returned home.
) <...>
You're confusing 0 as placeholder with the concept of 0 as an amount.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/23/2004 12:34:08 AM
|
|
Richard Heathfield wrote:
> Edward G. Nilges wrote:
>
>
>>Factorial is fully defined only for natural numbers greater than zero.
>
>
> Donald Knuth writes (in "The Art of Computer Programming"):
>
> 0! = 1
>
> Who am I to believe?
>
> No contest.
>
Every mathematical text I have seen that works with factorials assume 0!
= 1.
NR
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/23/2004 2:49:56 AM
|
|
In article <f5dda427.0401221559.7b26d940@posting.google.com>, spinoza1111
@yahoo.com says...
> Factorial is fully defined only for natural numbers greater than zero.
Because you say so? Pretty much everyone else in the mathematics and
CS community believe you to be incorrect. You could have easily said
"oops, I didn't implement that correctly due to a false perception
about how 0! worked". But no, you start posting made up historical
fictions to justify your errors.
> It would be very wrong to return 1 for 0! factorial.
Again, this flies in the face of numerous sources (at least 3 so far
by my count) that have been posted to this group. You've had zero
response to any of them. It's okay to admit you're wrong, everyone
already knows.
> The program works for 0! factorial because it tells the user to take a
> hike.
Actually it does not do that. The "error handling" was incomplete and
would not compile as posted. If you had wanted to to tell them that,
you could have coded it, assuming you know how. Even doing so, you
still would have been wrong. Find a reference in a respected source
supporting your opinion, go ahead, we're waiting.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/23/2004 3:14:56 AM
|
|
In article <40106524@news2.power.net.uk>, invalid@address.co.uk.invalid says...
> Edward G. Nilges wrote:
>
> > Factorial is fully defined only for natural numbers greater than zero.
>
> Donald Knuth writes (in "The Art of Computer Programming"):
>
> 0! = 1
>
> Who am I to believe?
Whereby Richard win's the January "Rhetorical Question Contest".
emoti:-)
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/23/2004 3:15:44 AM
|
|
"FM" <dartdanfm@yahoo.com> wrote in message news:<35JPb.91175$cM1.16474344@twister.nyc.rr.com>...
> "Richard Heathfield" <invalid@address.co.uk.invalid> wrote:
> > Edward G. Nilges wrote:
>
> > > I do not know whether it disproves the need for recursion ANYWHERE in
> > > proving programs correct (or deductively predicting their behavior).
> > > Can you provide a proof that recursion is never needed?
> >
> > I can't, but I suspect Mr Nilges will find - if he looks hard enough - that
> > recursion in proofs can always be eliminated.
OK, this is bullshit. I have some time and I shall reply.
Richard, my claim was the reverse and you failed to follow the
discussion properly. Willem showed us a non-trivial non-recursive
proof of an iterative algorithm.
Once again, by focusing on personalities in violation of Internet
courtesy standards and the charter of this ng, you make yourself look
foolish which damages the reputation and credibility you have
established with C unleashed.
I speculated, as a non-specialist in program proving, that recursion
might be universally needed in proving programs correct since in fact
when I was in graduate school it did occur frequently in the
literature I read. But Willem has shown how more recent art dispenses
with recursion for an iterative proof.
Since I used recursion in axiomatic set theory I was not certain why
it should be dispensed with but I conceded that Willem was right, and
for once a substantive discussion ensued.
Willem has speculated that I am not a perfessor of compsci and I'm
not, which is one reason I beat something useful out of him, since I
need the information. I was for a time an adjunct perfessor of applied
compsci at DeVry University and Roosevelt University, and I taught C
to compsci majors at Princeton. I have never been in the least bit
dishonest about this background, and I resent your continual
imputations that I am.
For example, you embarassed yourself when you interrupted a discussion
between a former staff member of Princeton's computing centers and
myself to imply I'd lied about the connection with Princeton, and I
had to waste time on clarifying the record.
I am working very hard on consulting assignments and completing a .Net
compiler for open publication such that readers of the book have
complete source code for a reasonable compiler.
As such I resent very much having to continually clarify the record
that you continue to occlude in a cult of personality, and
anti-personality that violates the charter of comp.programming at a
deep level. I shall be selective in these replies because I'm not a
Fascist, and I see no need to replicate texts at a high rate.
But be advised that any court of law in the UK and the USA will take
my texts far more seriously than yours, because unlike you I don't
speculate in a libelous fashion about personalities.
Because your feelings of false dominance were wounded by the
popularity of my 2000 thread on Steve McConnell's book, you have
conducted a misuse of this technology for two years. Although your
general culture is limited and you do not know it, to use electronic
technology to replicate lies at warp speed remains reminiscent of
Fascist praxis.
Having said this, I am going to return to my committments to gswork to
not reply to the working set of trolls and gnomes that continues to
misuse comp.programming.
>
> By "recursion," if you mean self-reference, I would say you
> can't even define many of the useful things in mathematics
> without it, let alone prove anything about them. Once you
> have a transfinite recursively/inductively-defined set (say,
> the set of natural numbers for instance), you can use that
> to essentially package "recursion" away, but on some level,
> it's going to be there one way or the other for any
> non-trivial proof.
This isn't bullshit, and Dan said it. But Willem has showed us, Dan,
that you can prove useful things about iterative programs without
using recursion.
This has an elegance of its own since the most parsimonious
mathematicians, the intuitionists, like recursive arguments as opposed
to reduction to absurdity based on excluded middle.
The nonrecursive approach might be more easily checked by a proof
checker onner upper.
>
> Dan.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/23/2004 3:36:57 AM
|
|
"Edward G. Nilges" <spinoza1111@yahoo.com> wrote:
> "FM" <dartdanfm@yahoo.com> wrote:
> > By "recursion," if you mean self-reference, I would say you
> > can't even define many of the useful things in mathematics
> > without it, let alone prove anything about them. Once you
> > have a transfinite recursively/inductively-defined set (say,
> > the set of natural numbers for instance), you can use that
> > to essentially package "recursion" away, but on some level,
> > it's going to be there one way or the other for any
> > non-trivial proof.
> This isn't bullshit, and Dan said it. But Willem has showed us, Dan,
> that you can prove useful things about iterative programs without
> using recursion.
I don't think iteration can be defined without "recursion."
As I said, once you have "recursion" packaged away in the
form of a recursively-defined set and take its various
properties for granted, it's trivial to prove a lot of
things apparently without recursion.
And I haven't followed this thread and the only things I
could find from Google where Willem "shows" any proofs are
the following:
|> All you need to do is prove that 'preposition-in-loop' holds during the
|> loop, and that 'preposition-in-loop' AND NOT 'loop-condition' implies
|> 'preposition-after-loop'. No recursion involved there.
Which is obviously incorrect. More specifically, any
provably infinite loop can be proven correct by this
method.
|> int nFactorial(int n)
|> {
|> int n2, f;
|> // n is an integer
|> if ( n < 1 ) { error() }
|> // n >= 1
|> for (
|> f = n,
|> n2 = n - 1;
|> // Guard
|> // f * max(n2,1)! == n!
|> n2 > 1;
|> // f * max(n2,1)! == n!
|> // n2 > 1
|> // Note: jump to begin of loop body.
|>
|> // Note: jump from end of loop body.
|> // f * max(n2-1,1)! == n!
|> n2--;
|> // f * max(n2,1)! == n!
|> // Note: Jump to guard
|> )
|> // begin of loop body
|> // f * max(n2,1)! == n!
|> // n2 > 1
|> f *= n2;
|> // f * max(n2 - 1,1)! == n!
|> // End of loop body.
|> // Loop guard was false, so:
|> // n2 <= 1
|> // f * max(n2,1)! == n!
|> // Therefore: f == n!
|> return(f);
|> // Function returns n!
|> }
Note the same flaw.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/23/2004 5:09:06 AM
|
|
"Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote:
> On Thu, 22 Jan 2004, FM wrote:
> > I don't think 0! is necessarily defined. Whenever it is
> > defined, it is defined in such a way as to equal 1, but
> > I'm pretty sure I've seen factorial defined as a function
> > from N to N where N is the set of of all natural numbers
> > (using, of course, the definition of a natural number that
> > does not include 0).
> I seriously doubt that any mathematical text defines factorial
> in that way. "Natural numbers" usually refers to the set N,
> which contains zero; and k! is defined for all k >= 0.
From what I've seen, the set N usually does *not* include 0.
In fact, before a few years ago, I don't think I had seen any
source that defined N as to include 0. In Computer Science,
N almost always includes 0, but that's a different story.
> Less argumentatively-from-authority, why *wouldn't* you define
> zero factorial?
Because it's outside the domain? If you have a function, and
you're given a domain (or define one), then it's automatically
undefined outside its domain. From a practical standpoint, it
makes sense to exclude 0 whenever you want to deal with
factorizations.
> It's obviously equal to 1 (1!/1 = 0! = 1),
It's convenient and intuitive, not obvious. The reason for its
intuitiveness is that 1 is the multiplicative identity. However,
that's only obvious, if you already agree that 0 should be in the
domain.
It's equally convenient and intuitive for one to define ! for
all reals > 0, but as usual, it doesn't suit everyone.
> unlike notations like (-1)! which have no intuitive meaning.
> It makes no sense to define a factorial function that doesn't
> do something sensible with zero.
Rejecting is a sensible thing to do, as I said, if it's not in
your domain.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/23/2004 5:16:57 AM
|
|
FM wrote:
> "Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote:
>
>>On Thu, 22 Jan 2004, FM wrote:
>>
>>>I don't think 0! is necessarily defined. Whenever it is
>>>defined, it is defined in such a way as to equal 1, but
>>>I'm pretty sure I've seen factorial defined as a function
>>>from N to N where N is the set of of all natural numbers
>>>(using, of course, the definition of a natural number that
>>>does not include 0).
>
>
>> I seriously doubt that any mathematical text defines factorial
>>in that way. "Natural numbers" usually refers to the set N,
>>which contains zero; and k! is defined for all k >= 0.
>
>
> From what I've seen, the set N usually does *not* include 0.
> In fact, before a few years ago, I don't think I had seen any
> source that defined N as to include 0. In Computer Science,
> N almost always includes 0, but that's a different story.
http://en.wikipedia.org/wiki/Natural_number
"It took more than five centuries for European mathematicians to accept
zero as a number, and even when they did, it was not counted as a
natural number."
....
"In the nineteenth century, a set-theoretical definition of natural
numbers was developed. With this definition, it was more convenient to
include zero (corresponding to the empty set) in the naturals. Wikipedia
follows this convention, as do set theorists, logicians, and computer
scientists. Some other mathematicians, mainly number theorists, prefer
to follow the old tradition and exclude zero from the natural numbers."
So, *most* fields have included 0 in N for the last 200 years.
NR
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/23/2004 5:47:31 AM
|
|
On Fri, 23 Jan 2004, FM wrote:
>
> "Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote:
> > On Thu, 22 Jan 2004, FM wrote:
> > > I don't think 0! is necessarily defined.
>
> > I seriously doubt that any mathematical text defines factorial
> > in that way. "Natural numbers" usually refers to the set N,
> > which contains zero; and k! is defined for all k >= 0.
>
> From what I've seen, the set N usually does *not* include 0.
> In fact, before a few years ago, I don't think I had seen any
> source that defined N as to include 0. In Computer Science,
> N almost always includes 0, but that's a different story.
N also includes 0 in set theory, as Noah points out; and in all
math courses at the college level, at least from my limited survey
thereof. But then, at CMU, math *is* CS and vice versa. :)
</exaggeration>
I have not seen a non-zero-including definition of "natural
number" since middle school... and even there, I forget if we
called [1,inf) "natural" and [0,inf) "whole" numbers, or the other
way around.
> > Less argumentatively-from-authority, why *wouldn't* you define
> > zero factorial?
>
> Because it's outside the domain?
Not if you define zero factorial, it's not outside the domain.
Which brings me back to the rhetorical question I just raised one
sentence above: why on earth wouldn't you define zero factorial?
> From a practical standpoint, it makes sense to exclude 0 whenever
> you want to deal with factorizations.
In that zero is not a factor of any number, since 0 does not
divide any number, it makes sense to say that 0 is excluded from
any factorization of a non-zero integer, yes. But I'm sure you're
aware that factorIALS have precious little to do with factorIZATIONS.
> > It's obviously equal to 1 (1!/1 = 0! = 1),
>
> It's convenient and intuitive, not obvious.
Forgive me if I sometimes confuse the two. :-)
> The reason for its
> intuitiveness is that 1 is the multiplicative identity.
Huh? I think you missed the point (which has absolutely nothing
to do with multiplicative identities). Look carefully:
10! = 9! * 10
9! = 8! * 9
8! = 7! * 8
7! = 6! * 7
6! = 5! * 6
5! = 4! * 5
4! = 3! * 4
3! = 2! * 3
2! = 1! * 2
1! = 0! * 1
Solve for 0!, given that 1! = 1. You'll find that there's only
one answer, and it's the mathematically accepted one.
> It's equally convenient and intuitive for one to define ! for
> all reals > 0, but as usual, it doesn't suit everyone.
Not really as intuitive to me, although I suppose *someone*
thought it made sense, or we wouldn't have the gamma function. :)
> > It makes no sense to define a factorial function that doesn't
> > do something sensible with zero.
>
> Rejecting is a sensible thing to do, as I said, if it's not in
> your domain.
"My" domain? Natural numbers *are* my domain, as it happens, ;)
but I would prefer to define factorial in a consistent and non-
arbitrary way, independent of whatever *my* domain may be. Cutting
off "zero" from the acceptable input to "factorial" is arbitrary, so
it's not sensible.
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/23/2004 7:52:24 AM
|
|
Edward G. Nilges wrote:
> "FM" <dartdanfm@yahoo.com> wrote in message
> news:<35JPb.91175$cM1.16474344@twister.nyc.rr.com>...
>> "Richard Heathfield" <invalid@address.co.uk.invalid> wrote:
>> > Edward G. Nilges wrote:
>>
>> > > I do not know whether it disproves the need for recursion ANYWHERE in
>> > > proving programs correct (or deductively predicting their behavior).
>> > > Can you provide a proof that recursion is never needed?
>> >
>> > I can't, but I suspect Mr Nilges will find - if he looks hard enough -
>> > that recursion in proofs can always be eliminated.
>
> OK, this is bullshit. I have some time and I shall reply.
>
> Richard, my claim was the reverse and you failed to follow the
> discussion properly. Willem showed us a non-trivial non-recursive
> proof of an iterative algorithm.
>
> Once again, by focusing on personalities in violation of Internet
> courtesy standards and the charter of this ng, you make yourself look
> foolish which damages the reputation and credibility you have
> established with C unleashed.
I made an observation about the possibility of eliminating recursion from
proofs. I didn't claim that the observation was correct; I merely suspected
that it might be true. In fact, it turns out that it may well not be true;
if so, I was wrong, and I can certainly live with that. I don't see that
this has to do with personalities in even the slightest degree. Mr Nilges
is being very silly.
<snip>
> I was for a time an adjunct perfessor of applied
> compsci at DeVry University and Roosevelt University, and I taught C
> to compsci majors at Princeton. I have never been in the least bit
> dishonest about this background, and I resent your continual
> imputations that I am.
Yet again, Mr Nilges is wrong. I have never "imputed" that Mr Nilges is
dishonest about his background. I have, however, suggested that he /might/
be dishonest about his background; after all, he has lied about other
things, so maybe he lied about that, too. But maybe he didn't. I have no
independent evidence either way.
> For example, you embarassed yourself when you interrupted a discussion
> between a former staff member of Princeton's computing centers and
> myself to imply I'd lied about the connection with Princeton, and I
> had to waste time on clarifying the record.
If Mr Nilges cares to use Google to examine the thread between himself and
the person he mentions, he should find an unbroken chain of responses
between himself and that person. No interruption took place. Rather, I
spawned off a separate subthread, and I see no reason to be embarrassed
about spawning off subthreads.
<snip>
> But be advised that any court of law in the UK and the USA will take
> my texts far more seriously than yours, because unlike you I don't
> speculate in a libelous fashion about personalities.
Mr Nilges has speculated about my being employed by MI5, about my being a
Fascist and a Nazi, and about my libelling him. None of these statements is
true. In fact, it is my understanding that all of these statements are
libellous themselves. But I will not take him to court. If he wishes to
take me to court, he should do so (and he'd better be prepared to pay my
costs). If he doesn't wish to take me to court, he should stop wittering on
about so doing.
>
> Because your feelings of false dominance were wounded by the
> popularity of my 2000 thread on Steve McConnell's book, you have
> conducted a misuse of this technology for two years. Although your
> general culture is limited and you do not know it, to use electronic
> technology to replicate lies at warp speed remains reminiscent of
> Fascist praxis.
Mr Nilges hints here that I have replicated lies at warp speed. I invite him
to provide an example to support his assertion.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/23/2004 8:40:14 AM
|
|
Arthur J. O'Dwyer wrote:
> On Thu, 22 Jan 2004, Willem wrote:
>
>>Corey wrote:
>>) The proof above (1!/1 = 0! = 1) could therefore apply to negatives, yes?
>>) In other words:
>>)
>>) -1! = 0!/-1 = -1
>
> Mistake in Corey's math: this should properly read
>
> -1! = 0!/0 does not exist
>
> and thus we see that (-1)! is, as I wrote, nonsensical.
Aww, shhh... you weren't supposed to spot that :>
You are, however, dead right.
--
Corey Murtagh
The Electric Monk
"Quidquid latine dictum sit, altum viditur!"
|
|
0
|
|
|
|
Reply
|
emonk3 (287)
|
1/23/2004 11:42:47 AM
|
|
Richard Heathfield wrote:
> Mr Nilges has speculated about my being employed by MI5,
Lamest attempt to conceal MI6 affiliation, EVER !!!
--
pete
|
|
0
|
|
|
|
Reply
|
pfiland (6613)
|
1/23/2004 1:36:56 PM
|
|
FM wrote:
)|> All you need to do is prove that 'preposition-in-loop' holds during the
)|> loop, and that 'preposition-in-loop' AND NOT 'loop-condition' implies
)|> 'preposition-after-loop'. No recursion involved there.
)
) Which is obviously incorrect. More specifically, any
) provably infinite loop can be proven correct by this
) method.
Technically, this method proves that *if* a loop terminates, it terminates
with the right answer. You have to *prove* that a loop terminates as well,
but you can do that separately.
)|> int nFactorial(int n)
)|> {
)|> <snip>
)
) Note the same flaw.
If I wanted to be exact, I would have been a lot more rigorous.
Besides, proving termination is usually quite easy for loops.
When you get to recursion, that becomes a whole new problem.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/23/2004 1:49:05 PM
|
|
Arthur wrote:
) N also includes 0 in set theory, as Noah points out; and in all
) math courses at the college level, at least from my limited survey
) thereof. But then, at CMU, math *is* CS and vice versa. :)
)</exaggeration>
Same is roughly true at the Eindhoven University of Technology.
(Although you don't have to take 'advanced analysys' or whatever it was
called for CS.)
) I have not seen a non-zero-including definition of "natural
) number" since middle school... and even there, I forget if we
) called [1,inf) "natural" and [0,inf) "whole" numbers, or the other
) way around.
Hm, on my university, most professors said that the camps were divided,
that you should be ready to accept both possibiulities, and that most
mathematics books will state which they use.
)> The reason for its
)> intuitiveness is that 1 is the multiplicative identity.
)
) Huh? I think you missed the point (which has absolutely nothing
) to do with multiplicative identities). Look carefully:
)
) ...
) 1! = 0! * 1
)
) Solve for 0!, given that 1! = 1. You'll find that there's only
) one answer, and it's the mathematically accepted one.
Okay, here's the 'multiplicative identity' one:
Actually, I thought it was called the 'zero element for multiplication'..
Again, look carefully:
5! = mul { 1, 2, 3, 4, 5 }
4! = mul { 1, 2, 3, 4 }
3! = mul { 1, 2, 3 }
2! = mul { 1, 2 }
1! = mul { 1 }
0! = mul { }
And, in set-theory, applying an operator over an empty set results in the
'zero' for that operator. For multiplying, that 'zero' is 1.
(For any operator, the 'zero' is the element that, when you 'operator' it
with any element, you get that element.)
As an excercise, what's the 'zero' for the 'minimum' operator ?
I hope I recalled all that stuff correctly, but the gist is clear.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/23/2004 2:06:05 PM
|
|
In article <4010db36@news2.power.net.uk>, invalid@address.co.uk.invalid says...
> Mr Nilges has speculated about my being employed by MI5, about my being a
> Fascist and a Nazi, and about my libelling him. None of these statements is
> true.
If I am not mistaken, hasn't he also implied our claimed outright that you
are somehow deriving profit by leading people to use C instead of other
language when you should really be leading them down the garden path to
VB and .NET instead? (As if trying to sell a book on the subject of
writing a VB compiler is one that a lot (any) people should be interested
in today).
> > Because your feelings of false dominance were wounded by the
> > popularity of my 2000 thread on Steve McConnell's book, you have
> > conducted a misuse of this technology for two years. Although your
> > general culture is limited and you do not know it, to use electronic
> > technology to replicate lies at warp speed remains reminiscent of
> > Fascist praxis.
>
> Mr Nilges hints here that I have replicated lies at warp speed. I invite him
> to provide an example to support his assertion.
Well, in point of fact Mr. Nilges is correct about you replicating lies, just
as much as any of us that have quoted his posts to this group are also
guilty. Every time he tells a lie and we include it in a post, we are
replicating lies. Of course, I don't think any of us can do so at a rate
in excess of the speed of light, but that's just another one of his lies
that we have now both replicated.
emoti:-)
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/23/2004 5:00:12 PM
|
|
In article <4011237A.7BF4@mindspring.com>, pfiland@mindspring.com says...
> Richard Heathfield wrote:
>
> > Mr Nilges has speculated about my being employed by MI5,
>
> Lamest attempt to conceal MI6 affiliation, EVER !!!
Richard did ignore my question about how he obtained his compensation
and how others could apply. I think you are right.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/23/2004 5:00:59 PM
|
|
In article <MPG.1a7b0f1b7ca7e60f989b8b@news.megapathdsl.net>,
randy.howard@FOOmegapathdslBAR.net says...
> In article <4010db36@news2.power.net.uk>, invalid@address.co.uk.invalid says...
> > Mr Nilges has speculated about my being employed by MI5, about my being a
> > Fascist and a Nazi, and about my libelling him. None of these statements is
> > true.
>
> If I am not mistaken, hasn't he also implied our claimed outright that you
s/our/or/ above.... oops
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/23/2004 5:16:57 PM
|
|
In article <slrnc10h1g.1777.willem@toad.stack.nl>,
Willem <willem@stack.nl> wrote:
>Corey wrote:
>) The proof above (1!/1 = 0! = 1) could therefore apply to negatives, yes?
>) In other words:
>)
>) -1! = 0!/-1 = -1
>) -2! = -1!/-2 = 0.5
>) -3! = -2!/-3 = 0.33..
>) etc.
>
>You mean -0.166.. of course.
>
>Sounds logical, if you say that the factorial is 'multiply-to-the-right'
>and 'divide-to-the-left', then you could say:
>
>new_factorial(-x) = -1^x / factorial(x)
>
>I guess if you want to define factorials on Z, this should be the way.
>
>Of course, this function is from Z to Q, which isn't quite that nice.
>
>Maybe you can map some function from R to R that matches this function on
>all numbers in Z, and is smooth, to get a 'factorial' from R to R ?
>Or has this been done already ?
The gamma function, apparently. Though my source is _Numerical Recipes_
which is good enough for me, but maybe not for others.
n! = gamma (n+1) for n = 1.0, 2.0, 3.0 ...
Regards. Mel.
|
|
0
|
|
|
|
Reply
|
mwilson (588)
|
1/23/2004 5:22:57 PM
|
|
"Edward G. Nilges" wrote:
> The class would be "Programming as Literature" and authors would
> include beyond Dijkstra, Knuth, Gries and Plauger.
Did you ever find that quote you promised (twice) to search for?
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/23/2004 8:11:40 PM
|
|
Willem wrote:
> If I wanted to be exact, I would have been a lot more rigorous.
> Besides, proving termination is usually quite easy for loops.
Usually, yes. But...
#include "halting.h"
int main(void)
{
if(program_terminates())
{
for(;;)
{
continue;
}
}
return 0;
}
....there are exceptions. :-)
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/23/2004 8:41:55 PM
|
|
Randy Howard wrote:
> In article <4011237A.7BF4@mindspring.com>, pfiland@mindspring.com says...
>> Richard Heathfield wrote:
>>
>> > Mr Nilges has speculated about my being employed by MI5,
>>
>> Lamest attempt to conceal MI6 affiliation, EVER !!!
>
> Richard did ignore my question about how he obtained his compensation
> and how others could apply.
Alas, both my time available to read and reply to Usenet articles, and my
newsfeed reliability, are sub-optimal
> I think you are right.
You will be contacted shortly. Stay where you are.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/23/2004 8:43:22 PM
|
|
Randy Howard wrote:
> In article <4010db36@news2.power.net.uk>, invalid@address.co.uk.invalid
> says...
>> Mr Nilges has speculated about my being employed by MI5, about my being a
>> Fascist and a Nazi, and about my libelling him. None of these statements
>> is true.
>
> If I am not mistaken, hasn't he also implied our claimed outright that you
> are somehow deriving profit by leading people to use C instead of other
> language when you should really be leading them down the garden path to
> VB and .NET instead?
Perhaps he's discovered that I have shares in ISO.
>> Mr Nilges hints here that I have replicated lies at warp speed. I invite
>> him to provide an example to support his assertion.
>
> Well, in point of fact Mr. Nilges is correct about you replicating lies,
> just as much as any of us that have quoted his posts to this group are
> also guilty.
Ah, I hadn't thought of that.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/23/2004 8:45:10 PM
|
|
In article <f5dda427.0401221605.2959842@posting.google.com>, spinoza1111
@yahoo.com says...
> It were indeed the heathen paynim DEC users who started numbering
> things at zero primarliy to cock a snook at IBM. Today, owing to C we
> start at zero.
Indirect addressing modes through pointers make this much more suitable
than starting at 1. This was present in Macro-11 assembler and has
little or nothing to do with C as its cause.
> But even IBM was infected with the mystery and terror of the number
> zero. Early in the 1970s, IBM manuals began appearing with pages
> completely blank, except for the mysterious and terrible words, "this
> page intentionally left blank".
This was so irrational that I just had to leave it in for those that
didn't make it all the way through the Nilgesian prose the first time.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/23/2004 8:46:10 PM
|
|
In article <401184b3@news2.power.net.uk>, invalid@address.co.uk.invalid says...
> Randy Howard wrote:
>
> > In article <4011237A.7BF4@mindspring.com>, pfiland@mindspring.com says...
> >> Richard Heathfield wrote:
> >>
> >> > Mr Nilges has speculated about my being employed by MI5,
> >>
> >> Lamest attempt to conceal MI6 affiliation, EVER !!!
> >
> > Richard did ignore my question about how he obtained his compensation
> > and how others could apply.
>
> Alas, both my time available to read and reply to Usenet articles, and my
> newsfeed reliability, are sub-optimal
>
> > I think you are right.
>
> You will be contacted shortly. Stay where you are.
I shall not leave the building until you contact me. My aluminum foil
headdress will be worn until such time to avoid counter-espionage efforts.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/23/2004 8:47:41 PM
|
|
Richard wrote:
) Willem wrote:
)
)> If I wanted to be exact, I would have been a lot more rigorous.
)> Besides, proving termination is usually quite easy for loops.
)
) Usually, yes. But...
)
) #include "halting.h"
)
) int main(void)
) {
) if(program_terminates())
) {
) for(;;)
) {
) continue;
) }
) }
) return 0;
) }
)
) ...there are exceptions. :-)
I think you meant 'while (program_terminates()) { }',
otherwise I can simply prove that the loop doesn't terminate.
What I wanted to say, of course, is that it's usually quite easy to prove
that a loop terminates if it's designed to terminate. Or whatever sounds
roughly like what I just said but is actually correct. :-)
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/23/2004 9:42:19 PM
|
|
)> But even IBM was infected with the mystery and terror of the number
)> zero. Early in the 1970s, IBM manuals began appearing with pages
)> completely blank, except for the mysterious and terrible words, "this
)> page intentionally left blank".
Randy wrote:
) This was so irrational that I just had to leave it in for those that
) didn't make it all the way through the Nilgesian prose the first time.
ObTrivia: Does anybody know the actual reason why the words 'this page
intentionally left blank' are there ?
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/23/2004 9:44:49 PM
|
|
Randy wrote:
) Richard wrote:
)> You will be contacted shortly. Stay where you are.
)
) I shall not leave the building until you contact me. My aluminum foil
) headdress will be worn until such time to avoid counter-espionage efforts.
Been nice knowing you.
Too bad you slurped the wrong robot on that one.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/23/2004 9:46:52 PM
|
|
In article <slrnc135eh.1nmo.willem@toad.stack.nl>, willem@stack.nl says...
> )> But even IBM was infected with the mystery and terror of the number
> )> zero. Early in the 1970s, IBM manuals began appearing with pages
> )> completely blank, except for the mysterious and terrible words, "this
> )> page intentionally left blank".
>
> Randy wrote:
>
> ) This was so irrational that I just had to leave it in for those that
> ) didn't make it all the way through the Nilgesian prose the first time.
>
> ObTrivia: Does anybody know the actual reason why the words 'this page
> intentionally left blank' are there ?
>
I think it was a MIL-SPEC thing from way back, on how to properly write
manuals.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/23/2004 9:58:24 PM
|
|
Willem wrote:
> Richard wrote:
> ) Willem wrote:
> )
> )> If I wanted to be exact, I would have been a lot more rigorous.
> )> Besides, proving termination is usually quite easy for loops.
> )
> ) Usually, yes. But...
> )
> ) #include "halting.h"
> )
> ) int main(void)
> ) {
> ) if(program_terminates())
> ) {
> ) for(;;)
> ) {
> ) continue;
> ) }
> ) }
> ) return 0;
> ) }
> )
> ) ...there are exceptions. :-)
>
> I think you meant 'while (program_terminates()) { }',
Nope. Sorry for not being clear; I thought it would be self-evident that I
was describing the Halting Problem: program_terminates() reads a program
from stdin and decides whether it halts. The idea is to feed the program to
itself, of course.
> otherwise I can simply prove that the loop doesn't terminate.
In which case, the input program halts, in which case the program above
doesn't halt. But they're the same program!
> What I wanted to say, of course, is that it's usually quite easy to prove
> that a loop terminates if it's designed to terminate. Or whatever sounds
> roughly like what I just said but is actually correct. :-)
I think you actually said it correctly the first time - after all, you
included the weasel-word "usually", which made it all okay. I was just
shooting the moon.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/23/2004 10:51:18 PM
|
|
)> I think you meant 'while (program_terminates()) { }',
Richard wrote:
) Nope. Sorry for not being clear; I thought it would be self-evident that I
) was describing the Halting Problem:
It was self-evident. But check out the word I underlined in the following
line (my previous reply).
)> otherwise I can simply prove that the loop doesn't terminate.
) ^^^^
) ...
)
) I think you actually said it correctly the first time - after all, you
) included the weasel-word "usually", which made it all okay. I was just
) shooting the moon.
There are real-world programs where it's actually quite difficult to prove
that they terminate. Sometimes you need to prove one or more difficult
mathematical theorems, involving advanced set-theory or something like
that.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/23/2004 11:05:05 PM
|
|
Randy wrote:
) In article <slrnc135eh.1nmo.willem@toad.stack.nl>, willem@stack.nl says...
)> )> But even IBM was infected with the mystery and terror of the number
)> )> zero. Early in the 1970s, IBM manuals began appearing with pages
)> )> completely blank, except for the mysterious and terrible words, "this
)> )> page intentionally left blank".
)>
)> Randy wrote:
)>
)> ) This was so irrational that I just had to leave it in for those that
)> ) didn't make it all the way through the Nilgesian prose the first time.
)>
)> ObTrivia: Does anybody know the actual reason why the words 'this page
)> intentionally left blank' are there ?
)>
)
) I think it was a MIL-SPEC thing from way back, on how to properly write
) manuals.
Here's what I heard:
The pages for a book are sent to the printer's _single-sided_ (that is, you
send one sheet per page). This means that if you have a blank page that
has nothing printed on it as first page, the top sheet will actually be
completely blank. The printers may toss that away, since some people have
the habit of putting extra blank sheets in to protect the pages, so
suddenly you're missing a page. Your layout is shot as well, of course,
because left pages are suddenly on the right and vv.
But if you print 'this page intentionally left blank' on the page, the
people know they're not supposed to toss it aside and all is well.
Unfortunately they're not smart enough to put a blank blank page in place
of the blank page with the words on it, so the words make it into the book.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/23/2004 11:13:26 PM
|
|
Willem wrote:
> )> otherwise I can simply prove that the loop doesn't terminate.
> ) ^^^^
Oh yeah.
I'll get my coat.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/23/2004 11:19:18 PM
|
|
"Willem" <willem@stack.nl> wrote:
> FM wrote:
> )|> All you need to do is prove that 'preposition-in-loop' holds during the
> )|> loop, and that 'preposition-in-loop' AND NOT 'loop-condition' implies
> )|> 'preposition-after-loop'. No recursion involved there.
> )
> ) Which is obviously incorrect. More specifically, any
> ) provably infinite loop can be proven correct by this
> ) method.
>
> Technically, this method proves that *if* a loop terminates, it terminates
> with the right answer. You have to *prove* that a loop terminates as well,
> but you can do that separately.
And how would you do that exactly?
> )|> int nFactorial(int n)
> )|> {
> )|> <snip>
> )
> ) Note the same flaw.
>
> If I wanted to be exact, I would have been a lot more rigorous.
> Besides, proving termination is usually quite easy for loops.
Using "recursion," yes.
> When you get to recursion, that becomes a whole new problem.
That's a bizarre statement.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/24/2004 1:19:34 PM
|
|
"Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote:
> On Fri, 23 Jan 2004, FM wrote:
> >
> > "Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote:
> > > Less argumentatively-from-authority, why *wouldn't* you define
> > > zero factorial?
> >
> > Because it's outside the domain?
>
> Not if you define zero factorial, it's not outside the domain.
> Which brings me back to the rhetorical question I just raised one
> sentence above: why on earth wouldn't you define zero factorial?
If you were given, say, N->N for factorial function,
and that N was defined in such a way as to exclude 0,
yes it's outside the domain.
> > From a practical standpoint, it makes sense to exclude 0 whenever
> > you want to deal with factorizations.
>
> In that zero is not a factor of any number, since 0 does not
> divide any number, it makes sense to say that 0 is excluded from
> any factorization of a non-zero integer, yes. But I'm sure you're
> aware that factorIALS have precious little to do with factorIZATIONS.
Sure they do. Factorials can be defined in terms of
factorizations, as just about anything dealing with
natural numbers can. And why wouldn't someone be
interested in proving things about the relationship
between factorizations of n and n!? Or some other
things where 0 is either irrelevant or has to be
dealt away as an exception?
> > The reason for its
> > intuitiveness is that 1 is the multiplicative identity.
>
> Huh? I think you missed the point (which has absolutely nothing
> to do with multiplicative identities). Look carefully:
>
> 10! = 9! * 10
> 9! = 8! * 9
> 8! = 7! * 8
> 7! = 6! * 7
> 6! = 5! * 6
> 5! = 4! * 5
> 4! = 3! * 4
> 3! = 2! * 3
> 2! = 1! * 2
> 1! = 0! * 1
>
> Solve for 0!, given that 1! = 1. You'll find that there's only
> one answer, and it's the mathematically accepted one.
The above is true because 1 is the multiplicative
identity. I have no idea why that isn't immediately
obvious. What's the product of all members of an
empty set? If you want to preserve the more general
identity that if A and B are finite disjoint sets,
Prod(a for a in A) * Prod(b for b in B) = Prod(a for
a in A union B), you must define Prod(a for a in
empty set) to be the multiplicative identity. This
is probably the most convenient way to define/justify
0! = 1 and your example above is simply a special
case. Note that if you define, for instance, an
"additorial" such that x# = Sum(a for a in {1 ... a}),
the obvious way to define 0# is the addititive
identity, 0. And this is generically true for any
operation.
> > > It makes no sense to define a factorial function that doesn't
> > > do something sensible with zero.
> >
> > Rejecting is a sensible thing to do, as I said, if it's not in
> > your domain.
> "My" domain? Natural numbers *are* my domain, as it happens, ;)
> but I would prefer to define factorial in a consistent and non-
> arbitrary way, independent of whatever *my* domain may be.
I meant from the function's point of view, as in, the
function's domain.
> Cutting
> off "zero" from the acceptable input to "factorial" is arbitrary, so
> it's not sensible.
If you already made up your mind that 0 is an
acceptable input, clearly it is an acceptable input.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/24/2004 1:56:55 PM
|
|
"Noah Roberts" <nroberts@dontemailme.com> wrote:
> FM wrote:
> > "Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote:
> >>On Thu, 22 Jan 2004, FM wrote:
> >>>I don't think 0! is necessarily defined. Whenever it is
> >>>defined, it is defined in such a way as to equal 1, but
> >>>I'm pretty sure I've seen factorial defined as a function
> >>>from N to N where N is the set of of all natural numbers
> >>>(using, of course, the definition of a natural number that
> >>>does not include 0).
> >
> >
> >> I seriously doubt that any mathematical text defines factorial
> >>in that way. "Natural numbers" usually refers to the set N,
> >>which contains zero; and k! is defined for all k >= 0.
> >
> >
> > From what I've seen, the set N usually does *not* include 0.
> > In fact, before a few years ago, I don't think I had seen any
> > source that defined N as to include 0. In Computer Science,
> > N almost always includes 0, but that's a different story.
>
> http://en.wikipedia.org/wiki/Natural_number
>
> "It took more than five centuries for European mathematicians to accept
> zero as a number, and even when they did, it was not counted as a
> natural number."
>
> ...
>
> "In the nineteenth century, a set-theoretical definition of natural
> numbers was developed. With this definition, it was more convenient to
> include zero (corresponding to the empty set) in the naturals. Wikipedia
> follows this convention, as do set theorists, logicians, and computer
> scientists. Some other mathematicians, mainly number theorists, prefer
> to follow the old tradition and exclude zero from the natural numbers."
>
> So, *most* fields have included 0 in N for the last 200 years.
Except the most relevant field for the subject.
I personally prefer to include 0 in the set of natural
numbers, mostly for set-theoretic reasons, but I find this
bigotry coming from non-mathematicians somewhat surprising.
There are certainly conventions but very few are undisputed
in math and in general, things are what you define them to be.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/24/2004 2:00:02 PM
|
|
)> Technically, this method proves that *if* a loop terminates, it terminates
)> with the right answer. You have to *prove* that a loop terminates as well,
)> but you can do that separately.
FM wrote:
) And how would you do that exactly?
IIRC, it involves showing that some function f(n), a function that has the
state space of the loop as its domain, and N as its range, decreases at
every iteration. Usually, you can discard almost all of the state space
and concentrate on the value of one variable, and all you have to prove is
that that variable (or a sumple algebraic function on that variable)
decreases but doesn't go below zero.
For example, for the factorial loop, you prove that 'n' decreases at every
iteration, but that it doesn't go below zero.
If you want I can probably find my textbook to check.
)> If I wanted to be exact, I would have been a lot more rigorous.
)> Besides, proving termination is usually quite easy for loops.
)
) Using "recursion," yes.
Nope, no recursion there. No induction either. Just showing that
sometihing decreases.
The only induction you need is when you want to rigorously prove that this
method proves termination, of course, but at that level of rigour, you need
induction for a hell of a lot of things that are totally obvious.
)> When you get to recursion, that becomes a whole new problem.
)
) That's a bizarre statement.
Recursion in *algorithms*. Not in *proofs*. Duh.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/24/2004 2:24:27 PM
|
|
In article <CTuQb.255241$0P1.238565@twister.nyc.rr.com>, "FM" <dartdanfm@yahoo.com> wrote:
m the natural numbers."
>>
>> So, *most* fields have included 0 in N for the last 200 years.
>
>Except the most relevant field for the subject.
>
>I personally prefer to include 0 in the set of natural
>numbers, mostly for set-theoretic reasons, but I find this
>bigotry coming from non-mathematicians somewhat surprising.
>There are certainly conventions but very few are undisputed
>in math and in general, things are what you define them to be.
The most common use of factorials is in combinatorial calculations.
Defining 0! as 1 generalises combinatorial formulae very nicely.
Reference to the natural numbers seem a bit of a red herring, especially
since in the form of Gamma, the factorial function has been generalised
to the reals and indeed complex numbers.
[Ironically enough, the Gamma function is displaced by one unit compared
to the factorial, i.e. Gamma(x) = (x-1)! where x is an integer - another
way to avoid the question of whether 0 is a natural number?]
- Gerry Quinn
|
|
0
|
|
|
|
Reply
|
gerryq2 (435)
|
1/24/2004 3:34:07 PM
|
|
"FM" <dartdanfm@yahoo.com> wrote in message <news:GhuQb.254828$0P1.79900@twister.nyc.rr.com>...
> "Willem" <willem@stack.nl> wrote:
> > FM wrote:
> > )|> All you need to do is prove that 'preposition-in-loop' holds during the
> > )|> loop, and that 'preposition-in-loop' AND NOT 'loop-condition' implies
> > )|> 'preposition-after-loop'. No recursion involved there.
> > )
> > ) Which is obviously incorrect. More specifically, any
> > ) provably infinite loop can be proven correct by this
> > ) method.
> >
> > Technically, this method proves that *if* a loop terminates, it terminates
> > with the right answer. You have to *prove* that a loop terminates as well,
> > but you can do that separately.
>
> And how would you do that exactly?
With languages designed to make formal proofs about programs easier?
Wasn't "structured programming" intended as a step in this direction?
--
Joe Foster <mailto:jlfoster%40znet.com> DC8s in Spaace: <http://www.xenu.net/>
WARNING: I cannot be held responsible for the above They're coming to
because my cats have apparently learned to type. take me away, ha ha!
|
|
0
|
|
|
|
Reply
|
joe303 (601)
|
1/24/2004 4:48:03 PM
|
|
On Sat, 24 Jan 2004, Gerry Quinn wrote:
>
> "FM" <dartdanfm@yahoo.com> wrote:
[Someone else wrote:]
> >>
> >> So, *most* fields have included 0 in N for the last 200 years.
> >
> >Except the most relevant field for the subject.
> >
> >I personally prefer to include 0 in the set of natural
> >numbers, mostly for set-theoretic reasons, but I find this
> >bigotry coming from non-mathematicians somewhat surprising.
Who here is not a mathematician? (Counting math students and
computer science students and practitioners, somewhat immodestly,
as mathematicians -- otherwise, I think your comment would be
straying dangerously close to the Us-Against-The-Mathematicians
philosophy espoused by lunimaries like James Harris.)
> >There are certainly conventions but very few are undisputed
> >in math and in general, things are what you define them to be.
[Tangential point: No, things in mathematics, even more than
in any other hard science, are what they *are*. If your definitions
don't match up to what's actually provably true, then you're in
trouble -- and if your definitions don't match up to the definitions
supplied by the vast majority of your colleagues, then you're just
not very good at communicating.]
[Gerry wrote:]
> The most common use of factorials is in combinatorial calculations.
> Defining 0! as 1 generalises combinatorial formulae very nicely.
(For that matter, we could just define $n! = \prod_{i=1}^{n} i$
(Yay gratuitous use of TeX!) and there we are. "FM" has already
conceded ;) that the Foo-ing together of the empty set, where Foo
is a commutative and associative binary operation, yields the
identity for Foo.)
> Reference to the natural numbers seem a bit of a red herring, especially
> since in the form of Gamma, the factorial function has been generalised
> to the reals and indeed complex numbers.
Here's the real point. Thank you. I knew I was missing something
quite clever and insightful. Gamma(1) = 1. So if we define n! so as
to be Gamma(n-1), zero factorial also falls out naturally that way.
> [Ironically enough, the Gamma function is displaced by one unit compared
> to the factorial, i.e. Gamma(x) = (x-1)! where x is an integer - another
> way to avoid the question of whether 0 is a natural number?]
[No, another way to avoid the extra typesetting that would come if
we replaced all the x's in the big complicated formula by (x+1)'s.
Shifting a particular real-valued function around on the x-axis doesn't
do anything to the properties of the natural numbers. :) ]
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/24/2004 6:46:40 PM
|
|
"Gerry Quinn" <gerryq@indigo.ie> wrote:
> "FM" <dartdanfm@yahoo.com> wrote:
> m the natural numbers."
> >>
> >> So, *most* fields have included 0 in N for the last 200 years.
> >
> >Except the most relevant field for the subject.
> >
> >I personally prefer to include 0 in the set of natural
> >numbers, mostly for set-theoretic reasons, but I find this
> >bigotry coming from non-mathematicians somewhat surprising.
> >There are certainly conventions but very few are undisputed
> >in math and in general, things are what you define them to be.
>
> The most common use of factorials is in combinatorial calculations.
> Defining 0! as 1 generalises combinatorial formulae very nicely.
> Reference to the natural numbers seem a bit of a red herring, especially
> since in the form of Gamma, the factorial function has been generalised
> to the reals and indeed complex numbers.
That's my exact point - the domain of the factorial
function is not set in stone.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/24/2004 9:37:11 PM
|
|
"Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote:
> On Sat, 24 Jan 2004, Gerry Quinn wrote:
> > "FM" <dartdanfm@yahoo.com> wrote:
> > >I personally prefer to include 0 in the set of natural
> > >numbers, mostly for set-theoretic reasons, but I find this
> > >bigotry coming from non-mathematicians somewhat surprising.
> Who here is not a mathematician? (Counting math students and
> computer science students and practitioners, somewhat immodestly,
> as mathematicians -- otherwise, I think your comment would be
> straying dangerously close to the Us-Against-The-Mathematicians
> philosophy espoused by lunimaries like James Harris.)
Since you seem to be in favor of using definitions from
authority, here's a definition of mathematician as given
by Merriam-Webster Online Dictionary (www.m-w.com)
(fairly close the one I was using, though mine's narrower):
Mathematician: a specialist or expert in mathematics
> > >There are certainly conventions but very few are undisputed
> > >in math and in general, things are what you define them to be.
>
> [Tangential point: No, things in mathematics, even more than
> in any other hard science, are what they *are*. If your definitions
> don't match up to what's actually provably true, then you're in
> trouble
Huh? Definitions are provably true by definition. You
could have an *inconsistent* set of definitions, in which
case every statement is true by definition.
Definitions can be thought of as a logical implication.
"Let n be 5. StatementY" is a logical equivalent of
"(n = 5) implies StatementY"
> -- and if your definitions don't match up to the definitions
> supplied by the vast majority of your colleagues, then you're just
> not very good at communicating.]
No, you state your assumptions and definitions clearly.
That is, you define them. That's how you communicate in
mathematics. If your colleagues can't understand you
because your set of definitions is slightly different
from theirs, then it's because of ineptitude, either on
your part or theirs.
> [Gerry wrote:]
> > The most common use of factorials is in combinatorial calculations.
> > Defining 0! as 1 generalises combinatorial formulae very nicely.
>
> (For that matter, we could just define $n! = \prod_{i=1}^{n} i$
> (Yay gratuitous use of TeX!) and there we are. "FM" has already
> conceded ;) that the Foo-ing together of the empty set, where Foo
> is a commutative and associative binary operation, yields the
> identity for Foo.)
You seem to be under the mistaken assumption that somehow
I'm against 0! being defined as 1. I'm merely defending
the diversity of definitions. Which you seem also to be
espousing, as you keep redefining factorial.
> > Reference to the natural numbers seem a bit of a red herring, especially
> > since in the form of Gamma, the factorial function has been generalised
> > to the reals and indeed complex numbers.
>
> Here's the real point. Thank you. I knew I was missing something
> quite clever and insightful. Gamma(1) = 1. So if we define n! so as
> to be Gamma(n-1), zero factorial also falls out naturally that way.
Then most implementations of factorial, not just Nilges',
have range errors.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/24/2004 10:00:34 PM
|
|
"Willem" <willem@stack.nl> wrote:
> )> Technically, this method proves that *if* a loop terminates, it terminates
> )> with the right answer. You have to *prove* that a loop terminates as well,
> )> but you can do that separately.
>
> FM wrote:
>
> ) And how would you do that exactly?
>
> IIRC, it involves showing that some function f(n), a function that has the
> state space of the loop as its domain, and N as its range, decreases at
> every iteration. Usually, you can discard almost all of the state space
> and concentrate on the value of one variable, and all you have to prove is
> that that variable (or a sumple algebraic function on that variable)
> decreases but doesn't go below zero.
>
> For example, for the factorial loop, you prove that 'n' decreases at every
> iteration, but that it doesn't go below zero.
>
> If you want I can probably find my textbook to check.
>
> )> If I wanted to be exact, I would have been a lot more rigorous.
> )> Besides, proving termination is usually quite easy for loops.
> )
> ) Using "recursion," yes.
>
> Nope, no recursion there. No induction either. Just showing that
> sometihing decreases.
>
> The only induction you need is when you want to rigorously prove that this
> method proves termination, of course, but at that level of rigour, you need
> induction for a hell of a lot of things that are totally obvious.
Which is exactly my point. You missed:
'I don't think iteration can be defined without "recursion."
As I said, once you have "recursion" packaged away in the
form of a recursively-defined set and take its various
properties for granted, it's trivial to prove a lot of
things apparently without recursion.'
> )> When you get to recursion, that becomes a whole new problem.
> )
> ) That's a bizarre statement.
>
> Recursion in *algorithms*. Not in *proofs*. Duh.
Recursion in algorithms is no harder to deal with than
(general) loops in algorithms. In fact, it's easier,
because its structure is laid out clearly for
rigorous mathematical examination.
For instance, there's induction in your previous proof
(posted below) but it isn't obvious because of the
structure (and the use of assignment). More specifically,
your loop invariant 'f * max(n2,1)! == n!' is proven
inductively.
Dan.
|> int nFactorial(int n)
|> {
|> int n2, f;
|> // n is an integer
|> if ( n < 1 ) { error() }
|> // n >= 1
|> for (
|> f = n,
|> n2 = n - 1;
|> // Guard
|> // f * max(n2,1)! == n!
|> n2 > 1;
|> // f * max(n2,1)! == n!
|> // n2 > 1
|> // Note: jump to begin of loop body.
|>
|> // Note: jump from end of loop body.
|> // f * max(n2-1,1)! == n!
|> n2--;
|> // f * max(n2,1)! == n!
|> // Note: Jump to guard
|> )
|> // begin of loop body
|> // f * max(n2,1)! == n!
|> // n2 > 1
|> f *= n2;
|> // f * max(n2 - 1,1)! == n!
|> // End of loop body.
|> // Loop guard was false, so:
|> // n2 <= 1
|> // f * max(n2,1)! == n!
|> // Therefore: f == n!
|> return(f);
|> // Function returns n!
|> }
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/24/2004 10:27:14 PM
|
|
In article <slrnc1500r.2u2p.willem@toad.stack.nl>,
Willem <willem@stack.nl> wrote:
>)> Technically, this method proves that *if* a loop terminates, it terminates
>)> with the right answer. You have to *prove* that a loop terminates as well,
>)> but you can do that separately.
>
>FM wrote:
>
>) And how would you do that exactly?
>
>IIRC, it involves showing that some function f(n), a function that has the
>state space of the loop as its domain, and N as its range, decreases at
>every iteration. Usually, you can discard almost all of the state space
>and concentrate on the value of one variable, and all you have to prove is
>that that variable (or a sumple algebraic function on that variable)
>decreases but doesn't go below zero.
>
>For example, for the factorial loop, you prove that 'n' decreases at every
>iteration, but that it doesn't go below zero.
Another nitpick: One of the requirements here is that f(n) decreases
*by at least some threshold amount* at each iteration. Well, maybe
this goes without saying for any fixed-size type, but if we were
working in the idealized world of pure mathematics, and the value of
f(n) was not constrained to be an integer ....
>If you want I can probably find my textbook to check.
Which textbook is that? I'm curious because a lot of what you're
saying here is pretty much what I was taught, but in classes where
there wasn't a textbook.
A somewhat unrelated question/comment that probably shouldn't really
be threaded to this one, but I'm not sure I really want to try to
track down the earlier post ....
Someone commented that Mr. Nilges's function only works for fairly
small (but >0) n, since the "int" data type is fixed-size and will
therefore overflow for modest-size inputs to a factorial function.
This aspect of the program seems to be totally ignored in the proof.
In fact all the program-correctness proofs I've seen do seem to take
place more in the idealized math world (where such considerations
don't exist) than in the world of practical computing (where they do,
and they matter). I don't suppose anyone knows whether there has
been work done in the formal-methods community to address that?
[ snip rest ]
--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.
|
|
0
|
|
|
|
Reply
|
blmblm (1187)
|
1/24/2004 10:46:03 PM
|
|
<blmblm@myrealbox.com> wrote:
> Willem <willem@stack.nl> wrote:
> >)> Technically, this method proves that *if* a loop terminates, it terminates
> >)> with the right answer. You have to *prove* that a loop terminates as well,
> >)> but you can do that separately.
> >
> >FM wrote:
> >
> >) And how would you do that exactly?
> >
> >IIRC, it involves showing that some function f(n), a function that has the
> >state space of the loop as its domain, and N as its range, decreases at
> >every iteration. Usually, you can discard almost all of the state space
> >and concentrate on the value of one variable, and all you have to prove is
> >that that variable (or a sumple algebraic function on that variable)
> >decreases but doesn't go below zero.
> >
> >For example, for the factorial loop, you prove that 'n' decreases at every
> >iteration, but that it doesn't go below zero.
>
> Another nitpick: One of the requirements here is that f(n) decreases
> *by at least some threshold amount* at each iteration. Well, maybe
> this goes without saying for any fixed-size type, but if we were
> working in the idealized world of pure mathematics, and the value of
> f(n) was not constrained to be an integer ....
Well, he said N (as in the set of natural numbers) is the range
of f(n), so it has that constraint.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/24/2004 10:59:34 PM
|
|
In article <qNCQb.259096$0P1.205611@twister.nyc.rr.com>,
FM <dartdanfm@yahoo.com> wrote:
><blmblm@myrealbox.com> wrote:
>> Willem <willem@stack.nl> wrote:
>> >)> Technically, this method proves that *if* a loop terminates, it terminates
>> >)> with the right answer. You have to *prove* that a loop terminates
>as well,
>> >)> but you can do that separately.
>> >
>> >FM wrote:
>> >
>> >) And how would you do that exactly?
>> >
>> >IIRC, it involves showing that some function f(n), a function that has the
>> >state space of the loop as its domain, and N as its range, decreases at
>> >every iteration. Usually, you can discard almost all of the state space
>> >and concentrate on the value of one variable, and all you have to prove is
>> >that that variable (or a sumple algebraic function on that variable)
>> >decreases but doesn't go below zero.
>> >
>> >For example, for the factorial loop, you prove that 'n' decreases at every
>> >iteration, but that it doesn't go below zero.
>>
>> Another nitpick: One of the requirements here is that f(n) decreases
>> *by at least some threshold amount* at each iteration. Well, maybe
>> this goes without saying for any fixed-size type, but if we were
>> working in the idealized world of pure mathematics, and the value of
>> f(n) was not constrained to be an integer ....
>
>Well, he said N (as in the set of natural numbers) is the range
>of f(n), so it has that constraint.
So he did. I missed that part. My bad.
--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.
|
|
0
|
|
|
|
Reply
|
blmblm (1187)
|
1/24/2004 11:04:20 PM
|
|
In article <f5dda427.0401221936.1694512e@posting.google.com>,
Edward G. Nilges <spinoza1111@yahoo.com> wrote:
[ big big snip ]
>Because your feelings of false dominance were wounded by the
>popularity of my 2000 thread on Steve McConnell's book, you have
>conducted a misuse of this technology for two years. Although your
>general culture is limited and you do not know it, to use electronic
>technology to replicate lies at warp speed remains reminiscent of
>Fascist praxis.
I think there are those who would disagree with your use of the term
"popular", if it is interpreted to mean that your initial post and
follow-ups were uniformly well received. I first tuned into these
periodic debates between you and your detractors at the time of the
thread that started with a post about the U.S. Data Quality Act.
At some point I went back to look at the earlier thread about
McConnell's book, and .... Well, I didn't have the patience to read
all of the posts, but they're consistent with recent exchanges --
voluminous and sometimes heated. "Popular"? I don't know. It's not
the term I'd have used.
[ big big snip ]
--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.
|
|
0
|
|
|
|
Reply
|
blmblm (1187)
|
1/24/2004 11:10:40 PM
|
|
FM wrote:
) That's my exact point - the domain of the factorial
) function is not set in stone.
Therefore it makes most sense for a generic factorial function to accept
the larger of the two domains.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/24/2004 11:29:36 PM
|
|
FM wrote:
) Which is exactly my point. You missed:
)
) 'I don't think iteration can be defined without "recursion."
) As I said, once you have "recursion" packaged away in the
) form of a recursively-defined set and take its various
) properties for granted, it's trivial to prove a lot of
) things apparently without recursion.'
That means i'm *not* using induction, I'm using results from previous
proofs that used induction. No apparently there. I just say something
like: 'such-and-so is true, as proven by J. Mathematician in 1979.
Therefore I can directly say that such-and-such is also true.'
J. Mathematician used the induction, not I.
)> Recursion in *algorithms*. Not in *proofs*. Duh.
)
) Recursion in algorithms is no harder to deal with than
) (general) loops in algorithms. In fact, it's easier,
) because its structure is laid out clearly for
) rigorous mathematical examination.
Given that a loop is the same as tail recursion, and tail recursion is the
simplest form of recursion, I can safely say that termination is usually
more easily provable for loops than for recursive functions.
) For instance, there's induction in your previous proof
) (posted below) but it isn't obvious because of the
) structure (and the use of assignment). More specifically,
) your loop invariant 'f * max(n2,1)! == n!' is proven
) inductively.
No it isn't. It's proven directly. The proof that this way of proving
*works* is done by induction. It is my view that if I use results by other
people who used induction to prove their results, I am *not* using
induction myself. If your view differs, then that's that.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/24/2004 11:41:18 PM
|
|
blmblm@myrealbox.com wrote:
) In fact all the program-correctness proofs I've seen do seem to take
) place more in the idealized math world (where such considerations
) don't exist) than in the world of practical computing (where they do,
) and they matter). I don't suppose anyone knows whether there has
) been work done in the formal-methods community to address that?
I've been thinking about that part. There are several ways to handle it, I
think, one of which would be to have the rules how a statement transforms a
precond to a postcond involve extra restrictions in the precondition for
algebraic operations, basically ensuring they are in range.
I haven't studied this particular bit before, so I know of no work in this
field. Of course, a lot of algorithms aren't algebraic in nature, so the
range of types won't be an issue.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/24/2004 11:46:59 PM
|
|
"Willem" <willem@stack.nl> wrote:
> FM wrote:
> ) Which is exactly my point. You missed:
> )
> ) 'I don't think iteration can be defined without "recursion."
> ) As I said, once you have "recursion" packaged away in the
> ) form of a recursively-defined set and take its various
> ) properties for granted, it's trivial to prove a lot of
> ) things apparently without recursion.'
> That means i'm *not* using induction, I'm using results from previous
> proofs that used induction. No apparently there. I just say something
> like: 'such-and-so is true, as proven by J. Mathematician in 1979.
> Therefore I can directly say that such-and-such is also true.'
> J. Mathematician used the induction, not I.
Then this whole thing is entire pointless. You can
prove anything by having someone else prove the whole
thing and simply referring to the proof.
> )> Recursion in *algorithms*. Not in *proofs*. Duh.
> )
> ) Recursion in algorithms is no harder to deal with than
> ) (general) loops in algorithms. In fact, it's easier,
> ) because its structure is laid out clearly for
> ) rigorous mathematical examination.
>
> Given that a loop is the same as tail recursion, and tail recursion is the
> simplest form of recursion, I can safely say that termination is usually
> more easily provable for loops than for recursive functions.
Tail recursion isn't the simplest *form* of recursion
as much as it is a *normal form* to which general
recursion can be reduced. In other words, general
recursion can always be easily mechanically reduced to
tail recursion.
In terms of expressiveness, of course, general
recursion is more powerful, but that's due to our own
sense of aesthetics and modularity.
> ) For instance, there's induction in your previous proof
> ) (posted below) but it isn't obvious because of the
> ) structure (and the use of assignment). More specifically,
> ) your loop invariant 'f * max(n2,1)! == n!' is proven
> ) inductively.
> No it isn't. It's proven directly. The proof that this way of proving
> *works* is done by induction. It is my view that if I use results by other
> people who used induction to prove their results, I am *not* using
> induction myself. If your view differs, then that's that.
I think you're using it about as directly as you can.
To prove f * max(n2,1)! == n! when the function exits,
you're saying it is true at the beginning and *if it was
true at the previous iterative step*, it is true at the
current iterative step. The only reason why it looks
direct and not inductive is due to your deceptive use of
assignment (which is not a standard practice in
mathematics) and vague reference to state. If that's not
an inductive proof, then I don't know what is.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/25/2004 3:51:23 AM
|
|
"Willem" <willem@stack.nl> wrote:
> FM wrote:
> ) That's my exact point - the domain of the factorial
> ) function is not set in stone.
>
> Therefore it makes most sense for a generic factorial function to accept
> the larger of the two domains.
Then most factorial programs are wrong.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/25/2004 3:52:05 AM
|
|
blmblm@myrealbox.com wrote:
<snip>
> Someone commented that Mr. Nilges's function only works for fairly
> small (but >0) n, since the "int" data type is fixed-size and will
> therefore overflow for modest-size inputs to a factorial function.
Close. What I was actually pointing out was that int is only *guaranteed* to
have 15 value bits, so any result exceeding 32767 is not guaranteed to be
returned correctly. An int /can/ have more bits than that, of course. Mind
you, even for a very modest n, you'd need a pretty vast int. For example,
even if you have 8-octet ints, a la Cray, the largest factorial you can
store in that int is 20!
> This aspect of the program seems to be totally ignored in the proof.
Yes, and thus IMHO the proof is flawed. A proof that "proves" incorrect code
to be correct is the worst possible kind of proof.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
invalid29 (585)
|
1/25/2004 7:34:15 AM
|
|
In article <bABQb.258605$0P1.244866@twister.nyc.rr.com>, "FM" <dartdanfm@yahoo.com> wrote:
>"Gerry Quinn" <gerryq@indigo.ie> wrote:
>> "FM" <dartdanfm@yahoo.com> wrote:
>> m the natural numbers."
>> >>
>> >> So, *most* fields have included 0 in N for the last 200 years.
>> >
>> >Except the most relevant field for the subject.
>> >
>> >I personally prefer to include 0 in the set of natural
>> >numbers, mostly for set-theoretic reasons, but I find this
>> >bigotry coming from non-mathematicians somewhat surprising.
>> >There are certainly conventions but very few are undisputed
>> >in math and in general, things are what you define them to be.
>>
>> The most common use of factorials is in combinatorial calculations.
>> Defining 0! as 1 generalises combinatorial formulae very nicely.
>> Reference to the natural numbers seem a bit of a red herring, especially
>> since in the form of Gamma, the factorial function has been generalised
>> to the reals and indeed complex numbers.
>
>That's my exact point - the domain of the factorial
>function is not set in stone.
But in the context of factorials and their common use, even if we
account the 'natural numbers with zero' and 'the natural numbers without
zero' as equally natural domains for the natural numbers, the former
domain is by far the more natural for the factorial function.
Consequently a factorial function taking integral* input should honour
0!=1. Furthermore, the definition, applying as it does to a superset of
'the natural numbers without zero' is unlikely to create problems for
anyone working in this domain.
(A computer-related domain, not identical to either domain of natural
numbers, and usually considerably distinct from both for large values.)
- Gerry Quinn
|
|
0
|
|
|
|
Reply
|
gerryq2 (435)
|
1/25/2004 11:06:01 AM
|
|
FM wrote:
) Then this whole thing is entire pointless. You can
) prove anything by having someone else prove the whole
) thing and simply referring to the proof.
Whoa, that's going a bit overboard there. I was talking about using
*existing* proofs, such as the proofs you referred to about the properties
of natural numbers and such. I did *not* mean that you should get someone
else to prove your current statement for you.
You only need a few pre-existing inductive proofs to be able to prove a
whole lot of things without induction.
)> Given that a loop is the same as tail recursion, and tail recursion is the
)> simplest form of recursion, I can safely say that termination is usually
)> more easily provable for loops than for recursive functions.
)
) Tail recursion isn't the simplest *form* of recursion
) as much as it is a *normal form* to which general
) recursion can be reduced. In other words, general
) recursion can always be easily mechanically reduced to
) tail recursion.
Odd, I thought any recursive function that calls itself more than once,
such as qsort, was quite difficult to reduce to tail recursion, which in
fact needs you to implement your own stack ?
) In terms of expressiveness, of course, general
) recursion is more powerful, but that's due to our own
) sense of aesthetics and modularity.
If the above is correct, then it's more powerful because you're not
restricted to one recursive call at the tail.
)> No it isn't. It's proven directly. The proof that this way of proving
)> *works* is done by induction. It is my view that if I use results by other
)> people who used induction to prove their results, I am *not* using
)> induction myself. If your view differs, then that's that.
)
) I think you're using it about as directly as you can.
) To prove f * max(n2,1)! == n! when the function exits,
) you're saying it is true at the beginning and *if it was
) true at the previous iterative step*, it is true at the
) current iterative step.
All I do is supply prepositions that are true between statements.
They can be proven true by simple inspection on the statements.
Therefore, I may assume the preposition after the last statement is true.
(That I'm allowed to use this this 'therefore' depends on induction, of
course, but like I said, somebody else was kind enough to publish such a
proof so I don't have to.)
It's a fine line, I'll admit, and it rather depends on some quite arbitrary
viewpoints, so let's just say I don't call it induction, and you do.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/25/2004 3:15:54 PM
|
|
FM wrote:
> "Willem" <willem@stack.nl> wrote:
>
>>FM wrote:
>>) That's my exact point - the domain of the factorial
>>) function is not set in stone.
>>
>>Therefore it makes most sense for a generic factorial function to accept
>>the larger of the two domains.
>
>
> Then most factorial programs are wrong.
Only one version can allow the programmer to decide if 0! is a
factoriable number. That version is the one that accepts 0!. The
programmer can then decide for themselves if 0! should be disallowed.
If you choose the smaller domain for your function then it is limited to
that domain, even if the user of that function believes it should be the
larger. By using the larger you are making your function useful to more
people, and in this case most of them.
NR
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/25/2004 5:36:55 PM
|
|
"Noah Roberts" <nroberts@dontemailme.com> wrote:
> FM wrote:
> > "Willem" <willem@stack.nl> wrote:
> >
> >>FM wrote:
> >>) That's my exact point - the domain of the factorial
> >>) function is not set in stone.
> >>
> >>Therefore it makes most sense for a generic factorial function to accept
> >>the larger of the two domains.
> >
> >
> > Then most factorial programs are wrong.
>
> Only one version can allow the programmer to decide if 0! is a
> factoriable number. That version is the one that accepts 0!. The
> programmer can then decide for themselves if 0! should be disallowed.
Then, by that definition, all factorial programs should
allow arbitrarily large integers, rationals, algebraics,
and some important transcendentals.
> If you choose the smaller domain for your function then it is limited to
> that domain, even if the user of that function believes it should be the
> larger. By using the larger you are making your function useful to more
> people, and in this case most of them.
I fail to see your point.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/25/2004 6:53:20 PM
|
|
)> Only one version can allow the programmer to decide if 0! is a
)> factoriable number. That version is the one that accepts 0!. The
)> programmer can then decide for themselves if 0! should be disallowed.
FM wrote:
) Then, by that definition, all factorial programs should
) allow arbitrarily large integers, rationals, algebraics,
) and some important transcendentals.
Not quite, because those all require a lot more complex programming,
whereas accepting 0 as input does not. It's very very easy to do it, it
only has benefits to do it, so why *not* do it ?
)> If you choose the smaller domain for your function then it is limited to
)> that domain, even if the user of that function believes it should be the
)> larger. By using the larger you are making your function useful to more
)> people, and in this case most of them.
)
) I fail to see your point.
If somebody using a factorial function works with the definition that 0 is
not a natural number, he can simply use a factorial function that assumes 0
*is* a natural number; just don't give it 0 as input.
If, however, somebody who works with the definition that 0 *is* a natural
number, he can *not* simply use a factorial function that assumes 0 is
*not* a natural number, he has to build a workaround.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/25/2004 7:20:01 PM
|
|
"Willem" <willem@stack.nl> wrote:
> FM wrote:
> ) Then this whole thing is entire pointless. You can
> ) prove anything by having someone else prove the whole
> ) thing and simply referring to the proof.
> Whoa, that's going a bit overboard there. I was talking about using
> *existing* proofs, such as the proofs you referred to about the properties
> of natural numbers and such. I did *not* mean that you should get someone
> else to prove your current statement for you.
I'm not saying you did, but I'm saying that this
discussion of whether a specific technique is
necessary is completely moot if you're allowed to
refer to existing proofs. Recursion in
*algorithms* is also never necessary, as long as
you're able to package it away in the form of
other abstractions.
But the concept of self-reference in general, is
necessary to deal with anything but the most
trivial matters in mathematics.
> You only need a few pre-existing inductive proofs to be able to prove a
> whole lot of things without induction.
I think you need just one to do away with induction
completely.
> )> Given that a loop is the same as tail recursion, and tail recursion is the
> )> simplest form of recursion, I can safely say that termination is usually
> )> more easily provable for loops than for recursive functions.
> )
> ) Tail recursion isn't the simplest *form* of recursion
> ) as much as it is a *normal form* to which general
> ) recursion can be reduced. In other words, general
> ) recursion can always be easily mechanically reduced to
> ) tail recursion.
>
> Odd, I thought any recursive function that calls itself more than once,
> such as qsort, was quite difficult to reduce to tail recursion, which in
> fact needs you to implement your own stack ?
You can do that or do CPS (Continuation-Passing Style)
transformation. Instead of calling a function and
using its result, you can call a function with an
additional argument, a continuation, which the callee
is supposed to call with what would have been the
result. Thus, you simply package up the rest of the
computation in the continuation argument. Note that
in this style, *all* function calls are tail calls
that never return.
Consider the following pseudo-code for QuickSort:
qsort(list l) = (
let (l1, p, l2) = partition(l);
return qsort(l1) ++ [p] ++ qsort(l1);
)
This can be reduced to a tail-recursive version using CPS
// here we have a non-tail call, but let's assume
// that partitionK was written in CPS-style to begin
// with.
partitionK(list l, func k) = k(partition(l));
qsortK(list l, func k) = (
let partK = function(l1, p, l2) (
let qsortK1 = function(lq1) (
let qsortK2 = function(lq2) (
return k(lq1 ++ [p] ++ lq2);
)
return qsort(l2, qsortK2);
)
return qsort(l1, qsortK1);
)
return partitionK(l, partK);
)
Note that let f = function (...) defines a sub-function
f within the current lexical context.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/25/2004 7:42:55 PM
|
|
In article <40136e25@news2.power.net.uk>,
Richard Heathfield <binary@eton.powernet.co.uk> wrote:
>blmblm@myrealbox.com wrote:
>
><snip>
>
>> Someone commented that Mr. Nilges's function only works for fairly
>> small (but >0) n, since the "int" data type is fixed-size and will
>> therefore overflow for modest-size inputs to a factorial function.
>
>Close. What I was actually pointing out was that int is only *guaranteed* to
>have 15 value bits, so any result exceeding 32767 is not guaranteed to be
>returned correctly. An int /can/ have more bits than that, of course. Mind
>you, even for a very modest n, you'd need a pretty vast int. For example,
>even if you have 8-octet ints, a la Cray, the largest factorial you can
>store in that int is 20!
>
>> This aspect of the program seems to be totally ignored in the proof.
>
>Yes, and thus IMHO the proof is flawed. A proof that "proves" incorrect code
>to be correct is the worst possible kind of proof.
Which is sort of disturbing. I *like* the idea of formally proving that
an algorithm is correct, and I can get evangelistic about the notion
that some of the underlying ideas of formal methods (loop invariants
and assertions, e.g.) can be applied informally to good effect.
But it is a little disturbing to consider the implications of the fact
that the proofs take place in a universe with integers and real numbers,
while the programs run in a universe with ints and doubles/floats, which
don't quite have the same properties.
--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.
--
-- blm
|
|
0
|
|
|
|
Reply
|
blmblm (1187)
|
1/27/2004 5:36:43 PM
|
|
On Tue, 27 Jan 2004 blmblm@myrealbox.com wrote:
>
> Richard Heathfield <binary@eton.powernet.co.uk> wrote:
> >blmblm@myrealbox.com wrote:
> >> Someone commented that Mr. Nilges's function only works for fairly
> >> small (but >0) n, since the "int" data type is fixed-size and will
> >> therefore overflow for modest-size inputs to a factorial function.
<snip>
> >> This aspect of the program seems to be totally ignored in the proof.
>
> >Yes, and thus IMHO the proof is flawed. A proof that "proves" incorrect
> >code to be correct is the worst possible kind of proof.
>
> Which is sort of disturbing. I *like* the idea of formally proving that
> an algorithm is correct, and I can get evangelistic about the notion
> that some of the underlying ideas of formal methods (loop invariants
> and assertions, e.g.) can be applied informally to good effect.
Yes, formal proofs of real code certainly are seductive. My personal
opinion on the matter is that they're rarely useful, partly because
the average "proof" doesn't model the program accurately (e.g., assuming
infinite memory or mathematical integers or reals). But also, it's
very rare that I'll look at a proof and think, "Ah, yes, this proof
is correct," when it wouldn't have been much faster to simply look at
the corresponding source code and see, "Ah, yes, this code is correct."
IOW:
Formal proving is simply symbol manipulation in a highly specialized
mathematical language. So is programming. And we have to do the
programming anyway. So why bother with the proving? ;-|
> But it is a little disturbing to consider the implications of the fact
> that the proofs take place in a universe with integers and real numbers,
> while the programs run in a universe with ints and doubles/floats, which
> don't quite have the same properties.
s/the proofs/some invalid proofs/
As Richard implied and Willem elaborated, a formal proof of a program
like "factorial" MUST take the limits of the language into consideration.
Thus, *no proof exists* that will prove that Nilges' program computes n!
correctly for all neN. However, I *can* construct a formal proof that
would show that Nilges' program computes n! correctly for all n in the
closed interval [1,7], and that's the best anyone can do, because it's
the truth. :)
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/27/2004 10:19:11 PM
|
|
FM wrote:
>
> "Willem" <willem@stack.nl> wrote:
> > FM wrote:
> > )|> All you need to do is prove that 'preposition-in-loop' holds during the
> > )|> loop, and that 'preposition-in-loop' AND NOT 'loop-condition' implies
> > )|> 'preposition-after-loop'. No recursion involved there.
> > )
> > ) Which is obviously incorrect. More specifically, any
> > ) provably infinite loop can be proven correct by this
> > ) method.
> >
> > Technically, this method proves that *if* a loop terminates, it terminates
> > with the right answer. You have to *prove* that a loop terminates as well,
> > but you can do that separately.
>
> And how would you do that exactly?
>
> > )|> int nFactorial(int n)
> > )|> {
> > )|> <snip>
> > )
> > ) Note the same flaw.
> >
> > If I wanted to be exact, I would have been a lot more rigorous.
> > Besides, proving termination is usually quite easy for loops.
>
> Using "recursion," yes.
>
> > When you get to recursion, that becomes a whole new problem.
>
> That's a bizarre statement.
>
> Dan.
Recursion and iteration are equivalent. Knuth, I think ( but I might
misremember ).
--
Les Cargill
|
|
0
|
|
|
|
Reply
|
lcargill (131)
|
1/27/2004 11:26:08 PM
|
|
FM wrote:
>
> "Noah Roberts" <nroberts@dontemailme.com> wrote:
> > FM wrote:
> > > "Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote:
> > >>On Thu, 22 Jan 2004, FM wrote:
> > >>>I don't think 0! is necessarily defined. Whenever it is
> > >>>defined, it is defined in such a way as to equal 1, but
> > >>>I'm pretty sure I've seen factorial defined as a function
> > >>>from N to N where N is the set of of all natural numbers
> > >>>(using, of course, the definition of a natural number that
> > >>>does not include 0).
> > >
> > >
> > >> I seriously doubt that any mathematical text defines factorial
> > >>in that way. "Natural numbers" usually refers to the set N,
> > >>which contains zero; and k! is defined for all k >= 0.
> > >
> > >
> > > From what I've seen, the set N usually does *not* include 0.
> > > In fact, before a few years ago, I don't think I had seen any
> > > source that defined N as to include 0. In Computer Science,
> > > N almost always includes 0, but that's a different story.
> >
> > http://en.wikipedia.org/wiki/Natural_number
> >
> > "It took more than five centuries for European mathematicians to accept
> > zero as a number, and even when they did, it was not counted as a
> > natural number."
> >
> > ...
> >
> > "In the nineteenth century, a set-theoretical definition of natural
> > numbers was developed. With this definition, it was more convenient to
> > include zero (corresponding to the empty set) in the naturals. Wikipedia
> > follows this convention, as do set theorists, logicians, and computer
> > scientists. Some other mathematicians, mainly number theorists, prefer
> > to follow the old tradition and exclude zero from the natural numbers."
> >
> > So, *most* fields have included 0 in N for the last 200 years.
>
> Except the most relevant field for the subject.
>
> I personally prefer to include 0 in the set of natural
> numbers, mostly for set-theoretic reasons, but I find this
> bigotry coming from non-mathematicians somewhat surprising.
> There are certainly conventions but very few are undisputed
> in math and in general, things are what you define them to be.
>
> Dan.
If it's the kind of math where you do proof by induction, the
zero is confusing and sometimes problematic.
--
Les Cargill
|
|
0
|
|
|
|
Reply
|
lcargill (131)
|
1/27/2004 11:27:11 PM
|
|
"Les Cargill" <lcargill@worldnet.att.net> wrote:
> FM wrote:
> > "Willem" <willem@stack.nl> wrote:
> > > If I wanted to be exact, I would have been a lot more rigorous.
> > > Besides, proving termination is usually quite easy for loops.
> >
> > Using "recursion," yes.
> >
> > > When you get to recursion, that becomes a whole new problem.
> >
> > That's a bizarre statement.
> >
> > Dan.
>
> Recursion and iteration are equivalent. Knuth, I think ( but I might
> misremember ).
With loops and a stack, one can implement recursion.
With recursion, you can certainly implement any kind
of loops. Whether iteration and recursion are
equivalent depends on one's definition of iteration.
Dan.
|
|
0
|
|
|
|
Reply
|
dartdanfm (81)
|
1/28/2004 2:16:19 AM
|
|
In article <slrnc135eh.1nmo.willem@toad.stack.nl>, Willem <willem@stack.nl> wrote:
>)> But even IBM was infected with the mystery and terror of the number
>)> zero. Early in the 1970s, IBM manuals began appearing with pages
>)> completely blank, except for the mysterious and terrible words, "this
>)> page intentionally left blank".
>
>Randy wrote:
>
>) This was so irrational that I just had to leave it in for those that
>) didn't make it all the way through the Nilgesian prose the first time.
>
>ObTrivia: Does anybody know the actual reason why the words 'this page
> intentionally left blank' are there ?
Presumably so readers won't think their copy is defective due to missing
pages, and demand a fresh copy.
Gerry Quinn
--
http://bindweed.com
Screensavers, Games, Kaleidoscopes
Download free trial versions
|
|
0
|
|
|
|
Reply
|
gerryq2 (435)
|
1/28/2004 2:52:47 PM
|
|
In article <4016F4BE.909C9BA8@worldnet.att.net>, Les Cargill <lcargill@worldnet.att.net> wrote:
>If it's the kind of math where you do proof by induction, the
>zero is confusing and sometimes problematic.
Why? Normally proof by induction means showing that something is true
for a particular number, then showing that if it is true for a
particular number it is true for its successor. Just start with 1, if
it's not true for 0.
- Gerry Quinn
|
|
0
|
|
|
|
Reply
|
gerryq2 (435)
|
1/28/2004 2:56:57 PM
|
|
blmblm@myrealbox.com wrote:
> I *like* the idea of formally proving that an algorithm is correct,
> and I can get evangelistic about the notion that some of the
> underlying ideas of formal methods (loop invariants and assertions,
> e.g.) can be applied informally to good effect.
Just as another datapoint, my operating belief (for now) is that--
outside certain types of more mathematical code--formal correctness
proof is a pipe dream.
My artist side rather likes it that way. (-:
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/28/2004 5:49:49 PM
|
|
Let me re-emphasize that since people pay me for writing, I have
decided that these newsgroups are, in Shakespeare's words, "an expense
of spirit in a waste of shame", since they have become dominated by
trolls who waste my time.
An exceptionally disheartening post was Willem's in which he quoted
obviously literary passages from the Koran in order to "prove", in a
genuinely off-topic way and in genuine violation of the newsgroup
charter, that Arabs are killers: in response to my on-topic connection
of the technical issues of this newsgroup with social isolation, which
relates directly to lack of programming productivity and error rates.
It is racist to in any way quote the sacred texts of another faith in
order to prove blood libels of any sort. It appears from this and in
the assasination of Pym Fortuyn, Willem's society may have
internationalist and anti-racist committments at the top, but the
great mass of Dutch haven't gotten over having their fat white butts
kicked out of Indonesia in the late 1940s and thus believe blood
libels.
And to remain on-topic I find it fascinating when American white
people claim that they have special computer skills that others don't
share, for when, as a maintenance programmer, I have opened program
texts in twenty different languages, in both industry and academia,
nation wide, I almost always find the same disconnect between theory
and praxis, and claim and reality.
Here, I posted my attempt at proving an iterative version of N
factorial but Willem's proof was better (and it makes me sad to see a
disconnect between excellence of technical praxis and simple human
solidarity and dignity). But the proofs become "mine" since I have it
seems become an eminance grise or monstre sacre or Chosen One.
Note that the refutations are directed at the Nilges proof but the
same objections apply to the Willem proof.
"Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote in message news:<Pine.LNX.4.58-035.0401271710060.15440@unix48.andrew.cmu.edu>...
> On Tue, 27 Jan 2004 blmblm@myrealbox.com wrote:
> >
> > Richard Heathfield <binary@eton.powernet.co.uk> wrote:
> > >blmblm@myrealbox.com wrote:
> > >> Someone commented that Mr. Nilges's function only works for fairly
> > >> small (but >0) n, since the "int" data type is fixed-size and will
> > >> therefore overflow for modest-size inputs to a factorial function.
> <snip>
> > >> This aspect of the program seems to be totally ignored in the proof.
Of course, the correctness of the program as opposed to the algorithm
it expresses is dependent on the choice of size of int, and note that
this is not fixed. I seem to recall Richard telling us that int is not
fixed by the standard and that it can be 32 or 64 bits without
violating the standard.
But no matter what it is the program will always break even if int is
unlimited for in that case the machine will eventually run out of
resources. Nonetheless there is a difference between a "proven"
program, which relies on empirical facts about the operating system,
and an unproven program, which ALSO relies on empirical facts about
the operating system. The phrase "all other things being equal"
applies.
Again, I am appalled to see such simple failures in logic on the part
of people who claim to be studly logicians, as I was appalled when
charged with being a fan of VB just because I think C is out of date.
Leaps of logic are made by people who lack emotional control. Exhibit
A is the leap of logic inherent in reasoning from the name of the
group to Richard's nonsensical conclusion that we can't talk about
programmERS in programmING.
Willem receives no rebuke for posting genuinely offtopic blood libels
against Moslems despite the fact that a graph of the argument at the
point he made his blood libel would show that the blood libel is
connected with the argument graph BY A SINGLE LINE, in which Willem
was off-topic simply because his impure motivation at that point was
to show that I was wrong independent of any programming issues.
We may contrast this failure of logic and humanity with almost any
text of mine, which mentions the "offtopic" only as part of a highly
connected network, whose very density confuses and enrages the Troll's
Chorus.
>
> > >Yes, and thus IMHO the proof is flawed. A proof that "proves" incorrect
> > >code to be correct is the worst possible kind of proof.
> >
> > Which is sort of disturbing. I *like* the idea of formally proving that
> > an algorithm is correct, and I can get evangelistic about the notion
> > that some of the underlying ideas of formal methods (loop invariants
> > and assertions, e.g.) can be applied informally to good effect.
>
> Yes, formal proofs of real code certainly are seductive. My personal
> opinion on the matter is that they're rarely useful, partly because
> the average "proof" doesn't model the program accurately (e.g., assuming
> infinite memory or mathematical integers or reals). But also, it's
> very rare that I'll look at a proof and think, "Ah, yes, this proof
> is correct," when it wouldn't have been much faster to simply look at
> the corresponding source code and see, "Ah, yes, this code is correct."
>
Given that enterprise systems as delivered fail, in part owing to
simple bugs, at approximately the 80% error rate, one cannot account
for this resistance to using an additional tool such as formal or
informal logic in order to lower the bug rate, unless the reason is
just laziness and stupidity.
> IOW:
> Formal proving is simply symbol manipulation in a highly specialized
> mathematical language. So is programming. And we have to do the
> programming anyway. So why bother with the proving? ;-|
>
Because in my observation, reinforced from texts by hero computer
scientist Dijkstra, training in formal methods makes for great
programmers. My own experience was that I was fortunate to complete
several classes in modern logic and axiomatic set theory before
getting access to a computer, and I believe I am a terrific
programmer...but that seems to be in play according to you trolls and
das ist ein anders.
But John Nash had had all sorts of advanced training and had done all
sorts of work not only in mathematics but also in logic, and his code
as a result was the greatest code I've ever seen.
Most ordinary code betrays no such background.
For example, many program texts are overlong because absent symbolic
training, programmers are uncomfy with "complex" expressions including
several operators and relying on precedence.
In fact, this discomfort is probably the reason for the Troll's Chorus
on my "error" in using intIndex>strlen(strInstring).
Since most of the trolls in the chorus knew goddamn well that the size
of strInstring was pragmatically bounded, they dishonestly said the
code was oooo NP complete simply to cover up their prejudice for the
straightforward, holy, Tolstoyan simplicity of
int intStupidVariable = strlen(strInstring);
for ( intIndex1 = 0; intIndex1 < intStupidVariable; intIndex1++ )
Arguably, the above code DOES make debugging easier if you need to
examine individual assignments: but in general and when scaled up, the
practice of creating many unnecessary temporary variables creates
large texts with unpredictable state. Most debuggers allow you to
examine intermediate results, and my own form of expression saved a
line of code in the source text, making it more readable.
>
> > But it is a little disturbing to consider the implications of the fact
> > that the proofs take place in a universe with integers and real numbers,
> > while the programs run in a universe with ints and doubles/floats, which
> > don't quite have the same properties.
>
> s/the proofs/some invalid proofs/
No, the guy's point is well taken. You cannot deductively "prove" that
some clown won't misuse your code.
>
> As Richard implied and Willem elaborated, a formal proof of a program
> like "factorial" MUST take the limits of the language into consideration.
> Thus, *no proof exists* that will prove that Nilges' program computes n!
> correctly for all neN. However, I *can* construct a formal proof that
> would show that Nilges' program computes n! correctly for all n in the
> closed interval [1,7], and that's the best anyone can do, because it's
> the truth. :)
No, you cannot, since if I run it on a machine which represents ints
in 64 bits it will work for a larger range.
What's going on here is a divorce between theory and
practice...followed by their monstrous and indeed shotgun reunion.
The theory only allows you to better predict software behavior but
this is something we need. It also allows you to better explain
algorithms used, but this virtue is lost on a subprofessional
discipline which fails, consistently, to mentor newbies adequately.
Anyway, I have to exercise iron self-control even though I am aware
that I provide much food for thought, meat for the Synagogue thrown on
the pavement, and I seem to liven this place up no end. Therefore all
my secret fans in the Troll's Chorus will have to wait for the next
transmit.
Program "proving" is just one more way to speak about software
behavior. However, the bruder schweigen is conducting a war against
programming memory, for example in hopes of cashing in by throwing the
next election in the US to George Bush, their natural leader.
Back to work...
>
> -Arthur
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/29/2004 2:31:19 AM
|
|
Edward G. Nilges wrote:
> Let me re-emphasize that since people pay me for writing,
You shouldn't rob from people.
I have
> decided that these newsgroups are, in Shakespeare's words, "an expense
> of spirit in a waste of shame", since they have become dominated by
> trolls who waste my time.
[snip]
>
> And to remain on-topic I find it fascinating when American white
> people claim that they have special computer skills that others don't
> share, for when, as a maintenance programmer, I have opened program
> texts in twenty different languages, in both industry and academia,
> nation wide, I almost always find the same disconnect between theory
> and praxis, and claim and reality.
and you get paid to write runon sentances like that?
>
> Here, I posted my attempt at proving an iterative version of N
> factorial but Willem's proof was better (and it makes me sad to see a
> disconnect between excellence of technical praxis and simple human
> solidarity and dignity).
That is your own illusion.
But the proofs become "mine" since I have it
> seems become an eminance grise or monstre sacre or Chosen One.
Yeah, that sentance make sense...NOT.
> Of course, the correctness of the program as opposed to the algorithm
> it expresses is dependent on the choice of size of int, and note that
> this is not fixed. I seem to recall Richard telling us that int is not
> fixed by the standard and that it can be 32 or 64 bits without
> violating the standard.
or 16.
>
> But no matter what it is the program will always break even if int is
> unlimited for in that case the machine will eventually run out of
> resources. Nonetheless there is a difference between a "proven"
> program, which relies on empirical facts about the operating system,
> and an unproven program, which ALSO relies on empirical facts about
> the operating system. The phrase "all other things being equal"
> applies.
true.
>
> Again, I am appalled to see such simple failures in logic on the part
> of people who claim to be studly logicians, as I was appalled when
> charged with being a fan of VB just because I think C is out of date.
Well, I must say you have a poor idea of what to replace it with.
>
> Willem receives no rebuke for posting genuinely offtopic blood libels
> against Moslems despite the fact that a graph of the argument at the
> point he made his blood libel would show that the blood libel is
> connected with the argument graph BY A SINGLE LINE, in which Willem
> was off-topic simply because his impure motivation at that point was
> to show that I was wrong independent of any programming issues.
What?
>
> We may contrast this failure of logic and humanity with almost any
> text of mine, which mentions the "offtopic" only as part of a highly
> connected network, whose very density confuses and enrages the Troll's
> Chorus.
Yes, your posts have been very dense.
[snip - I'm bored.]
NR
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/29/2004 6:19:55 AM
|
|
Edward G. Nilges wrote:
> Let me re-emphasize that since people pay me for writing, I have
> decided that these newsgroups are, in Shakespeare's words, "an expense
> of spirit in a waste of shame", since they have become dominated by
> trolls who waste my time.
I feel this paragraph deserves some more attention.
"Let me re-emphasize that since people pay me for writing," - what does
this have to do with anything? Why would being payed for writing have
anything to do with one's "descision" that these newsgroups are a waste
of time? Maybe Nilges believes it will make us feel worse that he is a
"professional" writer that finds us a waste of time. On the other hand,
maybe he means just what he said, that he decided these newsgroups are
"an expence of spirit in a waste of shame" because people pay him to
write. I find this rather odd.
"I have decided that these newsgroups are, in Shakespeare's words, "an
expense of spirit in a waste of shame"" - That is nice, but you have
been saying this for a long time now. I actually see this quite often
on Usenet. For some reason people that act like jerks on the internet
always come to the same "conclusion": it's everyone else's problem and
everyone is annoyed because they are all a bunch trolls. It is actually
rather humerous.
"since they have become dominated by trolls who waste my time." - This
statement is even more rediculous than the previous. Who is wasting
who's time? I must have missed it when someone said, "Hey, lets force
Nilges to post his incredibly long and pompus messages to our forum so
that all his time is wasted." Was there a secret black table meeting
that I wasn't invited to? Maybe someone else here on the group can
explain exactly how these dominating trolls managed to force Nilges to
waste his time because I just don't see how it is possible.
What is really facinating is the word count of the spew that followed
this paragraph. Must have taken a lot of time. I suppose the
dominating trolls (good band name) once again forced Nilges to waste his
time here.
NR
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/29/2004 7:45:23 AM
|
|
spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401281831.dade6d9@posting.google.com>...
> Let me re-emphasize that since people pay me for writing, I have
> decided that these newsgroups are, in Shakespeare's words, "an expense
> of spirit in a waste of shame", since they have become dominated by
> trolls who waste my time.
>
> An exceptionally disheartening post was Willem's in which he quoted
> obviously literary passages from the Koran in order to "prove", in a
> genuinely off-topic way and in genuine violation of the newsgroup
> charter, that Arabs are killers: in response to my on-topic connection
> of the technical issues of this newsgroup with social isolation, which
> relates directly to lack of programming productivity and error rates.
It sounded unlike what i'd read of Willem so i checked. It was Randy
Howard
http://groups.google.com/groups?q=g:thl2515987928d&dq=&hl=en&lr=&ie=UTF-8&selm=MPG.1a7bb6e3577c4548989bad%40news.megapathdsl.net
> It is racist to in any way quote the sacred texts of another faith in
> order to prove blood libels of any sort. It appears from this and in
> the assasination of Pym Fortuyn, Willem's society may have
> internationalist and anti-racist committments at the top, but the
> great mass of Dutch haven't gotten over having their fat white butts
> kicked out of Indonesia in the late 1940s and thus believe blood
> libels.
Wasn't Willem though was it? You're not just generalising the
particular here, with regard to dutch society, but generalising the
*wrong* particular.
> Anyway, I have to exercise iron self-control even though I am aware
> that I provide much food for thought, meat for the Synagogue thrown on
> the pavement, and I seem to liven this place up no end. Therefore all
> my secret fans in the Troll's Chorus will have to wait for the next
> transmit.
Sure you liven it up, i've even stated my own welcome of a bit of
thought provoking Edwardism. let's make sure we're accurate about
what Willem's been posting though, eh?
|
|
0
|
|
|
|
Reply
|
gswork (648)
|
1/29/2004 8:36:27 AM
|
|
gswork wrote:
> spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401281831.dade6d9@posting.google.com>...
>>Anyway, I have to exercise iron self-control even though I am aware
>>that I provide much food for thought,
HEHEHE I didn't even notice this one before. Is this guy full of
himself or what...
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/29/2004 8:58:00 AM
|
|
Noah Roberts wrote:
> spinoza1111@yahoo.com (Edward G. Nilges) wrote in message
>
> > Anyway, I have to exercise iron self-control even though I am
> > aware that I provide much food for thought,
>
> HEHEHE I didn't even notice this one before. Is this guy full of
> himself or what...
>
> --
> "I can't help it, the Dominating Trolls made me."
Are you sure he doesn't mean "domineering trolls"? The ones with
the straps and whips. He certainly shows signs of such
dominance. However the supplicating attitude is either missing or
he has been instructed not to show it to us.
Enquiring Dominant Troll minds want to know.
--
Chuck F (cbfalconer@yahoo.com) (cbfalconer@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!
|
|
0
|
|
|
|
Reply
|
cbfalconer (19183)
|
1/29/2004 12:25:20 PM
|
|
Edward wrote:
) An exceptionally disheartening post was Willem's in which he quoted
) obviously literary passages from the Koran in order to "prove", in a
) genuinely off-topic way and in genuine violation of the newsgroup
) charter, that Arabs are killers: in response to my on-topic connection
) of the technical issues of this newsgroup with social isolation, which
) relates directly to lack of programming productivity and error rates.
That's an obvious and direct lie. I never posted anything of the sort.
Please provide a message-ID of the message in which I posted this alleged
religious attack, or post a retraction of this lie.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/29/2004 1:42:47 PM
|
|
gswork wrote:
) It sounded unlike what i'd read of Willem so i checked. It was Randy
) Howard
)
) http://groups.google.com/groups?q=g:thl2515987928d&dq=&hl=en&lr=&ie=UTF-8&selm=MPG.1a7bb6e3577c4548989bad%40news.megapathdsl.net
Thank you for clearing that up.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/29/2004 1:47:25 PM
|
|
gswork@mailcity.com (gswork) wrote in message news:<81f33a98.0401290036.41a81106@posting.google.com>...
> spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401281831.dade6d9@posting.google.com>...
> > Let me re-emphasize that since people pay me for writing, I have
> > decided that these newsgroups are, in Shakespeare's words, "an expense
> > of spirit in a waste of shame", since they have become dominated by
> > trolls who waste my time.
> >
> > An exceptionally disheartening post was Willem's in which he quoted
> > obviously literary passages from the Koran in order to "prove", in a
> > genuinely off-topic way and in genuine violation of the newsgroup
> > charter, that Arabs are killers: in response to my on-topic connection
> > of the technical issues of this newsgroup with social isolation, which
> > relates directly to lack of programming productivity and error rates.
>
> It sounded unlike what i'd read of Willem so i checked. It was Randy
> Howard
>
> http://groups.google.com/groups?q=g:thl2515987928d&dq=&hl=en&lr=&ie=UTF-8&selm=MPG.1a7bb6e3577c4548989bad%40news.megapathdsl.net
Thanks for the correction, Mr. GsWork. Since I do not wish to waste
much time here I failed to do due diligence on the source. Of course,
the post remains, independent of the author, a blood libel.
>
> > It is racist to in any way quote the sacred texts of another faith in
> > order to prove blood libels of any sort. It appears from this and in
> > the assasination of Pym Fortuyn, Willem's society may have
> > internationalist and anti-racist committments at the top, but the
> > great mass of Dutch haven't gotten over having their fat white butts
> > kicked out of Indonesia in the late 1940s and thus believe blood
> > libels.
>
> Wasn't Willem though was it? You're not just generalising the
> particular here, with regard to dutch society, but generalising the
> *wrong* particular.
Yeah, and I managed to unnecessarily offend the Dutch.
>
> > Anyway, I have to exercise iron self-control even though I am aware
> > that I provide much food for thought, meat for the Synagogue thrown on
> > the pavement, and I seem to liven this place up no end. Therefore all
> > my secret fans in the Troll's Chorus will have to wait for the next
> > transmit.
>
> Sure you liven it up, i've even stated my own welcome of a bit of
> thought provoking Edwardism. let's make sure we're accurate about
> what Willem's been posting though, eh?
Note that when we make a mistake and admit we're wrong, we learn. I
learned alot from reading Willem's proof after admitting I was wrong
about recursion being as necessary as I thought.
Which is yet another for the 80% failure rate, for it's clear from
this ng that people are terrified of others who jump on folks for
fantasized errors.
I learned nothing from my "error" in the use of strlen for the very
good reason that it wasn't a bloody error.
But "do thou amend thy face, and I'll amend my life", as Sir John
Falstaff told Bardolph. As soon as other folks start doing due
diligence on what I say I shall start doing due diligence on what they
say. As it is, I see no reason for expending any effort.
Of course, I do not mean you. I mean instead those clowns over there.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/29/2004 3:26:34 PM
|
|
Noah Roberts <nroberts@dontemailme.com> wrote in message news:<w5mdna1EA8tiOIXdRVn-jw@scnresearch.com>...
> Edward G. Nilges wrote:
> > Let me re-emphasize that since people pay me for writing,
>
> You shouldn't rob from people.
>
> I have
> > decided that these newsgroups are, in Shakespeare's words, "an expense
> > of spirit in a waste of shame", since they have become dominated by
> > trolls who waste my time.
>
> [snip]
> >
> > And to remain on-topic I find it fascinating when American white
> > people claim that they have special computer skills that others don't
> > share, for when, as a maintenance programmer, I have opened program
> > texts in twenty different languages, in both industry and academia,
> > nation wide, I almost always find the same disconnect between theory
> > and praxis, and claim and reality.
>
> and you get paid to write runon sentances like that?
To paraphrase Falstaff, do thou amend thy spelling and I'll amend my
style. I wuv it, when people who cain't spell gude presume to advise
me on my riting.
FYI, sporto, "I have opened program
> > texts in twenty different languages, in both industry and academia,
> > nation wide, I almost always find the same disconnect between theory
> > and praxis, and claim and reality"
is NOT a "run on sentence". It is instead an elegant bit of rhetoric.
But this is offtopic.
>
> >
> > Here, I posted my attempt at proving an iterative version of N
> > factorial but Willem's proof was better (and it makes me sad to see a
> > disconnect between excellence of technical praxis and simple human
> > solidarity and dignity).
>
> That is your own illusion.
It appears to me that programmers, in the past twenty years, have been
so drained of self-esteem that they are special victims of the
epistemological curse where merely "knowing that" is suspect and a
sign of a trouble-maker. Thus everything becomes an "illusion".
But in fact you were right, in part, for there is such a thing as
knowledge.
It wasn't Willem who posted a blood libel of Moslems: it was our off
the rails friend Randy Howard.
But Willem disrespected me for using German "falsely" as if a human
speaker could be false by virtue of using a language not his "own".
This is almost as racist as a blood libel.
>
> But the proofs become "mine" since I have it
> > seems become an eminance grise or monstre sacre or Chosen One.
>
> Yeah, that sentance make sense...NOT.
"NOT" is not a postfix operator, sporto.
>
> > Of course, the correctness of the program as opposed to the algorithm
> > it expresses is dependent on the choice of size of int, and note that
> > this is not fixed. I seem to recall Richard telling us that int is not
> > fixed by the standard and that it can be 32 or 64 bits without
> > violating the standard.
>
> or 16.
> >
> > But no matter what it is the program will always break even if int is
> > unlimited for in that case the machine will eventually run out of
> > resources. Nonetheless there is a difference between a "proven"
> > program, which relies on empirical facts about the operating system,
> > and an unproven program, which ALSO relies on empirical facts about
> > the operating system. The phrase "all other things being equal"
> > applies.
>
> true.
> >
> > Again, I am appalled to see such simple failures in logic on the part
> > of people who claim to be studly logicians, as I was appalled when
> > charged with being a fan of VB just because I think C is out of date.
>
> Well, I must say you have a poor idea of what to replace it with.
>
> >
> > Willem receives no rebuke for posting genuinely offtopic blood libels
> > against Moslems despite the fact that a graph of the argument at the
> > point he made his blood libel would show that the blood libel is
> > connected with the argument graph BY A SINGLE LINE, in which Willem
> > was off-topic simply because his impure motivation at that point was
> > to show that I was wrong independent of any programming issues.
>
> What?
Randy Howard libeled Moslems and not Willem, but he was offtopic.
Any post is a meaning graph. It may mention, IMO, outside issues as
long as they are embedded in the graph, and not a literal "tangent": a
segment of the graph that wanders off.
Thus when I link Gen X low self-esteem to the inability of Gen X
programmers to conduct structured walkthroughs, I properly wire the
"offtopic" to the main theme. Whereas the end point of Randy Howard's
blood libel was "I yam right about dem Moslems and Nilges is wrong",
which has nothing to do with the charter topic of comp.programming and
is also wrong.
Richard Heathfield's topic detection methodology is horseshit, because
he apparently counts offtopic words without forming a clear idea of
the syntax in which the words are embedded.
Also, it is my suspicion that rage and hate are somehow, never
offtopic here.
> >
> > We may contrast this failure of logic and humanity with almost any
> > text of mine, which mentions the "offtopic" only as part of a highly
> > connected network, whose very density confuses and enrages the Troll's
> > Chorus.
>
> Yes, your posts have been very dense.
>
> [snip - I'm bored.]
If you were a hot chick I'd be sad.
>
> NR
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/29/2004 3:37:27 PM
|
|
Edward G. Nilges wrote:
> Noah Roberts <nroberts@dontemailme.com> wrote in message news:<w5mdna1EA8tiOIXdRVn-jw@scnresearch.com>...
>
>>Edward G. Nilges wrote:
>>>And to remain on-topic I find it fascinating when American white
>>>people claim that they have special computer skills that others don't
>>>share, for when, as a maintenance programmer, I have opened program
>>>texts in twenty different languages, in both industry and academia,
>>>nation wide, I almost always find the same disconnect between theory
>>>and praxis, and claim and reality.
>>
>>and you get paid to write runon sentances like that?
>
>
> To paraphrase Falstaff, do thou amend thy spelling and I'll amend my
> style. I wuv it, when people who cain't spell gude presume to advise
> me on my riting.
>
> FYI, sporto, "I have opened program
>
>>>texts in twenty different languages, in both industry and academia,
>>>nation wide, I almost always find the same disconnect between theory
>>>and praxis, and claim and reality"
>
>
> is NOT a "run on sentence". It is instead an elegant bit of rhetoric.
Funny how you respond in this way here instead of above. The above
piece has a total of 6 commas in one sentence. It is very hard to read.
But I see you don't actually want people to be able to read your
"rhetoric" but blindside them with unreadable sentences and foreign words.
>
> It appears to me that programmers, in the past twenty years, have been
> so drained of self-esteem that they are special victims of the
> epistemological curse where merely "knowing that" is suspect and a
> sign of a trouble-maker. Thus everything becomes an "illusion".
Knowing what? This is the problem with your posts, they make absolutely
no sense at all.
> But Willem disrespected me for using German "falsely" as if a human
> speaker could be false by virtue of using a language not his "own".
> This is almost as racist as a blood libel.
This is an English speaking newsgroup. Using German is not appropriate.
Your use of it is also dubious since you appear to throw it in only to
sound intelligent; another blindsiding tactic that most here are simply
not falling for.
> "NOT" is not a postfix operator, sporto.
Forgive me if I don't take my grammar lessons from you. I can't think
of anyone worse to teach use of the English language. The English
language, as all languages, is meant for the purpose of communication.
You seem incapable, or unwilling, to communicate effectively using this
language.
[blablablablablab]
>
>>>We may contrast this failure of logic and humanity with almost any
>>>text of mine, which mentions the "offtopic" only as part of a highly
>>>connected network, whose very density confuses and enrages the Troll's
>>>Chorus.
>>
>>Yes, your posts have been very dense.
>>
>>[snip - I'm bored.]
>
>
> If you were a hot chick I'd be sad.
I would suspect you are used to disappointment in this area.
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/29/2004 4:55:50 PM
|
|
Edward G. Nilges wrote:
> Let me re-emphasize that since people pay me for writing, I have
> decided that these newsgroups are, in Shakespeare's words, "an expense
> of spirit in a waste of shame", since they have become dominated by
> trolls who waste my time.
Methinks Mr Nilges doth protest too much. If the newsgroups are a waste of
his time, why does he use them? And where are all these trolls of whom he
speaks? Could it be that anyone who dares to point out Mr Nilges's folly
must, by definition, be a troll? No wonder there are so many.
<snip>
> Note that the refutations are directed at the Nilges proof but the
> same objections apply to the Willem proof.
Very true. But Willem, on the other hand, wasn't making a claim about the
relevance of proofs, whereas I seem to recall that Mr Nilges /was/.
>> > >blmblm@myrealbox.com wrote:
>> > >> Someone commented that Mr. Nilges's function only works for fairly
>> > >> small (but >0) n, since the "int" data type is fixed-size and will
>> > >> therefore overflow for modest-size inputs to a factorial function.
>> <snip>
>> > >> This aspect of the program seems to be totally ignored in the proof.
>
> Of course, the correctness of the program as opposed to the algorithm
> it expresses is dependent on the choice of size of int, and note that
> this is not fixed. I seem to recall Richard telling us that int is not
> fixed by the standard and that it can be 32 or 64 bits without
> violating the standard.
In the C programming language (and, I'm reasonably sure, C++ too), an int
must be capable, at a minimum, of representing any integer in the range
-32767 to +32767. Therefore, it must have a minimum of 15 value bits, and a
sign bit, so an int object is at least a 16-bit object. It may, of course,
have more: 17, or 18, or 19, or 23, or 29, or 32, or 36, or 64, or 128, or
314159, or whatever. No maximum value is imposed; it's up to each
implementation to decide how many bits an int has, subject to the minimum
constraint.
> But no matter what it is the program will always break even if int is
> unlimited for in that case the machine will eventually run out of
> resources.
That's right, and that's why some of us were so surprised to see a "proof"
that the code was correct. In fact the code, as posted, was very flawed.
The code, after correction, is still pretty useless. In neither case is a
"proof" useful, even if the proof is mathematically correct. For a program
proof to be useful, it must prove the /program/ correct, not just the
mathematics.
> Nonetheless there is a difference between a "proven"
> program, which relies on empirical facts about the operating system,
> and an unproven program, which ALSO relies on empirical facts about
> the operating system. The phrase "all other things being equal"
> applies.
Yes. In this case, the difference is between a "proven" program that didn't
work, whereas it is trivial to write an unproven program that does work
(within the same domain). If we're going to claim that we have proved our
code to be *correct*, would it not be a sensible step to at least make sure
the code can actually be *compiled*?
> Again, I am appalled to see such simple failures in logic on the part
> of people who claim to be studly logicians, as I was appalled when
> charged with being a fan of VB just because I think C is out of date.
Mr Nilges's creative approach to logical deduction is well-documented in
comp.programming, and it's apparent again here. He appears not to be able
to see that the position "this program (which doesn't compile and therefore
can't even run) must be correct because my proof says it is" is logically
insupportable.
> Leaps of logic are made by people who lack emotional control. Exhibit
> A is the leap of logic inherent in reasoning from the name of the
> group to Richard's nonsensical conclusion that we can't talk about
> programmERS in programmING.
Mr Nilges seems to misunderstand the word "can't". He /has/ talked about
programmers in comp.programming. Therefore it's possible, and entirely
beside the point. The topicality issue is crystal-clear. This is a group
for discussing programming, not programmers. Those who wish to discuss
programmers ought, as a matter of courtesy, to find a newsgroup where such
discussions are topical.
<random nonsense snipped>
>> Yes, formal proofs of real code certainly are seductive. My personal
>> opinion on the matter is that they're rarely useful, partly because
>> the average "proof" doesn't model the program accurately (e.g., assuming
>> infinite memory or mathematical integers or reals). But also, it's
>> very rare that I'll look at a proof and think, "Ah, yes, this proof
>> is correct," when it wouldn't have been much faster to simply look at
>> the corresponding source code and see, "Ah, yes, this code is correct."
>>
> Given that enterprise systems as delivered fail, in part owing to
> simple bugs, at approximately the 80% error rate,
That is not in line with the experiences reported by professional
programmers in this newsgroup. If it is in line with Mr Nilges's
experience, that may not be entirely coincidental.
> one cannot account
> for this resistance to using an additional tool such as formal or
> informal logic in order to lower the bug rate, unless the reason is
> just laziness and stupidity.
But the formal proof, in this case, "proved" an incorrect program to be
correct. I don't see how this is useful.
>> IOW:
>> Formal proving is simply symbol manipulation in a highly specialized
>> mathematical language. So is programming. And we have to do the
>> programming anyway. So why bother with the proving? ;-|
>>
> Because in my observation, reinforced from texts by hero computer
> scientist Dijkstra, training in formal methods makes for great
> programmers.
Alas, it doesn't guarantee them.
> My own experience was that I was fortunate to complete
> several classes in modern logic and axiomatic set theory before
> getting access to a computer,
See what I mean?
> and I believe I am a terrific programmer...
If Mr Nilges could garner a little humility, he might learn a thing or two.
Alas, it seems beyond him.
> Most ordinary code betrays no such background.
Most ordinary code will, however, compile. That's always a bonus.
> For example, many program texts are overlong because absent symbolic
> training, programmers are uncomfy with "complex" expressions including
> several operators and relying on precedence.
void f(char*s,char c){char*t;for(t=s;*s;)*s-c)?*t++=*s++:*s++);{*t='\0';}}
This program text is not overlong. Perhaps Mr Nilges would care to explain
what the function does, how it does it, what the penultimate asterisk is
doing there, and where the bug is.
The rest of us prefer readable code, because it's easier to maintain.
> In fact, this discomfort is probably the reason for the Troll's Chorus
> on my "error" in using intIndex>strlen(strInstring).
Mr Nilges's rather simple-minded conversion of a linear algorithm into a
quadratic algorithm has been discussed in great detail already. Since Mr
Nilges's apparent inability to use Google Groups effectively is /not/
pandemic, people who care enough can look up those discussions and find a
wealth of material from several experienced programmers, explaining
precisely what is wrong with Mr Nilges's strlen line.
> Since most of the trolls in the chorus knew goddamn well that the size
> of strInstring was pragmatically bounded,
Mr Nilges is on record as thinking it desirable to support strings up to two
Gigabytes long. (If necessary, I'll dig out a message ID for anyone who
cares enough.) If it's desirable to support strings this long, it must be
because one expects people to /use/ long strings. It is inconsistent to
say, on the one hand, "my code can support 2-GB strings" and, on the other,
to say, "algorithm efficiency doesn't matter here because who in their
right mind is gonna use strings longer than 100 characters or so?"
> they dishonestly said the
> code was oooo NP complete simply to cover up their prejudice for the
> straightforward, holy, Tolstoyan simplicity of
>
> int intStupidVariable = strlen(strInstring);
> for ( intIndex1 = 0; intIndex1 < intStupidVariable; intIndex1++ )
Here we go again.
strlen has type size_t, so intStupidVariable has the wrong type. Let's
correct that:
/* Nilges + 1 correction */
size_t intStupidVariable = strlen(strInstring);
for ( intIndex1 = 0; intIndex1 < intStupidVariable; intIndex1++ )
But now the name is misleading, because it looks like it's claiming to be an
int. So let's get rid of the silly prefixes:
/* Nilges + 2 corrections */
size_t StupidVariable = strlen(Instring);
for ( Index1 = 0; Index1 < StupidVariable; Index1++ )
And we're there without too much pain. (Of course, we must ensure that
Index1 has the right type too.)
>
> Arguably, the above code DOES make debugging easier if you need to
> examine individual assignments: but in general and when scaled up, the
> practice of creating many unnecessary temporary variables creates
> large texts with unpredictable state.
Nobody is suggesting that unnecessary temporary variables should be created.
(I'll live with the term "variable", since this is a general programming
group; in C, of course, these are called "objects" rather than
"variables".) On the other hand, necessary temporary variables are to be
recommended. As for unpredictable state, well, this can be avoided by
adopting the very simple practice of ensuring that every temporary (and
indeed every non-temporary) variable always has a known state.
> Most debuggers allow you to
> examine intermediate results, and my own form of expression saved a
> line of code in the source text, making it more readable.
Short code doesn't necessarily equate with readable code, as was
demonstrated by the f() function I presented earlier in this article.
>> > But it is a little disturbing to consider the implications of the fact
>> > that the proofs take place in a universe with integers and real
>> > numbers, while the programs run in a universe with ints and
>> > doubles/floats, which don't quite have the same properties.
>>
>> s/the proofs/some invalid proofs/
>
> No, the guy's point is well taken. You cannot deductively "prove" that
> some clown won't misuse your code.
Mr Nilges's opinion of what you can and cannot prove might carry more weight
if he had not been able to "prove" incorrect code to be correct.
>> As Richard implied and Willem elaborated, a formal proof of a program
>> like "factorial" MUST take the limits of the language into consideration.
>> Thus, *no proof exists* that will prove that Nilges' program computes n!
>> correctly for all neN. However, I *can* construct a formal proof that
>> would show that Nilges' program computes n! correctly for all n in the
>> closed interval [1,7], and that's the best anyone can do, because it's
>> the truth. :)
>
> No, you cannot, since if I run it on a machine which represents ints
> in 64 bits it will work for a larger range.
Either the program is correct or it isn't. If it is intended to be run only
on machines with 64-bit (or greater) ints, then it ought to contain code
that verifies that ints are 64-bit (or greater) objects. (Incidentally,
using 64-bit ints increases the range from [1,7] to [1,20], which hardly
rates as a significant advance.) And the code *did not check* that the
solution would not exceed the capacity of an int to store that solution.
> What's going on here is a divorce between theory and
> practice...followed by their monstrous and indeed shotgun reunion.
Theory and practice are two sides of the same coin. If the "proof" doesn't
work in practice, then IMHO it's not much use in theory either.
> The theory only allows you to better predict software behavior but
> this is something we need.
But the theory said the code was correct, whereas in practice it wasn't. The
only way we could get better software behaviour from Mr Nilges's code was
by ignoring the proof and rewriting the code.
> It also allows you to better explain
> algorithms used, but this virtue is lost on a subprofessional
> discipline which fails, consistently, to mentor newbies adequately.
Perhaps, at last, we get to the nub of the issue. Perhaps Mr Nilges hasn't
been mentored adequately. That would explain a *lot*. Incidentally, Usenet
is IMHO an excellent mentoring environment. I certainly wish I'd had access
to it when I was learning to program.
> Program "proving" is just one more way to speak about software
> behavior.
But if all that a "proof" says is "this code works" when in fact the code
does /not/ work, it isn't much use.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/29/2004 6:09:09 PM
|
|
Edward G. Nilges wrote:
> I learned nothing from my "error" in the use of strlen
That much, at least, is obvious.
> for the very
> good reason that it wasn't a bloody error.
Whether it is an error depends on one's definition of "error". Is it an
error to add two numbers together like this?
unsigned int StupidAdd(unsigned int a, unsigned int b)
{
unsigned int sum = 0;
while(a--)
{
++sum;
}
while(b--)
{
++sum;
}
return sum;
}
It does, after all, give the right answer (modulo (UINT_MAX + 1)). But of
course there are more efficient ways to add numbers. In the same way, one
might not consider repeated calls to strlen (for a given string) to
constitute an error, but that doesn't stop it from being a silly way to do
things.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/29/2004 6:50:39 PM
|
|
Richard wrote:
) void f(char*s,char c){char*t;for(t=s;*s;)*s-c)?*t++=*s++:*s++);{*t='\0';}}
)
) ...
)
) The rest of us prefer readable code, because it's easier to maintain.
I should point out that being able to read the code above (and spotting the
typo) is good exercise if you want to maintain other people's code.
)> Program "proving" is just one more way to speak about software
)> behavior.
)
) But if all that a "proof" says is "this code works" when in fact the code
) does /not/ work, it isn't much use.
Well, formal algorithm proving is usually done with pseudocode, where you
don't have these pesky limitations. ;-)
But seriously, this formal proving of algorithms has been very useful to
prove algorithms such as quicksort, heapsort, longest-common-substring, and
a whole sleet of other jazz standards. We can use them now because at one
time some mathematician proved they worked the way they do.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/29/2004 6:57:27 PM
|
|
Richard Heathfield wrote:
> Edward G. Nilges wrote:
>>and I believe I am a terrific programmer...
>
>
> If Mr Nilges could garner a little humility, he might learn a thing or two.
> Alas, it seems beyond him.
I don't find it the least bit surprising that he thinks he is a terrific
programmer. It is quite obvious, from his posts, that he is quite full
of himself.
>
> void f(char*s,char c){char*t;for(t=s;*s;)*s-c)?*t++=*s++:*s++);{*t='\0';}}
>
> This program text is not overlong. Perhaps Mr Nilges would care to explain
> what the function does, how it does it, what the penultimate asterisk is
> doing there, and where the bug is.
Actually, that is a rather elegant way to do it. I think with a little
whitespace it might be better. It would probably make the 'bugs' rather
obvious as well (I think we have a different definition of bug: I
consider a bug something that actually compiles but exhibits unexpected
behavior).
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/29/2004 7:35:04 PM
|
|
Noah Roberts wrote:
> Richard Heathfield wrote:
>>
>> void f(char*s,char
>> c){char*t;for(t=s;*s;)*s-c)?*t++=*s++:*s++);{*t='\0';}}
>>
>> This program text is not overlong. Perhaps Mr Nilges would care to
>> explain what the function does, how it does it, what the penultimate
>> asterisk is doing there, and where the bug is.
>
> Actually, that is a rather elegant way to do it. I think with a little
> whitespace it might be better.
Well, I took the whitespace out to make a point; i.e. that making one's code
as terse as possible is /not/ a Good Thing.
> It would probably make the 'bugs' rather
> obvious as well (I think we have a different definition of bug: I
> consider a bug something that actually compiles but exhibits unexpected
> behavior).
Er, you're right, darn you. Hang on...
Okay, here we go:
void f(char*s,char c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}}
NOW spot the bug! :-)
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/29/2004 9:01:15 PM
|
|
Willem wrote:
> Richard wrote:
> ) void f(char*s,char
> c){char*t;for(t=s;*s;)*s-c)?*t++=*s++:*s++);{*t='\0';}} )
> ) ...
> )
> ) The rest of us prefer readable code, because it's easier to maintain.
>
> I should point out that being able to read the code above (and spotting
> the typo) is good exercise if you want to maintain other people's code.
Sticky fingers. I meant (, not ) (for a particular value of )). There's
still a bug in there, by the way. I don't suppose Nilges will find it,
though.
>
> )> Program "proving" is just one more way to speak about software
> )> behavior.
> )
> ) But if all that a "proof" says is "this code works" when in fact the
> code ) does /not/ work, it isn't much use.
>
> Well, formal algorithm proving is usually done with pseudocode, where you
> don't have these pesky limitations. ;-)
>
> But seriously, this formal proving of algorithms has been very useful to
> prove algorithms such as quicksort, heapsort, longest-common-substring,
> and
> a whole sleet of other jazz standards. We can use them now because at one
> time some mathematician proved they worked the way they do.
I don't deny the value of proving algorithms. But proving /code/ is another
kettle of fish entirely.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/29/2004 9:05:22 PM
|
|
Richard wrote:
) Er, you're right, darn you. Hang on...
)
) Okay, here we go:
)
) void f(char*s,char c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}}
)
) NOW spot the bug! :-)
Besides the fact that you wasted two whole single quotes, a backslash and
two curlies ? Can't say that I see any bugs there, to be honest.
Maye you forgot to forget something ?
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/29/2004 9:28:15 PM
|
|
On Thu, 29 Jan 2004, Richard Heathfield wrote:
>
> Okay, here we go:
>
> void f(char*s,char c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}}
>
> NOW spot the bug! :-)
Give us a hint: does removing the gratuitous cuteness fix the
bug you're thinking of? :)
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/29/2004 9:29:50 PM
|
|
Willem wrote:
> Richard wrote:
> ) Er, you're right, darn you. Hang on...
> )
> ) Okay, here we go:
> )
> ) void f(char*s,char
> c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}} )
> ) NOW spot the bug! :-)
>
> [...] Can't say that I see any bugs there, to be honest.
> Maye you forgot to forget something ?
The bug is there, believe me.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/29/2004 9:44:12 PM
|
|
Arthur J. O'Dwyer wrote:
>
> On Thu, 29 Jan 2004, Richard Heathfield wrote:
>>
>> Okay, here we go:
>>
>> void f(char*s,char
>> c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}}
>>
>> NOW spot the bug! :-)
>
> Give us a hint: does removing the gratuitous cuteness fix the
> bug you're thinking of? :)
Gur nccneragyl rkgenarbhf frzvpbyba vf abg rkgenarbhf vs gung vf jung lbh
jrer guvaxvat.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/29/2004 10:05:51 PM
|
|
Richard Heathfield wrote:
> Gur nccneragyl rkgenarbhf frzvpbyba vf abg rkgenarbhf vs gung vf
> jung lbh jrer guvaxvat.
Ur arire qvq frrz gb svther bhg bhe "rapelcgvba" zrgubq, qvq ur...
V abgvpr lbhe gregvnel vf xvaq bs n ab-bc. Qbrf gur oht unir gb
qb jvgu gur ynpx bs juvgrfcnpr orgjrra gur rdhnyf naq cyhfrf?
Be vf vg eryngrq gb gur nccnerag ab-bc-arff bs gur jubyr guvat?
NSNVPG, vg qbrfa'g npghnyyl QB nalguvat...
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/29/2004 10:18:45 PM
|
|
"Edward G. Nilges" <spinoza1111@yahoo.com> wrote in message
news:f5dda427.0401290737.419fa901@posting.google.com...
<snip>
>
> To paraphrase Falstaff, do thou amend thy spelling and I'll amend my
> style. I wuv it, when people who cain't spell gude presume to advise
> me on my riting.
>
Eddie, in an earlier post you wrote:
"... But the proofs become "mine" since I have it seems become an eminance
grise or monstre sacre or Chosen One."
As one who misspelled "eminence grise", perhaps you should be a little
slower to criticize others' spelling?
|
|
0
|
|
|
|
Reply
|
BCB
|
1/29/2004 10:38:20 PM
|
|
NOTE: These posts are an attempt to accumulate data for questionable
(at best) purposes, not a serious attempt at a real discussion. A
certain individual who we all are aware of and generally do not agree
with on most topics is planning to write a longwinded book or article
about how people are mean to him on Usenet. Ahh, let's be specific --
Mr. Nilges is doing this. I'm not making this up or guessing, he has
told me this privately in very specific terms.
This is just another in a long sequence of attempts to gather such
information by intentionally trolling with the intent to anger people
into saying things which can then be used out of context as the basis
for such a propaganda piece. I doubt he planned this two years in
advance, but he certainly seems to have accelerated his fishing
expeditions in this area in recent months, presumably as the idea
formed to make a financial gain as a result of writing about the
adverse effects of his presence here.
I was sent a series of emails threatening me in various ways,
most humorous of which was a demand that I post an "apology"
for being pointed about my comments in relation to his source
code, topicality of posts, demonstrated lack of knowledge of
various computing topics, etc. by this troll. The consequences
for not posting this apology?
<sarcasm on>
I will be named specifically in this soon to be world famous book.
Oh no, how scary.
</sarcasm off>.
All you are doing by responding to his intentional flame bait
is giving him ammunition (which will no doubt be used out of
context) to form the core of a 15,000,000 word treatise on a
200 word subject by our least favorite verbosity champion.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/29/2004 10:59:39 PM
|
|
In the words of an Immortal, "Don't Panic!"
Randy Howard wrote:
> I'm not making this up or guessing, he has told me this privately
> in very specific terms.
He's also repeatedly threatened to sue Richard and others.
> <sarcasm on>
> I will be named specifically in this soon to be world famous book.
> Oh no, how scary.
> </sarcasm off>.
Hey, your 15 minutes! Gee, I feel left out. Hope I get at least
a footnote.
> All you are doing by responding to his intentional flame bait
> is giving him ammunition...
Hence the wisdom of "DON'T FEED THE $#!*@& TROLLS"
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/29/2004 11:33:55 PM
|
|
In article <81f33a98.0401290036.41a81106@posting.google.com>,
gswork@mailcity.com says...
> It sounded unlike what i'd read of Willem so i checked. It was Randy
> Howard
>
> http://groups.google.com/groups?q=g:thl2515987928d&dq=&hl=en&lr=&ie=UTF-8&selm=MPG.1a7bb6e3577c4548989bad%40news.megapathdsl.net
Yes, it was.
Nilgewater:
> > It is racist to in any way quote the sacred texts of another faith in
> > order to prove blood libels of any sort.
First of all, I was not "proving blood libels" I was countering Mr. Nilges'
false claim that there is no violence in the Koran. This is also doable
with the Bible ("an eye for an eye" being the obvious example), but the
Bible was not the topic Mr. Nilges raised. Furthermore, Mr. Nilges should
be aware that racism is not equivalent to religious disputes. He's just
using the "r word" in an attempt to make a coup without doing the legwork.
> > It appears from this and in
> > the assasination of Pym Fortuyn, Willem's society may have
> > internationalist and anti-racist committments at the top, but the
> > great mass of Dutch haven't gotten over having their fat white butts
> > kicked out of Indonesia in the late 1940s and thus believe blood
> > libels.
The ridiculous ness of the above in light of it not being Willem is
self-evident, not to mention his misunderstanding of the word "racist".
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/29/2004 11:34:58 PM
|
|
In article <f5dda427.0401290737.419fa901@posting.google.com>, spinoza1111
@yahoo.com says...
> Randy Howard libeled Moslems and not Willem, but he was offtopic.
No I did not, and my comments TO YOU were in response to YOUR offtopic
post about the brotherhood of the Koran.
> Richard Heathfield's topic detection methodology is horseshit, because
> he apparently counts offtopic words without forming a clear idea of
> the syntax in which the words are embedded.
I find it hard to count your words without using extended precision
arithmetic, you are a walking -v flag.
> Also, it is my suspicion that rage and hate are somehow, never
> offtopic here.
They are, until you show up. Why is that? We just had a quite
lengthy "argument" between a number of people in this newsgroup,
which had none of your vitriol, lies or offtopic sociology. How
is that possible? Oh yes, you were not a participant.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/29/2004 11:55:08 PM
|
|
Programmer Dude wrote:
> Richard Heathfield wrote:
>
>> Gur nccneragyl rkgenarbhf frzvpbyba vf abg rkgenarbhf vs gung vf
>> jung lbh jrer guvaxvat.
>
> Ur arire qvq frrz gb svther bhg bhe "rapelcgvba" zrgubq, qvq ur...
Punapr jbhyq or n svar guvat.
> V abgvpr lbhe gregvnel vf xvaq bs n ab-bc. Qbrf gur oht unir gb
> qb jvgu gur ynpx bs juvgrfcnpr orgjrra gur rdhnyf naq cyhfrf?
Ab, gur gregvnel vf abg n ab-bc, naq ab, gur oht unf abguvat gb qb jvgu
juvgrfcnpr.
>
> Be vf vg eryngrq gb gur nccnerag ab-bc-arff bs gur jubyr guvat?
> NSNVPG, vg qbrfa'g npghnyyl QB nalguvat...
Vs lbh guvax gur pbqr qbrfa'g qb nalguvat, lbh unir zvfhaqrefgbbq vg. Gung
vf uneqyl fhecevfvat, orpnhfr vg'f fb grefr. Guvf vf, bs pbhefr, zl cbvag
va cbfgvat vg. Vg'f npghnyyl n engure fvzcyr shapgvba, juvpu qbrf n engure
fvzcyr gnfx, naq lrg vg vf eraqrerq bofpher ol vgf irel grefrarff. V qba'g
guvax Avytrf vf pncnoyr bs fcbggvat gur oht, qb lbh?
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/29/2004 11:55:33 PM
|
|
In article <bvbi82$ipc$2@hercules.btinternet.com>,
dontmail@address.co.uk.invalid says...
> Edward G. Nilges wrote:
> > and I believe I am a terrific programmer...
>
> If Mr Nilges could garner a little humility, he might learn a thing or two.
> Alas, it seems beyond him.
Therein lies the problem. There are no "terrific programmers" who go
around telling people they are "terrific programmers" because everyone
else is too stupid to recognize it. Hint: If you're good, they know.
You don't have to tell them.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/29/2004 11:58:19 PM
|
|
Randy Howard wrote:
>
>
> NOTE: These posts are an attempt to accumulate data for questionable
> (at best) purposes, not a serious attempt at a real discussion. A
> certain individual who we all are aware of and generally do not agree
> with on most topics is planning to write a longwinded book or article
> about how people are mean to him on Usenet. Ahh, let's be specific --
> Mr. Nilges is doing this. I'm not making this up or guessing, he has
> told me this privately in very specific terms.
If this is true (and I have far less reason to doubt you than I do Mr
Nilges), it is rather ironic that the very person to accuse others
(wrongly) of using the newsgroup for commercial reasons should himself end
up doing precisely that.
If he does end up writing such a book, he'd have to find a very unprincipled
publisher (or a vanity publisher) if he wants to see it in print. No
reputable publishing house would touch it after doing even a minimal amount
of research into the real facts.
> This is just another in a long sequence of attempts to gather such
> information by intentionally trolling with the intent to anger people
> into saying things which can then be used out of context as the basis
> for such a propaganda piece.
Solution: don't get angry. He's not worth it.
> I was sent a series of emails threatening me in various ways,
He sent me an email entitled "Cease and desist". I didn't treat it
seriously. I suggest you don't, either.
<snip>
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 12:02:24 AM
|
|
On Thu, 29 Jan 2004, Richard Heathfield wrote:
>
> Arthur J. O'Dwyer wrote:
> > On Thu, 29 Jan 2004, Richard Heathfield wrote:
> >>
> >> void f(char*s,char
> >> c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}}
> >>
> >> NOW spot the bug! :-)
> >
> > Give us a hint: does removing the gratuitous cuteness fix the
> > bug you're thinking of? :)
>
> Gur nccneragyl rkgenarbhf frzvpbyba vf abg rkgenarbhf vs gung vf jung lbh
> jrer guvaxvat.
Lbh fubhyq xabj zl yriry jryy rabhtu ol abj gb xabj gung V xabj jung
gung frzvpbyba vf qbvat gurer. Ab, V zrnag gur hfr bs gur fhogenpgvba
bcrengbe jurer n abg-rdhnyf bcrengbe jbhyq unir orra pyrnere. Naq va
gur cebprff bs pynevslvat, jbhyq unir erzbirq na bccbeghavgl sbe
fvtarq vagrtre biresybj.
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/30/2004 1:41:10 AM
|
|
In article <bvburb$t1v$1@hercules.btinternet.com>,
dontmail@address.co.uk.invalid says...
> Willem wrote:
>
> > Richard wrote:
> > ) Er, you're right, darn you. Hang on...
> > )
> > ) Okay, here we go:
> > )
> > ) void f(char*s,char
> > c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}} )
> > ) NOW spot the bug! :-)
> >
> > [...] Can't say that I see any bugs there, to be honest.
> > Maye you forgot to forget something ?
>
> The bug is there, believe me.
Gur frzvpbyba nsgre gur sbe ohg orsber gur gur oenprf ybbxf
fhfcvpvbhf. Vf gung jung lbh ner ersreevat gb?
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/30/2004 3:36:26 AM
|
|
In article <bvc6ug$ibe$1@sparta.btinternet.com>, dontmail@address.co.uk.invalid
says...
> > NOTE: These posts are an attempt to accumulate data for questionable
> > (at best) purposes, not a serious attempt at a real discussion. A
> > certain individual who we all are aware of and generally do not agree
> > with on most topics is planning to write a longwinded book or article
> > about how people are mean to him on Usenet. Ahh, let's be specific --
> > Mr. Nilges is doing this. I'm not making this up or guessing, he has
> > told me this privately in very specific terms.
>
> If this is true (and I have far less reason to doubt you than I do Mr
> Nilges), it is rather ironic that the very person to accuse others
> (wrongly) of using the newsgroup for commercial reasons should himself end
> up doing precisely that.
Exactly right.
> If he does end up writing such a book, he'd have to find a very unprincipled
> publisher (or a vanity publisher) if he wants to see it in print. No
> reputable publishing house would touch it after doing even a minimal amount
> of research into the real facts.
Based upon books that have been published recently and/or those that are
reportedly in the process of being written right now, I am convinced that
book publishers do next to zero research before publishing such works.
> Solution: don't get angry. He's not worth it.
I'm not angry, I am simply bringing to everyone's attention something that
Mr. Nilges pointed out to me privately. That way, nobody will be
surprised if/when such a thing comes to pass, and I won't feel bad that
I knew about it and didn't tell. Personally, I couldn't care less what
Mr. Nilges does, although I'd prefer he did it somewhere else.
> He sent me an email entitled "Cease and desist". I didn't treat it
> seriously. I suggest you don't, either.
Yes, I got something very similar. I sent you an email on a related
topic myself, but somehow your filtering procedure ignored mine, and
paid attention to his. *boggle*
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/30/2004 3:50:52 AM
|
|
Richard Heathfield wrote:
> Willem wrote:
>
>
>>Richard wrote:
>>) Er, you're right, darn you. Hang on...
>>)
>>) Okay, here we go:
>>)
>>) void f(char*s,char
>>c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}} )
>>) NOW spot the bug! :-)
>>
>>[...] Can't say that I see any bugs there, to be honest.
>>Maye you forgot to forget something ?
>
>
> The bug is there, believe me.
>
Actually, from what I can tell, it works. But this is because you can
actually do a lot of stuff in that last part of a for loop.
How about a slight change:
void f(char*s,char c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++){*t='\0';}}
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/30/2004 3:58:24 AM
|
|
In article <bvc6hj$fe1$1@titan.btinternet.com>, dontmail@address.co.uk.invalid
says...
> Vs lbh guvax gur pbqr qbrfa'g qb nalguvat, lbh unir zvfhaqrefgbbq vg. Gung
> vf uneqyl fhecevfvat, orpnhfr vg'f fb grefr. Guvf vf, bs pbhefr, zl cbvag
> va cbfgvat vg. Vg'f npghnyyl n engure fvzcyr shapgvba, juvpu qbrf n engure
> fvzcyr gnfx, naq lrg vg vf eraqrerq bofpher ol vgf irel grefrarff. V qba'g
> guvax Avytrf vf pncnoyr bs fcbggvat gur oht, qb lbh?
Jvgubhg gur frzvpbyba va zl cerivbhf cbfg, f cbvagf gb gur grezvangvat avy
hcba pbzcyrgvba. Jvgu gur frzvpbyba gung ybbxrq fhfcrpg bevtvanyyl, vg
qbrf abg qb gung, yrnivat gur bevtvany va gnpg vs p vf abg va f. Fb zhpu
sbe svefg vzcerffvbaf.
Vs p VF va f, hcba pbzcyrgvba, f vf gur bevtvany fgevat jvgu gur punenpgre p
erzbirq. Vs p nccrnef zhygvcyr gvzrf, nyy bppheraprf bs vg ner erzbirq.
V gevrq erzbivat punenpgref gung bpphe 0, 1 naq zhygvcyr gvzrf, nf jryy nf
punenpgref gung bayl nccrne ng gur ortvaavat naq raq bs gur fgevat. V nyfb
gevrq na rzcgl fgevat naq n avy p. Nyy bs gubfr pnfrf nccrne gb jbex.
Fb V thrff V unir gb nqzvg gb orvat fghzcrq, be vf guvf vf bar bs gubfr
"bayl jbexf ba NFPVV flfgrzf vafgrnq bs ROPQVP" glcr bs guvatf?
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/30/2004 4:30:23 AM
|
|
In article <MPG.1a838d31c9d2c461989c04@news.megapathdsl.net>,
randy.howard@FOOmegapathdslBAR.net says...
> In article <bvburb$t1v$1@hercules.btinternet.com>,
> dontmail@address.co.uk.invalid says...
> > Willem wrote:
> >
> > > Richard wrote:
> > > ) Er, you're right, darn you. Hang on...
> > > )
> > > ) Okay, here we go:
> > > )
> > > ) void f(char*s,char
> > > c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}} )
> > > ) NOW spot the bug! :-)
> > >
> > > [...] Can't say that I see any bugs there, to be honest.
> > > Maye you forgot to forget something ?
> >
> > The bug is there, believe me.
>
> Gur frzvpbyba nsgre gur sbe ohg orsber gur gur oenprf ybbxf
> fhfcvpvbhf. Vf gung jung lbh ner ersreevat gb?
Nevermind.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/30/2004 4:31:37 AM
|
|
Arthur J. O'Dwyer wrote:
>
> On Thu, 29 Jan 2004, Richard Heathfield wrote:
>>
>> Arthur J. O'Dwyer wrote:
>> > On Thu, 29 Jan 2004, Richard Heathfield wrote:
>> >>
>> >> void f(char*s,char
>> >> c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}}
>> >>
>> >> NOW spot the bug! :-)
>> >
>> > Give us a hint: does removing the gratuitous cuteness fix the
>> > bug you're thinking of? :)
>>
>> Gur nccneragyl rkgenarbhf frzvpbyba vf abg rkgenarbhf vs gung vf jung lbh
>> jrer guvaxvat.
>
> Lbh fubhyq xabj zl yriry jryy rabhtu ol abj gb xabj gung V xabj jung
> gung frzvpbyba vf qbvat gurer. Ab, V zrnag gur hfr bs gur fhogenpgvba
> bcrengbe jurer n abg-rdhnyf bcrengbe jbhyq unir orra pyrnere. Naq va
> gur cebprff bs pynevslvat, jbhyq unir erzbirq na bccbeghavgl sbe
> fvtarq vagrtre biresybj.
Zl ncbybtvrf sbe qbhogvat lbh! Lrf, lbh'er dhvgr evtug; gung vf vaqrrq gur
oht.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 7:39:39 AM
|
|
Noah Roberts wrote:
> Richard Heathfield wrote:
>> Willem wrote:
>>
>>
>>>Richard wrote:
>>>) Er, you're right, darn you. Hang on...
>>>)
>>>) Okay, here we go:
>>>)
>>>) void f(char*s,char
>>>c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}} )
>>>) NOW spot the bug! :-)
>>>
>>>[...] Can't say that I see any bugs there, to be honest.
>>>Maye you forgot to forget something ?
>>
>>
>> The bug is there, believe me.
>>
>
> Actually, from what I can tell, it works.
Yes, it does. There's still a bug, though.
> But this is because you can
> actually do a lot of stuff in that last part of a for loop.
>
> How about a slight change:
>
> void f(char*s,char c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++){*t='\0';}}
That's rather an interesting modification. Did you test it? :-)
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 7:42:46 AM
|
|
Randy Howard wrote:
> I sent you an email on a related
> topic myself, but somehow your filtering procedure ignored mine, and
> paid attention to his. *boggle*
Well, EGN's email was sent over a year ago IIRC, which easily pre-dates my
recent spam storm. Your email is almost certainly sitting in my ISP's
maildrop, waiting for me to finish writing my server-side-spam-filtering
email client. I'll get to it eventually, I promise!
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 7:46:00 AM
|
|
Randy Howard wrote:
> In article <bvc6hj$fe1$1@titan.btinternet.com>,
> dontmail@address.co.uk.invalid says...
>> Vs lbh guvax gur pbqr qbrfa'g qb nalguvat, lbh unir zvfhaqrefgbbq vg.
>> Gung vf uneqyl fhecevfvat, orpnhfr vg'f fb grefr. Guvf vf, bs pbhefr, zl
>> cbvag va cbfgvat vg. Vg'f npghnyyl n engure fvzcyr shapgvba, juvpu qbrf n
>> engure fvzcyr gnfx, naq lrg vg vf eraqrerq bofpher ol vgf irel grefrarff.
>> V qba'g guvax Avytrf vf pncnoyr bs fcbggvat gur oht, qb lbh?
>
> Jvgubhg gur frzvpbyba va zl cerivbhf cbfg, f cbvagf gb gur grezvangvat avy
> hcba pbzcyrgvba. Jvgu gur frzvpbyba gung ybbxrq fhfcrpg bevtvanyyl, vg
> qbrf abg qb gung, yrnivat gur bevtvany va gnpg vs p vf abg va f. Fb zhpu
> sbe svefg vzcerffvbaf.
>
> Vs p VF va f, hcba pbzcyrgvba, f vf gur bevtvany fgevat jvgu gur punenpgre
> p erzbirq. Vs p nccrnef zhygvcyr gvzrf, nyy bppheraprf bs vg ner erzbirq.
>
> V gevrq erzbivat punenpgref gung bpphe 0, 1 naq zhygvcyr gvzrf, nf jryy nf
> punenpgref gung bayl nccrne ng gur ortvaavat naq raq bs gur fgevat. V
> nyfb
> gevrq na rzcgl fgevat naq n avy p. Nyy bs gubfr pnfrf nccrne gb jbex.
>
> Fb V thrff V unir gb nqzvg gb orvat fghzcrq, be vf guvf vf bar bs gubfr
> "bayl jbexf ba NFPVV flfgrzf vafgrnq bs ROPQVP" glcr bs guvatf?
>
Nf Neguhe unf nyernql abgrq, gurer vf n cbgragvny biresybj vffhr va gur
fhogenpgvba. Ercynpvat jvgu n abg-rdhnyf pbzcnevfba svkrf gur oht.
V pna'g oryvrir Avytrf fgvyy unfa'g "penpxrq" guvf nznmvatyl fbcuvfgvpngrq
:-) nytbevguz. Fheryl ur pna'g or gung fghcvq, pna ur?
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 7:49:38 AM
|
|
Richard Heathfield wrote:
> Noah Roberts wrote:
>>void f(char*s,char c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++){*t='\0';}}
>
>
> That's rather an interesting modification. Did you test it? :-)
>
Yes. It is most certainly broken :P
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/30/2004 7:56:33 AM
|
|
Richard Heathfield wrote:
> Nf Neguhe unf nyernql abgrq, gurer vf n cbgragvny biresybj vffhr va gur
> fhogenpgvba. Ercynpvat jvgu n abg-rdhnyf pbzcnevfba svkrf gur oht.
>
> V pna'g oryvrir Avytrf fgvyy unfa'g "penpxrq" guvf nznmvatyl fbcuvfgvpngrq
> :-) nytbevguz. Fheryl ur pna'g or gung fghcvq, pna ur?
>
V zhfg nqzvg gung vg gbbx zr n juvyr. V rira pbafvqrerq gung fbzrguvat
ernyyl jvreq jnf tbvat ba va gur pbqr V whfg jnfa'g trggvat. V srry
cerggl fvyyl abj gung V unir svtherq bhg jung lbh thlf jurer qbvat :C
V npghnyyl oehgr sbeprq lbhe yvggyr "nytbelguz" ;)
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/30/2004 8:48:12 AM
|
|
spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401290726.70c3c1b3@posting.google.com>...
> gswork@mailcity.com (gswork) wrote in message news:<81f33a98.0401290036.41a81106@posting.google.com>...
> > spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401281831.dade6d9@posting.google.com>...
> > > Let me re-emphasize that since people pay me for writing, I have
> > > decided that these newsgroups are, in Shakespeare's words, "an expense
> > > of spirit in a waste of shame", since they have become dominated by
> > > trolls who waste my time.
> > >
> > > An exceptionally disheartening post was Willem's in which he quoted
> > > obviously literary passages from the Koran in order to "prove", in a
> > > genuinely off-topic way and in genuine violation of the newsgroup
> > > charter, that Arabs are killers: in response to my on-topic connection
> > > of the technical issues of this newsgroup with social isolation, which
> > > relates directly to lack of programming productivity and error rates.
> >
> > It sounded unlike what i'd read of Willem so i checked. It was Randy
> > Howard
> >
> > http://groups.google.com/groups?q=g:thl2515987928d&dq=&hl=en&lr=&ie=UTF-8&selm=MPG.1a7bb6e3577c4548989bad%40news.megapathdsl.net
>
> Thanks for the correction, Mr. GsWork. Since I do not wish to waste
> much time here I failed to do due diligence on the source. Of course,
> the post remains, independent of the author, a blood libel.
And i've noted that you've addressed it at source.
It was partly *because* Willem is Dutch that i doubted he would pick
over the Koran, or any religious text, as well as the general
'impression' i'd had of his posts.
> Note that when we make a mistake and admit we're wrong, we learn. I
> learned alot from reading Willem's proof after admitting I was wrong
> about recursion being as necessary as I thought.
This is good, if we learned nothing from being in this little virtual
community then it would indeed be wasteful.
> Which is yet another for the 80% failure rate, for it's clear from
> this ng that people are terrified of others who jump on folks for
> fantasized errors.
There is, on occasion, a seeming glee in the spotting of error. I
wonder if this does put people off posting for fear of made to look
silly. I do think a somewhat gaurded 'think before one posts'
culture is useful, but not when that becomes a point-scoring culture.
I dont think this group has the latter culture.
One should freely post errors, but not recklessly - however the
difference is qualitative and contextual - so it would be hard to
create any rules for it. that's why some groups refer to FAQs in
order to present a 'norm' for posting.
> I learned nothing from my "error" in the use of strlen for the very
> good reason that it wasn't a bloody error.
I agree, not an error - for it would produce the correct and intended
result. The discussion that followed was centered largely on
efficiency, and given the language it was not as efficient as the
alternative laid out. I'd tend to follow the efficiency advice, but
noted the small advantage of c++ in being able to declare the variable
used to store strlen's result right there and then.
|
|
0
|
|
|
|
Reply
|
gswork (648)
|
1/30/2004 8:54:11 AM
|
|
Richard Heathfield wrote:
> Noah Roberts wrote:
>
>
>>Richard Heathfield wrote:
>>
>>>Willem wrote:
>>>
>>>
>>>
>>>>Richard wrote:
>>>>) Er, you're right, darn you. Hang on...
>>>>)
>>>>) Okay, here we go:
>>>>)
>>>>) void f(char*s,char
>>>>c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}} )
V zhfg or zvffvat fbzr xabjyrqtr ba ubj gur gregvnel bcrengbe jbexf
orpnhfr V qba'g trg jul vg vf arpvffnel gb qrerssrerapr f ba gur snvy
fvqr. Gur pbzcvyre pregnvayl qbrf abg yvxr vg jura lbh qba'g naq fnlf
fbzrguvat nobhg glcr pbasyvpg va n pbaqvgvbany rkcerffvba. Jung ehyr
pnhfrf guvf? V qvqa'g ernyvmr gung nalguvat jnf 'erdhverq' bs rvgure
pnfr rkcerffvba.
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/30/2004 9:05:55 AM
|
|
Randy Howard <randy.howard@FOOmegapathdslBAR.net> wrote in message news:<MPG.1a834c567040555d989bfe@news.megapathdsl.net>...
> NOTE: These posts are an attempt to accumulate data for questionable
> (at best) purposes, not a serious attempt at a real discussion. A
> certain individual who we all are aware of and generally do not agree
> with on most topics is planning to write a longwinded book or article
> about how people are mean to him on Usenet. Ahh, let's be specific --
> Mr. Nilges is doing this. I'm not making this up or guessing, he has
> told me this privately in very specific terms.
The general practice is to keep to the channel where the conversation
started. If it's private then keep it private. I suppose this seems
a bit of both, so....
> This is just another in a long sequence of attempts to gather such
> information by intentionally trolling with the intent to anger people
> into saying things which can then be used out of context as the basis
> for such a propaganda piece. I doubt he planned this two years in
> advance, but he certainly seems to have accelerated his fishing
> expeditions in this area in recent months, presumably as the idea
> formed to make a financial gain as a result of writing about the
> adverse effects of his presence here.
A lot of people write books about their experiences and they write
them in a subjective manner. Even books intended to be about an
objective matter or analysis thereof are almost always subjective
(they're bound to be, given the author is always a subject!)
> I was sent a series of emails threatening me in various ways,
> most humorous of which was a demand that I post an "apology"
> for being pointed about my comments in relation to his source
> code, topicality of posts, demonstrated lack of knowledge of
> various computing topics, etc. by this troll. The consequences
> for not posting this apology?
>
> <sarcasm on>
> I will be named specifically in this soon to be world famous book.
> Oh no, how scary.
> </sarcasm off>.
If you wish to remain unnamed then request it formally. I'd imagine
it would be best for Edward to leave the names out anyway, the legal
thin ice of perception of defamation and so forth is not worth it.
Although i believe Edward himself stated that usenet is not considered
worthy evidence in court as it lacks credibility, it seems a little
odd to write a book about it.
I wonder if there are any other books specifically about usenet
discussions
|
|
0
|
|
|
|
Reply
|
gswork (648)
|
1/30/2004 9:07:01 AM
|
|
Richard wrote:
) Zl ncbybtvrf sbe qbhogvat lbh! Lrf, lbh'er dhvgr evtug; gung vf vaqrrq gur
) oht.
I must have a really odd compiler then, because that bug doesn't seem to
apply. Undefined behaviour that happens to be implemented in a
non-bug-invoking way ?
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
1/30/2004 9:15:09 AM
|
|
In article <J4SdnelsdY6nh4fdRVn-jQ@scnresearch.com>, nroberts@dontemailme.com
says...
> Richard Heathfield wrote:
>
> > Nf Neguhe unf nyernql abgrq, gurer vf n cbgragvny biresybj vffhr va gur
> > fhogenpgvba. Ercynpvat jvgu n abg-rdhnyf pbzcnevfba svkrf gur oht.
> >
> > V pna'g oryvrir Avytrf fgvyy unfa'g "penpxrq" guvf nznmvatyl fbcuvfgvpngrq
> > :-) nytbevguz. Fheryl ur pna'g or gung fghcvq, pna ur?
> >
> V zhfg nqzvg gung vg gbbx zr n juvyr. V rira pbafvqrerq gung fbzrguvat
> ernyyl jvreq jnf tbvat ba va gur pbqr V whfg jnfa'g trggvat. V srry
> cerggl fvyyl abj gung V unir svtherq bhg jung lbh thlf jurer qbvat :C
>
> V npghnyyl oehgr sbeprq lbhe yvggyr "nytbelguz" ;)
Zl arjfernqre fvzcyl nyybjf lbh gb evtug pyvpx ba gur grkg naq qrpbqr vg ng
jvyy. NSNVX, zbfg tbbq arjfernqref unir n fvzvyne shapgvba. Gur svefg
bar V hfrq gung unq vg ohvyg va jnf cebonoyl 10 lrnef ntb (kea).
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/30/2004 9:22:38 AM
|
|
In article <bvd2ah$33i$7@titan.btinternet.com>, dontmail@address.co.uk.invalid
says...
> Nf Neguhe unf nyernql abgrq, gurer vf n cbgragvny biresybj vffhr va gur
> fhogenpgvba. Ercynpvat jvgu n abg-rdhnyf pbzcnevfba svkrf gur oht.
Lrf, V svtherq vg jnf fbzrguvat nybat gubfr yvarf, ohg V whfg qvqa'g
guvax vg guebhtu sne rabhtu. Nsgre ernqvat uvf ernpgvba, V jvfurq gung
V unq jnvgrq n ovg gb cbfg. uru.
> V pna'g oryvrir Avytrf fgvyy unfa'g "penpxrq" guvf nznmvatyl fbcuvfgvpngrq
> :-) nytbevguz. Fheryl ur pna'g or gung fghcvq, pna ur?
Creuncf ur unf, ohg vf whfg hfvat vg nf shegure rivqrapr gung jr ner
zrna gb uvz urer, hfvat n fgnaqneq Hfrarg pbairagvba sebz gur qnex
ntrf. SLV, guvf pbqr jnf bapr hfrq gb boshfpngr grkg gung zvtug or
bssrafvir fb gung crbcyr gung qvqa'g jnag gb frr fhpu jbhyqa'g unir
gb ernq vg. Fvapr gur NBY pebjq fubjrq hc, gung pbairagvba unf
inavfurq, crbcyr whfg cbfg gur zbfg bssrafvir, qvfthfgvat cbffvoyr
guvatf va gur pyrne. Gur ZGI pebjq unf ehvarq fbpvny qvfpbhefr sbe
gur ragver jbeyq. LZZI.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/30/2004 9:27:21 AM
|
|
In article <bvd23n$33i$6@titan.btinternet.com>, dontmail@address.co.uk.invalid
says...
> Well, EGN's email was sent over a year ago IIRC, which easily pre-dates my
> recent spam storm.
Well, it's interesting that he used the exact same subject line. Maybe he
just resent me the same one he sent to you.
> Your email is almost certainly sitting in my ISP's
> maildrop, waiting for me to finish writing my server-side-spam-filtering
> email client. I'll get to it eventually, I promise!
I'll hold my breath. ROFL.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/30/2004 9:28:42 AM
|
|
In article <81f33a98.0401300107.26e3aadf@posting.google.com>,
gswork@mailcity.com says...
> The general practice is to keep to the channel where the conversation
> started. If it's private then keep it private. I suppose this seems
> a bit of both, so....
Yes, and I did not quote any of his email, just as he made reference
(somewhat incorrectly) about my email response to him elsewhere
recently. I did offer to make them public, if he so desires so
there is no confusion, or he can just keep them private. The
reason I posted this message should be self-evident.
> > This is just another in a long sequence of attempts to gather such
> > information by intentionally trolling with the intent to anger people
> > into saying things which can then be used out of context as the basis
> > for such a propaganda piece. I doubt he planned this two years in
> > advance, but he certainly seems to have accelerated his fishing
> > expeditions in this area in recent months, presumably as the idea
> > formed to make a financial gain as a result of writing about the
> > adverse effects of his presence here.
>
> A lot of people write books about their experiences and they write
> them in a subjective manner.
I don't disagree.
> Even books intended to be about an
> objective matter or analysis thereof are almost always subjective
> (they're bound to be, given the author is always a subject!)
That doesn't change what I said above. I believe he may be
manipulating events here solely to generate something to write
about. "Instigator" is probably the correct word.
> > <sarcasm on>
> > I will be named specifically in this soon to be world famous book.
> > Oh no, how scary.
> > </sarcasm off>.
>
> If you wish to remain unnamed then request it formally.
I don't care if he does or not. The point is, he attempted to
blackmail me into posting an apology for something I am not sorry
for in order to prevent it from happening. It didn't work.
> I'd imagine
> it would be best for Edward to leave the names out anyway, the legal
> thin ice of perception of defamation and so forth is not worth it.
Usenet forums are public, anyone entering into them places themselves
into the public debate. I recommend that anyone interested in this
particular topic research the court cases New York Times Co. v.
Sullivan, and Gertz v. Robert Welch, Inc.
The key point is that newsgroup participants all have equal right to
self-defense, so they have no libel claims, whether or not they
are successful at proving their side of the argument, they are
given every opportunity to attempt a rebuttal.
> Although i believe Edward himself stated that usenet is not considered
> worthy evidence in court as it lacks credibility, it seems a little
> odd to write a book about it.
You don't say.
> I wonder if there are any other books specifically about usenet
> discussions
I'm sure they are not to be found on the best seller list.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/30/2004 9:40:33 AM
|
|
In article <Pine.LNX.4.58-035.0401271710060.15440@unix48.andrew.cmu.edu>,
Arthur J. O'Dwyer <ajo@nospam.andrew.cmu.edu> wrote:
>
>On Tue, 27 Jan 2004 blmblm@myrealbox.com wrote:
>>
[ snip ]
>> I *like* the idea of formally proving that
>> an algorithm is correct, and I can get evangelistic about the notion
>> that some of the underlying ideas of formal methods (loop invariants
>> and assertions, e.g.) can be applied informally to good effect.
>
> Yes, formal proofs of real code certainly are seductive. My personal
>opinion on the matter is that they're rarely useful, partly because
>the average "proof" doesn't model the program accurately (e.g., assuming
>infinite memory or mathematical integers or reals). But also, it's
>very rare that I'll look at a proof and think, "Ah, yes, this proof
>is correct," when it wouldn't have been much faster to simply look at
>the corresponding source code and see, "Ah, yes, this code is correct."
This works well for some kinds of code, but (IMO) less well for others.
In another branch of this thread Willem comments on proving the
correctness of algorithms such as quicksort. I think formalism --
or the ideas behind the formalism, informally applied -- can help
in such contexts, i.e., when the underlying algorithm is less than
crystal-clear obvious (as is, I claim, the case with the partitioning
function in quicksort).
I think it is also of enormous benefit in thinking about concurrent
algorithms, where (again IMO) other ways of convincing oneself that
the code is right do not work so well. I had a very convincing (to
me) demonstration of this in a course I took in graduate school: We
had been asked to develop/extend a particular concurrent algorithm
and (1) prove our algorithm and (2) implement it. I just couldn't
get the proof to work, but I was sure my algorithm was correct,
so I went ahead and wrote code. Guess what. I don't remember
exactly what was wrong, but the program conspicuously didn't work.
[ snip ]
>> But it is a little disturbing to consider the implications of the fact
>> that the proofs take place in a universe with integers and real numbers,
>> while the programs run in a universe with ints and doubles/floats, which
>> don't quite have the same properties.
>
>s/the proofs/some invalid proofs/
I shouldn't claim to be an expert, but I have seen a fair number of
proofs of -- well, perhaps more of algorithms than of programs --
and I don't remember seeing any that took into account that ints are
not integers and floats are not real numbers. So I question your
substitution here. (Politely, in case that's not clear.)
[ snip ]
--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.
--
-- blm
|
|
0
|
|
|
|
Reply
|
blmblm (1187)
|
1/30/2004 11:28:27 AM
|
|
In article <f5dda427.0401281831.dade6d9@posting.google.com>,
Edward G. Nilges <spinoza1111@yahoo.com> wrote:
[ big big snip ]
[ this was me in an earlier post ]
>> > But it is a little disturbing to consider the implications of the fact
>> > that the proofs take place in a universe with integers and real numbers,
>> > while the programs run in a universe with ints and doubles/floats, which
>> > don't quite have the same properties.
>>
>> s/the proofs/some invalid proofs/
>
>No, the guy's point is well taken. You cannot deductively "prove" that
>some clown won't misuse your code.
If I am the "guy" to whom you refer (where I assume you mean "guy"
as a gender-neutral term), I'm not sure how your comment relates to
what I said. Even if your factorial function came with a disclaimer
that it would only work for inputs N such that N! can be represented
as an int, the proof doesn't look at that aspect, does it? Such proofs
usually don't. That was my point.
[ big big snip ]
--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.
--
-- blm
|
|
0
|
|
|
|
Reply
|
blmblm (1187)
|
1/30/2004 11:40:06 AM
|
|
Richard Heathfield wrote:
>> V abgvpr lbhe gregvnel vf xvaq bs n ab-bc. Qbrf gur oht unir gb
>> qb jvgu gur ynpx bs juvgrfcnpr orgjrra gur rdhnyf naq cyhfrf?
>
> Ab, gur gregvnel vf abg n ab-bc, naq ab, gur oht unf abguvat gb
> qb jvgu juvgrfcnpr.
Qbu! Lbh'er evtug, bs pbhefr (nobhg gur gregvnel). Abg gur JF...
Jryy, vg frrzf gb pbzcvyr jvgu be jvgubhg gur JF, naq...
>> Be vf vg eryngrq gb gur nccnerag ab-bc-arff bs gur jubyr guvat?
>> NSNVPG, vg qbrfa'g npghnyyl QB nalguvat...
>
> Vs lbh guvax gur pbqr qbrfa'g qb nalguvat, lbh unir zvfhaqrefgbbq
> vg.
(Fb V unir!) ...naq vg frrzf gb jbex svar. (Punenpgre erzbire,
lrf?)
> Vg'f npghnyyl n engure fvzcyr shapgvba, juvpu qbrf n engure
> fvzcyr gnfx, naq lrg vg vf eraqrerq bofpher ol vgf irel
> grefrarff. V qba'g guvax Avytrf vf pncnoyr bs fcbggvat gur
> oht, qb lbh?
*V* fgvyy unira'g fcbggrq vg, lrg.... ;-\
V'z gbea orgjrra ernqvat gur erfg bs gur erfcbafrf bs purjvat ba guvf
fbzr zber.....
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/30/2004 3:58:29 PM
|
|
gswork wrote:
> I wonder if there are any other books specifically about usenet
> discussions
Who would actually buy one?
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/30/2004 4:01:49 PM
|
|
I wrote:
> V'z gbea orgjrra ernqvat gur erfg bs gur erfcbafrf bs purjvat ba
> guvf fbzr zber.....
Bxnl, vf vg gung 'g' vfa'g vavgvnyvmrq vs s() erprvirf na rzcgl
fgevat, naq gurersber jvyy fgvpx n '\0' va TXJ?
Gung'f zl svany nafjre....
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/30/2004 6:05:14 PM
|
|
I wrote:
> Bxnl, vf vg gung 'g' vfa'g vavgvnyvmrq vs s() erprvirf na rzcgl
> fgevat, naq gurersber jvyy fgvpx n '\0' va TXJ?
>
> Gung'f zl svany nafjre....
No, wait, what'm I thinking.... back to the drawing board.....
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/30/2004 6:09:29 PM
|
|
I wrote:
> .... back to the drawing board.....
Okay, I'm licked and I'm running out of time to read the other
messages, so.... I surrender. What's the answer?
[...reading...]
Jbj, bxnl, V fher qvqa'g pngpu *gung*!
Ohg... jul vf gung n oht? Vs *f naq p qba'g zngpu, lbh trg n aba-mreb
nafjre rira jvgu biresybj (qba'g lbh?). Qbrfa'g gung znxr gur pbqr
jbex nf rkcrpgrq? Vs *f naq p ner gur fnzr, lbh trg mreb....
Pbybe zr pbashfrq.
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/30/2004 6:20:48 PM
|
|
Noah Roberts wrote:
> Richard Heathfield wrote:
>> Noah Roberts wrote:
>>
>>
>>>Richard Heathfield wrote:
>>>
>>>>Willem wrote:
>>>>
>>>>
>>>>
>>>>>Richard wrote:
>>>>>) Er, you're right, darn you. Hang on...
>>>>>)
>>>>>) Okay, here we go:
>>>>>)
>>>>>) void f(char*s,char
>>>>>c){char*t;for(t=s;*s;(*s-c)?*t++=*s++:*s++);{*t='\0';}} )
>
> V zhfg or zvffvat fbzr xabjyrqtr ba ubj gur gregvnel bcrengbe jbexf
> orpnhfr V qba'g trg jul vg vf arpvffnel gb qrerssrerapr f ba gur snvy
> fvqr. Gur pbzcvyre pregnvayl qbrf abg yvxr vg jura lbh qba'g naq fnlf
> fbzrguvat nobhg glcr pbasyvpg va n pbaqvgvbany rkcerffvba. Jung ehyr
> pnhfrf guvf? V qvqa'g ernyvmr gung nalguvat jnf 'erdhverq' bs rvgure
> pnfr rkcerffvba.
3.3.15 Conditional operator
Syntax
conditional-expression:
logical-OR-expression
logical-OR-expression ? expression :
conditional-expression
Constraints
The first operand shall have scalar type.
One of the following shall hold for the second and third operands:
* both operands have arithmetic type;
* both operands have compatible structure or union types;
* both operands have void type;
* both operands are pointers to qualified or unqualified versions of
compatible types;
* one operand is a pointer and the other is a null pointer constant; or
* one operand is a pointer to an object or incomplete type and the
other is a pointer to a qualified or unqualified version of void .
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 7:53:09 PM
|
|
Willem wrote:
> Richard wrote:
> ) Zl ncbybtvrf sbe qbhogvat lbh! Lrf, lbh'er dhvgr evtug; gung vf vaqrrq
> gur ) oht.
>
> I must have a really odd compiler then, because that bug doesn't seem to
> apply. Undefined behaviour that happens to be implemented in a
> non-bug-invoking way ?
Undefined behaviour can do really surprising things, such as "exactly what
the unwitting programmer wanted to happen". That is what's happened here.
Basically, it's very unlikely to fail on a typical desktop box (in fact,
I'd be astounded if it did!) - but it's still theoretically wrong, and
could theoretically do bizarre stuff, given the right hardware. :-)
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 8:05:23 PM
|
|
Randy Howard wrote:
> Well, it's interesting that he used the exact same subject line. Maybe he
> just resent me the same one he sent to you.
Mail re-use. Cool.
>
>> Your email is almost certainly sitting in my ISP's
>> maildrop, waiting for me to finish writing my server-side-spam-filtering
>> email client. I'll get to it eventually, I promise!
>
> I'll hold my breath. ROFL.
NO, Randy! DON'T... oh.
It was nice knowing you, pal. Where do we send the flowers?
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 8:08:11 PM
|
|
Richard Heathfield wrote:
> Basically, it's very unlikely to fail on a typical desktop box (in
> fact, I'd be astounded if it did!) - but it's still theoretically
> wrong, and could theoretically do bizarre stuff, given the right
> hardware. :-)
Okay, I think I understand now. If *s were pointing to a char that
was a "negative" value, and if c were also a "negative" value, the
result could--in theory--be a trap value?
It's one of those, if you want *truly* portable code, Don't Do This
things?
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/30/2004 8:14:30 PM
|
|
Programmer Dude wrote:
> (Punenpgre erzbire, lrf?)
Lrf!
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 8:22:20 PM
|
|
Programmer Dude wrote:
> I wrote:
>
>> .... back to the drawing board.....
>
> Okay, I'm licked and I'm running out of time to read the other
> messages, so.... I surrender. What's the answer?
>
> [...reading...]
>
> Jbj, bxnl, V fher qvqa'g pngpu *gung*!
>
> Ohg... jul vf gung n oht? Vs *f naq p qba'g zngpu, lbh trg n aba-mreb
> nafjre rira jvgu biresybj (qba'g lbh?).
Haqrsvarq orunivbhe. Naq lbh xabj jung gung zrnaf...
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 8:35:28 PM
|
|
Programmer Dude wrote:
> It's one of those, if you want *truly* portable code, Don't Do This
> things?
Precisely.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 8:37:10 PM
|
|
Randy Howard wrote:
> In article <J4SdnelsdY6nh4fdRVn-jQ@scnresearch.com>, nroberts@dontemailme.com
> says...
>
>>Richard Heathfield wrote:
>>
>>
>>>Nf Neguhe unf nyernql abgrq, gurer vf n cbgragvny biresybj vffhr va gur
>>>fhogenpgvba. Ercynpvat jvgu n abg-rdhnyf pbzcnevfba svkrf gur oht.
>>>
>>>V pna'g oryvrir Avytrf fgvyy unfa'g "penpxrq" guvf nznmvatyl fbcuvfgvpngrq
>>>:-) nytbevguz. Fheryl ur pna'g or gung fghcvq, pna ur?
>>>
>>
>>V zhfg nqzvg gung vg gbbx zr n juvyr. V rira pbafvqrerq gung fbzrguvat
>>ernyyl jvreq jnf tbvat ba va gur pbqr V whfg jnfa'g trggvat. V srry
>>cerggl fvyyl abj gung V unir svtherq bhg jung lbh thlf jurer qbvat :C
>>
>>V npghnyyl oehgr sbeprq lbhe yvggyr "nytbelguz" ;)
>
>
> Zl arjfernqre fvzcyl nyybjf lbh gb evtug pyvpx ba gur grkg naq qrpbqr vg ng
> jvyy. NSNVX, zbfg tbbq arjfernqref unir n fvzvyne shapgvba. Gur svefg
> bar V hfrq gung unq vg ohvyg va jnf cebonoyl 10 lrnef ntb (kea).
>
Zvar qbrfa'g :( V whfg unir gb phg naq cnfgr vagb ge.
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/30/2004 8:46:14 PM
|
|
Noah Roberts wrote:
> Zvar qbrfa'g :( V whfg unir gb phg naq cnfgr vagb ge.
Arvgure qbrf Argfpncr, NSNVPG (juvpu fhecevfrf zr).
V pbcl naq cnfgr vagb zl bja Abgrcnq-nyvxr ncc.
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/30/2004 8:48:53 PM
|
|
Programmer Dude wrote:
> Noah Roberts wrote:
>
>> Zvar qbrfa'g :( V whfg unir gb phg naq cnfgr vagb ge.
>
> Arvgure qbrf Argfpncr, NSNVPG (juvpu fhecevfrf zr).
> V pbcl naq cnfgr vagb zl bja Abgrcnq-nyvxr ncc.
V hfrq gb hfr Argfpncr sbe ernqvat arjf, naq V nz cerggl fher gung
hafpenzoyvat ebg-guvegrra jnf ba gur pbagrkg zrah. Zvaq lbh, gung jnf na
rneyl irefvba.
Argfpncr frrzf gb unir tbar qbjauvyy va erprag lrnef.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/30/2004 10:22:33 PM
|
|
Richard Heathfield wrote:
>> Arvgure qbrf Argfpncr, NSNVPG (juvpu fhecevfrf zr).
>> V pbcl naq cnfgr vagb zl bja Abgrcnq-nyvxr ncc.
>
> V hfrq gb hfr Argfpncr sbe ernqvat arjf, naq V nz cerggl fher gung
> hafpenzoyvat ebg-guvegrra jnf ba gur pbagrkg zrah. Zvaq lbh, gung
> jnf na rneyl irefvba.
Jul, fb vg qbrf (irel obggbz)! V arire abgvprq. Jryy gung znxrf
ernqvat gur zrffntrf n srj zbhfrpyvpxf rnfvre!! Pbby. Gunaxf!!
Fnqyl, vg frrzf gb unir ab jnl gb qb vg va gur zrffntr rqvgbe, fb
V fgvyy unq gb hfr zl CreyCnq ncc gb jevgr guvf ercyl.
> Argfpncr frrzf gb unir tbar qbjauvyy va erprag lrnef.
Fgnegvat nebhaq irefvba 4, nf V erpnyy. Cvgl.
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
1/30/2004 10:28:33 PM
|
|
On Fri, 30 Jan 2004 blmblm@myrealbox.com wrote:
>
> Arthur J. O'Dwyer <ajo@nospam.andrew.cmu.edu> wrote:
> >On Tue, 27 Jan 2004 blmblm@myrealbox.com wrote:
> >>
> [ snip ]
> >> I *like* the idea of formally proving that
> >> an algorithm is correct, and I can get evangelistic about the notion
> >> that some of the underlying ideas of formal methods (loop invariants
> >> and assertions, e.g.) can be applied informally to good effect.
> >
> > Yes, formal proofs of real code certainly are seductive. My personal
> >opinion on the matter is that they're rarely useful, partly because
> >the average "proof" doesn't model the program accurately (e.g., assuming
> >infinite memory or mathematical integers or reals). But also, it's
> >very rare that I'll look at a proof and think, "Ah, yes, this proof
> >is correct," when it wouldn't have been much faster to simply look at
> >the corresponding source code and see, "Ah, yes, this code is correct."
>
> This works well for some kinds of code, but (IMO) less well for others.
> In another branch of this thread Willem comments on proving the
> correctness of algorithms such as quicksort. I think formalism --
> or the ideas behind the formalism, informally applied -- can help
> in such contexts, i.e., when the underlying algorithm is less than
> crystal-clear obvious (as is, I claim, the case with the partitioning
> function in quicksort).
Yes, my opinions are undoubtably formed with lots of influence from
school exercises, which are almost always of the trivial variety. :)
And just for the sake of arguing, I contend that -- while it's useful
to prove Quicksort -- once you've done the proof once, you can then
look at a whole new class of source code and see, "Ah, yes, this code
uses principles similar to Quicksort." So it becomes "crystal-clear
obvious" that you don't need to formally prove those programs either.
(-:
> I think it is also of enormous benefit in thinking about concurrent
> algorithms,
Quite possibly. So far, I've just stuck with deterministic stuff,
but I have heard horror stories about concurrency. I trust you know
more than I about that.
> >> But it is a little disturbing to consider the implications of the fact
> >> that the proofs take place in a universe with integers and real numbers,
> >> while the programs run in a universe with ints and doubles/floats, which
> >> don't quite have the same properties.
> >
> >s/the proofs/some invalid proofs/
>
> I shouldn't claim to be an expert, but I have seen a fair number of
> proofs of -- well, perhaps more of algorithms than of programs --
> and I don't remember seeing any that took into account that ints are
> not integers and floats are not real numbers. So I question your
> substitution here. (Politely, in case that's not clear.)
Fine. s/the proofs/an awful lot of invalid proofs/
;-)
However, my point stands: if a proof is wrong, for whatever reason
(including the use of a wrong model of computation), then it's not
valid. And not all program proofs are invalid. Thus, it's not
correct to say that *all* "the proofs" use the wrong models -- just
"some" of them.
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/30/2004 10:53:02 PM
|
|
On Fri, 30 Jan 2004, Noah Roberts wrote:
>
> Zvar qbrfa'g :( V whfg unir gb phg naq cnfgr vagb ge.
One of the programs here
http://www.contrib.andrew.cmu.edu/~ajo/
might help (use the -C switch during decoding (but not encoding) to
avoid having the output interlaced with the input on the screen; I
really should make that more user-friendly somehow). Unless tr is
just as easy.
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
1/30/2004 11:35:28 PM
|
|
In article <Pine.LNX.4.58-035.0401301744270.6985@unix43.andrew.cmu.edu>,
Arthur J. O'Dwyer <ajo@nospam.andrew.cmu.edu> wrote:
>
>On Fri, 30 Jan 2004 blmblm@myrealbox.com wrote:
>>
>> Arthur J. O'Dwyer <ajo@nospam.andrew.cmu.edu> wrote:
[ snip ]
>> In another branch of this thread Willem comments on proving the
>> correctness of algorithms such as quicksort. I think formalism --
>> or the ideas behind the formalism, informally applied -- can help
>> in such contexts, i.e., when the underlying algorithm is less than
>> crystal-clear obvious (as is, I claim, the case with the partitioning
>> function in quicksort).
>
> Yes, my opinions are undoubtably formed with lots of influence from
>school exercises, which are almost always of the trivial variety. :)
Yes, and you're so right that such exercises don't make much of a case
for what they're trying to illustrate. Proving the correctness of
something that any beginning programmer can see is okay ....
>And just for the sake of arguing, I contend that -- while it's useful
>to prove Quicksort -- once you've done the proof once, you can then
>look at a whole new class of source code and see, "Ah, yes, this code
>uses principles similar to Quicksort." So it becomes "crystal-clear
>obvious" that you don't need to formally prove those programs either.
>(-:
No argument here. One of my pet theories is that some of what is
done in program proofs is a more formal and rigorous version of how
careful programmers think -- and if you can think in this careful
way without the formalism, the formalism may not add much.
>> I think it is also of enormous benefit in thinking about concurrent
>> algorithms,
>
> Quite possibly. So far, I've just stuck with deterministic stuff,
>but I have heard horror stories about concurrency. I trust you know
>more than I about that.
Enough to know that it can be tricky, and that the intuition
developed from years of sequential/deterministic programming isn't
always helpful.
[ snip -- it's Friday and I don't have anything more to contribute
to the discussion of whether it's some proofs or invalid proofs or
most .... :-)? ]
--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.
|
|
0
|
|
|
|
Reply
|
blmblm (1187)
|
1/30/2004 11:36:02 PM
|
|
gswork@mailcity.com (gswork) wrote in message news:<81f33a98.0401300107.26e3aadf@posting.google.com>...
> Randy Howard <randy.howard@FOOmegapathdslBAR.net> wrote in message news:<MPG.1a834c567040555d989bfe@news.megapathdsl.net>...
> > NOTE: These posts are an attempt to accumulate data for questionable
> > (at best) purposes, not a serious attempt at a real discussion. A
> > certain individual who we all are aware of and generally do not agree
> > with on most topics is planning to write a longwinded book or article
> > about how people are mean to him on Usenet. Ahh, let's be specific --
> > Mr. Nilges is doing this. I'm not making this up or guessing, he has
> > told me this privately in very specific terms.
>
> The general practice is to keep to the channel where the conversation
> started. If it's private then keep it private. I suppose this seems
> a bit of both, so....
>
> > This is just another in a long sequence of attempts to gather such
> > information by intentionally trolling with the intent to anger people
> > into saying things which can then be used out of context as the basis
> > for such a propaganda piece. I doubt he planned this two years in
> > advance, but he certainly seems to have accelerated his fishing
> > expeditions in this area in recent months, presumably as the idea
> > formed to make a financial gain as a result of writing about the
> > adverse effects of his presence here.
Wow, did I do that.
Seriously, my experience in writing articles in the computer and
general press since 1976 is that anybody who writes exclusively for
financial gain is out of his mind.
I do use my personal experiences at time, as does any writer, and I do
love to get paid for my writing, as does any writer.
But shame, to him who evil thinks. Mr. Howard has some serious
psychological issues of his own if he thinks to start a campaign with
this ridiculous claim. People who know me personally and who have
known my posting habits since I started using Usenet at Princeton know
that I do so for no financial gain.
>
> A lot of people write books about their experiences and they write
> them in a subjective manner. Even books intended to be about an
> objective matter or analysis thereof are almost always subjective
> (they're bound to be, given the author is always a subject!)
>
> > I was sent a series of emails threatening me in various ways,
They were not "threats". In fact, based on their content, Mr. Howard
actually said that I sounded more reasonable than he'd been led to
believe by the public posts. The email was an attempt to defuse the
situation.
> > most humorous of which was a demand that I post an "apology"
> > for being pointed about my comments in relation to his source
> > code, topicality of posts, demonstrated lack of knowledge of
> > various computing topics, etc. by this troll. The consequences
> > for not posting this apology?
> >
> > <sarcasm on>
> > I will be named specifically in this soon to be world famous book.
> > Oh no, how scary.
> > </sarcasm off>.
>
> If you wish to remain unnamed then request it formally. I'd imagine
I would certainly assent to any such request.
> it would be best for Edward to leave the names out anyway, the legal
> thin ice of perception of defamation and so forth is not worth it.
My understanding is that usenet posting is publication and for this
reason, to publish a source and to narrate your opinion of his
behavior isn't libel under USA or applicable international law.
People who know me, know that I take care (at the cost of being
verbose) to connect a claim with evidence, and to present it as
opinion. For example, I "called" Richard Heathfield "Fascist" because
in fact Fascist parties pioneered in the use of electronic media to
replicate the same lie many times.
>
> Although i believe Edward himself stated that usenet is not considered
> worthy evidence in court as it lacks credibility, it seems a little
> odd to write a book about it.
Mr. gswork, as a source of serious scientific and technical
information, usenet is a joke. But from a standpoint of cultural
theory it is a striking confirmation of Marcuse's claim that most
people today are isolated, sexually frustrated and filled with rage.
My refereed, published work on data base in labyrinths posed the
question of why a DBA in a company must concern himself with "business
rules" exclusively as part of a critical theory of computer science.
Similarly any such work on Internet culture would refute the widely
accepted claim, that the Internet empowers and "frees" people in all
cases. In significant areas, it has the reverse effect because it
allows the elite to use subordinate people to enforce unquestioned
norms.
>
> I wonder if there are any other books specifically about usenet
> discussions
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/31/2004 3:03:19 AM
|
|
Programmer Dude <Chris@Sonnack.com> wrote in message news:<401A7FED.766C40CB@Sonnack.com>...
> gswork wrote:
>
> > I wonder if there are any other books specifically about usenet
> > discussions
>
> Who would actually buy one?
Somebody who can read, probably.
Seriously, folks, I see above that Randy and Richard are batting their
eyes together across the room and just delighted that their savagery
seems to them to be getting somewhere. They forget rule one, and that
is that this place is a joke, and people who take it seriously are
themselves jokes.
I would like to use this ng for its intended purpose without having to
constantly battle for the right to speak without interference from
trolls. But I cannot post code without disruptive remarks being made
and replicated in a way reminiscent of Fascist praxis.
Therefore I did "threaten" Howard...with what would be the unavoidable
consequences of being named inna book as an example of negative
praxis. But the main purpose of any such book would be deconstructing
the unmerited reputation of cyberspace, contextualized in a society
thriving on isolation and despair, as empowering anybody.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
1/31/2004 3:09:49 AM
|
|
Programmer Dude wrote:
> Richard Heathfield wrote:
>
>
>>>Arvgure qbrf Argfpncr, NSNVPG (juvpu fhecevfrf zr).
>>>V pbcl naq cnfgr vagb zl bja Abgrcnq-nyvxr ncc.
>>
>>V hfrq gb hfr Argfpncr sbe ernqvat arjf, naq V nz cerggl fher gung
>>hafpenzoyvat ebg-guvegrra jnf ba gur pbagrkg zrah. Zvaq lbh, gung
>>jnf na rneyl irefvba.
>
>
> Jul, fb vg qbrf (irel obggbz)! V arire abgvprq. Jryy gung znxrf
> ernqvat gur zrffntrf n srj zbhfrpyvpxf rnfvre!! Pbby. Gunaxf!!
V nz hfvat zbmvyyn naq qba'g frr vg naljurer. Vf vg va gur evtug pyvpx
zrah be fbzrguvat ryfr?
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
1/31/2004 4:04:41 AM
|
|
Va negvpyr <401NQN91.6828P2PQ@Fbaanpx.pbz>, Puevf@Fbaanpx.pbz fnlf...
> Richard Heathfield wrote:
>
> >> Arvgure qbrf Argfpncr, NSNVPG (juvpu fhecevfrf zr).
> >> V pbcl naq cnfgr vagb zl bja Abgrcnq-nyvxr ncc.
> >
> > V hfrq gb hfr Argfpncr sbe ernqvat arjf, naq V nz cerggl fher gung
> > hafpenzoyvat ebg-guvegrra jnf ba gur pbagrkg zrah. Zvaq lbh, gung
> > jnf na rneyl irefvba.
>
> Jul, fb vg qbrf (irel obggbz)! V arire abgvprq. Jryy gung znxrf
> ernqvat gur zrffntrf n srj zbhfrpyvpxf rnfvre!! Pbby. Gunaxf!!
>
> Fnqyl, vg frrzf gb unir ab jnl gb qb vg va gur zrffntr rqvgbe, fb
> V fgvyy unq gb hfr zl CreyCnq ncc gb jevgr guvf ercyl.
>
> > Argfpncr frrzf gb unir tbar qbjauvyy va erprag lrnef.
>
> Fgnegvat nebhaq irefvba 4, nf V erpnyy. Cvgl.
>
>
Whfg hctenqr gb Tenivgl be FhcreTenivgl, juvpu nyybjf vg va obgu.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/31/2004 7:01:11 AM
|
|
In article <f5dda427.0401301903.4840f3d0@posting.google.com>, spinoza1111
@yahoo.com says...
> > > I was sent a series of emails threatening me in various ways,
>
> They were not "threats". In fact, based on their content, Mr. Howard
> actually said that I sounded more reasonable than he'd been led to
> believe by the public posts. The email was an attempt to defuse the
> situation.
Which I later recanted on after you started waxing longwinded again.
If you insist upon misquoting my emails to you, I will be forced to
publish them in their entirety to counter your false claims.
> > If you wish to remain unnamed then request it formally. I'd imagine
>
> I would certainly assent to any such request.
I make such a request here and now. I do not wish to be used by the
likes of you in any financial endeavor whatsoever.
> My understanding is that usenet posting is publication and for this
> reason, to publish a source and to narrate your opinion of his
> behavior isn't libel under USA or applicable international law.
Strange, you seem to have the opposite opinion of others that post
about you to Usenet.
> Mr. gswork, as a source of serious scientific and technical
> information, usenet is a joke.
Predominantly as a result of your presence herein. You can solve
the problem, for which we will all be quite thankful, simply by
leaving and never returning.
> Similarly any such work on Internet culture would refute the widely
> accepted claim, that the Internet empowers and "frees" people in all
> cases. In significant areas, it has the reverse effect because it
> allows the elite to use subordinate people to enforce unquestioned
> norms.
The "Usenet elite" of your imagination are nothing more than those
that are able to coherently explain their position(s) on topics.
Conversely the "subordinate people" are those that make demonstrably
false claims, or simply are incapable of compellingly make their
points such that others agree with them. In effect, the "elite" or
"subordinate" status of such participants is due solely to their
own effectiveness or failure in achieving such goals.
If you were not incapable of explaining your positions such that
others would agree with you more often than not, you would not
feel put upon by the "elite" of which you desire to be a member.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/31/2004 7:11:00 AM
|
|
In article <f5dda427.0401301909.3440acc0@posting.google.com>, spinoza1111
@yahoo.com says...
> Seriously, folks, I see above that Randy and Richard are batting their
> eyes together across the room
Hardly. I insist upon female company for such matters. YMMV.
> and just delighted that their savagery seems to them to be getting
> somewhere.
Where precisely have we gotten (now that you are back)? Where could
any group of Usenet participants "hope to go"? Nobody was savage to
you, unless you define savagery as being critical of unsupported
claims and demonstrably poor programming practices, not to mention
lying and misleading others, using semantics to avoid admitting
failure, etc., etc.
> They forget rule one, and that is that this place is a joke, and
> people who take it seriously are themselves jokes.
You are the one that is taking it seriously, so seriously in fact
that you threaten legal action and intend to author text on the
subject. By your own definition, you are a joke. I for one take
nothing that *you* say seriously, because you have zero credibility
here. Half the time you contradict your own self, in addition to
being in direct contradiction to all rational thinking on most
subjects you expound upon.
> I would like to use this ng for its intended purpose without having to
> constantly battle for the right to speak without interference from
> trolls.
Then start doing so. AFAICT, you have *never* done the above for more
than a few brief moments before ratholing on one of your social or
economic diatribes.
> But I cannot post code without disruptive remarks being made
Then post code that is beyond reproach, or as others are capable of,
learn to admit your faults and learn from them. The only people that
get their feelings hurt at code reviews are those that can't stand
to have others believe they are not perfect. Only idiots think they
are perfect, for they are too stupid to know otherwise.
> Therefore I did "threaten" Howard...with what would be the unavoidable
> consequences of being named inna book as an example of negative
> praxis.
The consequences of such would be zero. I simply do not wish to be
a willing or unwilling participant in anything that forces other
innocent beings to have to read your writings. If you intend to
foist your rubbish on others, that is your right, as far as you
can get them to read it, but leave me out of it. You are an
admitted troll, with an admitted *need* for attention from such "jokes"
of Usenet newsgroups and their participants. That is more telling
than all of your gibberish combined.
> But the main purpose of any such book would be deconstructing
> the unmerited reputation of cyberspace, contextualized in a society
> thriving on isolation and despair, as empowering anybody.
Blah, blah, blah... Why not just take the Oxford dictionary and hire
an actual programmer to write a program to randomly generate sentences
from its contents. It would be more coherent than your writings.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
1/31/2004 7:20:31 AM
|
|
Edward G. Nilges wrote:
> Programmer Dude <Chris@Sonnack.com> wrote in message
> news:<401A7FED.766C40CB@Sonnack.com>...
>> gswork wrote:
>>
>> > I wonder if there are any other books specifically about usenet
>> > discussions
>>
>> Who would actually buy one?
>
> Somebody who can read, probably.
>
> Seriously, folks, I see above that Randy and Richard are batting their
> eyes together across the room and just delighted that their savagery
> seems to them to be getting somewhere.
I don't think "savagery" is an accurate characterisation of my correcting of
Mr Nilges's errors. I /do/ think it's an accurate characterisation of his
offensive comparisons of various members of this newsgroup to Fascists and
Nazis. That kind of behaviour is odious in the extreme.
> They forget rule one, and that
> is that this place is a joke, and people who take it seriously are
> themselves jokes.
This isn't a place. It's a newsgroup. Those who abuse it, such as Mr Nilges,
are perhaps less likely to see it as a useful resource than those who do
not, so it's hardly surprising that Mr Nilges thinks of it as a joke. But,
in that case, why does he bother with it?
> I would like to use this ng for its intended purpose
Mr Nilges is free to use this newsgroup for its intended purpose, just like
anyone else. Instead, he chooses to attempt to fill it with sociological
junk; junk that would score him 0/10 if he were to hand it in as CompSci
homework.
> without having to
> constantly battle for the right to speak without interference from
> trolls. But I cannot post code without disruptive remarks being made
> and replicated in a way reminiscent of Fascist praxis.
If Mr Nilges doesn't wish his code to be corrected, he should post
error-free code.
> Therefore I did "threaten" Howard...with what would be the unavoidable
> consequences of being named inna book as an example of negative
> praxis.
What is it, a fantasy novel?
> But the main purpose of any such book would be deconstructing
> the unmerited reputation of cyberspace, contextualized in a society
> thriving on isolation and despair, as empowering anybody.
I could write such a book easily, using a program freely available on the
Web. I recommend it to Mr Nilges as a great time-saver. Of course, its
output is meaningless, but that shouldn't worry Mr Nilges in the slightest.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
1/31/2004 9:16:58 AM
|
|
FM wrote:
>
> "Les Cargill" <lcargill@worldnet.att.net> wrote:
> > FM wrote:
> > > "Willem" <willem@stack.nl> wrote:
> > > > If I wanted to be exact, I would have been a lot more rigorous.
> > > > Besides, proving termination is usually quite easy for loops.
> > >
> > > Using "recursion," yes.
> > >
> > > > When you get to recursion, that becomes a whole new problem.
> > >
> > > That's a bizarre statement.
> > >
> > > Dan.
> >
> > Recursion and iteration are equivalent. Knuth, I think ( but I might
> > misremember ).
>
> With loops and a stack, one can implement recursion.
> With recursion, you can certainly implement any kind
> of loops. Whether iteration and recursion are
> equivalent depends on one's definition of iteration.
>
> Dan.
For every recirsive algorithm, there exists at least one
iterative algorithm that is equivalent. I may have missed a detail,
as I'm working from memory.
--
Les Cargill
|
|
0
|
|
|
|
Reply
|
lcargill (131)
|
2/1/2004 3:01:15 AM
|
|
Gerry Quinn wrote:
>
> In article <4016F4BE.909C9BA8@worldnet.att.net>, Les Cargill <lcargill@worldnet.att.net> wrote:
> >If it's the kind of math where you do proof by induction, the
> >zero is confusing and sometimes problematic.
>
> Why? Normally proof by induction means showing that something is true
> for a particular number, then showing that if it is true for a
> particular number it is true for its successor. Just start with 1, if
> it's not true for 0.
>
> - Gerry Quinn
I cannot honestly say why. The books all start with 1.
--
Les Cargill
|
|
0
|
|
|
|
Reply
|
lcargill (131)
|
2/1/2004 3:07:20 AM
|
|
Randy Howard <randy.howard@FOOmegapathdslBAR.net> wrote in message news:<MPG.1a8513376e04942989c13@news.megapathdsl.net>...
> In article <f5dda427.0401301909.3440acc0@posting.google.com>, spinoza1111
> @yahoo.com says...
> > Seriously, folks, I see above that Randy and Richard are batting their
> > eyes together across the room
>
> Hardly. I insist upon female company for such matters. YMMV.
Homophobia is unattractive.
>
> > and just delighted that their savagery seems to them to be getting
> > somewhere.
>
> Where precisely have we gotten (now that you are back)? Where could
> any group of Usenet participants "hope to go"? Nobody was savage to
> you, unless you define savagery as being critical of unsupported
> claims and demonstrably poor programming practices, not to mention
> lying and misleading others, using semantics to avoid admitting
> failure, etc., etc.
Perhaps you are just wrong on what constitutes "demonstrably poor"
programming practice. I do note that the gains made by programmers
when they realized, in consequence of Niklaus Wirth's work in the
1970s, the folly of microefficiency, are being reversed, for example
in the rejection of Hungarian notation.
>
> > They forget rule one, and that is that this place is a joke, and
> > people who take it seriously are themselves jokes.
>
> You are the one that is taking it seriously, so seriously in fact
> that you threaten legal action and intend to author text on the
> subject. By your own definition, you are a joke. I for one take
If you'd read what I posted you would realize that I effectively
withdrew the threat when my attorney advised me that usenet is not
taken seriously, owing to the very abuse I identify, by people who
matter.
> nothing that *you* say seriously, because you have zero credibility
> here. Half the time you contradict your own self, in addition to
> being in direct contradiction to all rational thinking on most
> subjects you expound upon.
>
> > I would like to use this ng for its intended purpose without having to
> > constantly battle for the right to speak without interference from
> > trolls.
>
> Then start doing so. AFAICT, you have *never* done the above for more
> than a few brief moments before ratholing on one of your social or
> economic diatribes.
This is because when I do make a contribution, my reward is to be
collectively trolled. Furthermore, I can get paid for code, so why
should I throw pearls before swine?
>
> > But I cannot post code without disruptive remarks being made
>
> Then post code that is beyond reproach, or as others are capable of,
> learn to admit your faults and learn from them. The only people that
> get their feelings hurt at code reviews are those that can't stand
> to have others believe they are not perfect. Only idiots think they
> are perfect, for they are too stupid to know otherwise.
The people who invented the code review including Gerald Weinberg, did
not engage in this macho rhetoric, which frightens men away from the
very ability to express their feelings.
Modern code reviews did not appear until the early 1970s, during a
period of culture in Europe and America when the women's movement was
causing men to re-examine their machismo, including scientific and
technical machismo. Therefore, in discussing walkthroughs in The
Psychology of Computer Programming, Gerald Weinberg insisted that
discussion had to stay away from personalities including the global
statements you make (without evidence) about biographical competence.
However, in the corporate downsizing of the 1990s, this macho spirit
returned and the result is that people don't collectively review code.
The structured programming movement of the 1970s including
walkthroughs created a productivity increase which the 1980s exploited
to create the foundations of modern systems, in companies in which the
anti-macho spirit survived including Microsoft. Today, because this
spirit has disappeared, jobs are fleeing to less childish countries,
and this is IMO a good thing.
You are play-acting by characterizing the Fascist attack on my
credibility of May 2002 as a walkthrough. For example, had Chris and
Richard been coworkers, and had I been handed a standards manual that
dictated no use of Hungarian notation, I would have not used Hungarian
notation. But precisely because they were not co-workers (and I would
not want to work with them at any time), I elected to use my own
default standards including Hungarian.
Post facto, they then acted as if their uncertified and unestablished
wisdom is controlling because their feelings had been wounded in Dec
2000 by the popularity of my newbie thread on Steve McConnell.
Essentially, your interesting prose about learning from gnomes and
trolls shows that American and British labor relations in programming
have regressed to a form of feudalism, in which economic and technical
progress are subordinate to obeisance, and this is leading to a Dark
Ages in American and British programming. As was the case in the
European Dark Ages, the mathematics is fleeing to the East.
>
> > Therefore I did "threaten" Howard...with what would be the unavoidable
> > consequences of being named inna book as an example of negative
> > praxis.
>
> The consequences of such would be zero. I simply do not wish to be
> a willing or unwilling participant in anything that forces other
> innocent beings to have to read your writings. If you intend to
> foist your rubbish on others, that is your right, as far as you
> can get them to read it, but leave me out of it. You are an
> admitted troll, with an admitted *need* for attention from such "jokes"
> of Usenet newsgroups and their participants. That is more telling
> than all of your gibberish combined.
>
> > But the main purpose of any such book would be deconstructing
> > the unmerited reputation of cyberspace, contextualized in a society
> > thriving on isolation and despair, as empowering anybody.
>
> Blah, blah, blah... Why not just take the Oxford dictionary and hire
> an actual programmer to write a program to randomly generate sentences
> from its contents. It would be more coherent than your writings.
That's interesting, because a "sentence diagram" would show my
sentence, as well-formed. That's interesting, because thugs like to
say, "blah blah blah." That's interesting, because the isolation and
despair is out there.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/1/2004 3:46:41 AM
|
|
Randy Howard <randy.howard@FOOmegapathdslBAR.net> wrote in message news:<MPG.1a8510fd75dd74989c12@news.megapathdsl.net>...
> In article <f5dda427.0401301903.4840f3d0@posting.google.com>, spinoza1111
> @yahoo.com says...
> > > > I was sent a series of emails threatening me in various ways,
> >
> > They were not "threats". In fact, based on their content, Mr. Howard
> > actually said that I sounded more reasonable than he'd been led to
> > believe by the public posts. The email was an attempt to defuse the
> > situation.
>
> Which I later recanted on after you started waxing longwinded again.
> If you insist upon misquoting my emails to you, I will be forced to
> publish them in their entirety to counter your false claims.
As to being "longwinded": I am always amused by this charge, since it
is made by technicians against a density of ideas and not of words.
Nobody, for example, characterizes an unsnipped embedded post as
"longwinded". The charge is made against any post of high connectivity
that introduces many ideas, in a syntactical pattern not immediately
obvious to thugs and fools.
Now, this may be a vice. It may be a vice to, like Sir Thomas Browne
(the Elizabethan writer of Religio Medici) introduce many different
ideas, even if one (like Sir Thomas Browne) connects the ideas, where
the connectivity only increases the word count.
But it is an incompetent English teacher's mistake to characterize
this as long-winded verbosity.
The question is whether programming needs general culture to create
effective systems in the large. The offshore phenomenon would seem to
argue against it prima facie.
But one does notice that the SUCCESSFUL offshore countries are
primarily countries with a tradition of education in English. Thus the
"Asian tiger economies" of the 1980s, while successful in hardware
fabrication are not as successful (yet) in software fabrication as is
India. In fact, many educated Indians are more familiar with general
English and American culture than school-leavers in the UK and USA who
later become Web masters and hackers.
In fact, the offshore phenomenon results from a longterm phenomenon in
the UK and a recent phenomenon in the USA. The longterm phenomenon in
the UK has been its deliberate failure to properly educate its working
class. The recent phenomenon in the USA has been its attack on public
education so that rednecks can buy boats.
>
> > > If you wish to remain unnamed then request it formally. I'd imagine
> >
> > I would certainly assent to any such request.
>
> I make such a request here and now. I do not wish to be used by the
> likes of you in any financial endeavor whatsoever.
No problem. I won't mention you or your address in any published work
beyond these usenet posts. I will be unavoidably and with compassion
thinking of your isolation and rage.
>
> > My understanding is that usenet posting is publication and for this
> > reason, to publish a source and to narrate your opinion of his
> > behavior isn't libel under USA or applicable international law.
>
> Strange, you seem to have the opposite opinion of others that post
> about you to Usenet.
It's not a symmetrical situation. I made a constructive, on-topic and
popular contribution to comp.programming in December 2000 in the form
of a book review. Chris Sonnack then asked me to post code in May 2002
which I did in order to show that in C, you have to waste time in
constructing rather fragile UDTs to solve real problems.
Chris then initiated a Fascist campaign in which he used the structure
of the medium of to amplify one error, corrected the evening it was
made, and "errors" consisting in the fact that I'm a literate C
programmer and for this reason use longer identifiers, Hungarian
notation, and am reluctant to create excess temporary variables...when
the loop length is pragmatically bounded.
>
> > Mr. gswork, as a source of serious scientific and technical
> > information, usenet is a joke.
>
> Predominantly as a result of your presence herein. You can solve
> the problem, for which we will all be quite thankful, simply by
> leaving and never returning.
Throughout its history, usenet has always belied its reputation for
"freedom" since throughout its history, so much space has been wasted
by these invitations to get lost, directed for example at Mark Ethan
Smith, women posters, and minority posters.
Throughout its history, usenet has been a place where white males can
regain their shaky self-esteem by claiming that they support "freedom"
which is the freedom to be like everybody else.
>
> > Similarly any such work on Internet culture would refute the widely
> > accepted claim, that the Internet empowers and "frees" people in all
> > cases. In significant areas, it has the reverse effect because it
> > allows the elite to use subordinate people to enforce unquestioned
> > norms.
>
> The "Usenet elite" of your imagination are nothing more than those
> that are able to coherently explain their position(s) on topics.
Strange. Richard Heathfield has never coherently defended his
interpretation of the ng charter.
> Conversely the "subordinate people" are those that make demonstrably
> false claims, or simply are incapable of compellingly make their
> points such that others agree with them. In effect, the "elite" or
> "subordinate" status of such participants is due solely to their
> own effectiveness or failure in achieving such goals.
Let's blame the victim, shall we?
>
> If you were not incapable of explaining your positions such that
> others would agree with you more often than not, you would not
> feel put upon by the "elite" of which you desire to be a member.
The "others" of whom you speak are a set with cardinality so small as
to be meaningless: for paradoxically, the very size of cyberspace
means that your attention narrows only to a repeated working set of
n<10 posters: Richard Heathfield, Chris Sonnack, yourself, and about
seven others.
Cudgel thy brains. You have, when you look at the discussion tree, no
realistic way to assess properly the size of the total set including
lurkers. Furthermore, you are just confused, and were meant to be
confused, by Richard Heathfield's almost mechanistic replication of
the same small "working set" of unsupported and unsupportable claims.
For three years, Richard has posted the same false claim: that this ng
is for the discussion of abstract algorithms and may not discuss
programmERS. He does so in such a dreary, mechanistic fashion that I
have speculated that he's being paid by a corporation or government
agency as an anti-union agent, since the effect of his attacks is to
destroy solidarity.
You are confused, and were meant to be confused, by this volume over a
period of time but any time slice confronts you with the same set of
people, consisting of again n<10 clowns and Mr. GsWork who is no EGN
admirer but instead an honest straight shooter.
To re-present this as a vote is again reminiscent of Fascist
parliamentary praxis.
Furthermore, check out my (moderated!) Amazon posts. We see a
consistent pattern. An actual majority, of people who supposedly have
read the post, vote my Amazon reviews down in answer to the question,
were they useful to you. This is an honest result IF the negative
voters were trying to decide whether to buy the book or other product,
since my reviews are deliberately meant as alternate analyses of books
lest the standard analysis be the only analysis. They require a
prereading of the book or a preview, of the DVD.
For example, Richard Posner is a legal theorist whose pomposity sugar
coats his right-wing garbage, and I am concerned with deflating him
everytime I read one of his books.
As a result, a majority of polled reject the Amazon posts, but what
interests, and gratifies, me, are the consistent positive minority
votes, for these are the people who I targeted originally!
In a real sense, I am not addressing you nor do I care much if you
agree with me. You seem so full of hatred that I am more concerned for
your sanity and the physical safety of those near you, and I advise
you to join an anger management group.
Instead I find that my critique, of the ways in which low programming
productivity in the USA (which is sending jobs offshore), has an
emotional and a cultural basis, and I am gratified if the message gets
through to a minority.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/1/2004 4:14:56 AM
|
|
blmblm@myrealbox.com wrote in message news:<bvdfqm$r3s5l$1@ID-147531.news.uni-berlin.de>...
> In article <f5dda427.0401281831.dade6d9@posting.google.com>,
> Edward G. Nilges <spinoza1111@yahoo.com> wrote:
>
> [ big big snip ]
>
> [ this was me in an earlier post ]
> >> > But it is a little disturbing to consider the implications of the fact
> >> > that the proofs take place in a universe with integers and real numbers,
> >> > while the programs run in a universe with ints and doubles/floats, which
> >> > don't quite have the same properties.
> >>
> >> s/the proofs/some invalid proofs/
> >
> >No, the guy's point is well taken. You cannot deductively "prove" that
> >some clown won't misuse your code.
>
> If I am the "guy" to whom you refer (where I assume you mean "guy"
> as a gender-neutral term), I'm not sure how your comment relates to
> what I said. Even if your factorial function came with a disclaimer
> that it would only work for inputs N such that N! can be represented
> as an int, the proof doesn't look at that aspect, does it? Such proofs
> usually don't. That was my point.
OK, I understand that int precision controls the absolute validity of
the proof. But as hero computer scientist Edsger Dijkstra has
pointed-out, programming is APPLIED mathematics.
This is paradoxical, since Dijkstra had when alive such a reputation
as a theorist's theorist, and was so often dismissed (by people like
Yourdon who cashed-in on his ideas) as ivory tower.
What it means of course is that any proof is "bounded" by its
application. No civil engineer asks of the mathematics of
bridge-building that it foresee the physical conditions that actually
apply, nor do civil engineers reject math because of this limitation.
Yet we find that programmers consistently reject deductive reasoning
because it won't work beyond the boundary conditions.
This, in American and UK society, is set by the invisibility of
"society".
Programmers, who are often ideologically controlled (cf. Phillip
Kraft, Programmers and Managers, Springer, 1978), cannot at some level
acknowledge that the equivalent of the bridge's natural environment is
the SOCIAL environment of the program.
Paradoxically, Dijkstra was labeled "ivory tower" because his was the
true pragmatism. He persisted in believing that ultimately, a program
was applied to an uncontrollable social context. Whereas ordinary
programmers insist that "the user enter only valid data" and indeed
subordinate herself to a pre-judged laissez-faire regime, in which the
user will use the software without back-talk if she's in a subordinate
position.
For example, Dijkstra gave a talk on the solution of a railroad
problem in which he applied mathematics to the arrangement (the
expensive sorting in a real railroad yard) of cars. He noticed that
managers in the audience for this talk became angered without being
able to articulate their anger.
They became angry, and thought Professor Dijkstra arrogant, because
Dijkstra presumed to show that, all other things being equal, there
was one and only one correct solution, available through difficult
math only, of a "management" problem, which implied that what Dijkstra
called "sloppy English and IBMerese" wouldn't cut it.
Management has a genuine role at the social margin of technology but
what Dijkstra exposed was the necessity for programmers to be able to
formulate a solution up to this margin, when in American, and to an
extent UK, culture, "management prerogative" (by legislation in the
US: by Anglo-Saxon common law in the UK) dictate that the employee
must think only as directed.
I find that proofs merely help us think better about what software
does. Take a look at Knuth in this regard.
And as opposed to Willem's formal notation I find that a mere comment
can be an ordinary language proof more useful than another formal
notation which does indeed represent an artifact one has to master
over and above the programming language.
>
> [ big big snip ]
>
> --
> | B. L. Massingill
> | ObDisclaimer: I don't speak for my employers; they return the favor.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/1/2004 4:28:14 AM
|
|
In article <f5dda427.0401311946.16b2150a@posting.google.com>, spinoza1111
@yahoo.com says...
> Randy Howard <randy.howard@FOOmegapathdslBAR.net> wrote in message news:<MPG.1a8513376e04942989c13@news.megapathdsl.net>...
> > In article <f5dda427.0401301909.3440acc0@posting.google.com>, spinoza1111
> > @yahoo.com says...
> > > Seriously, folks, I see above that Randy and Richard are batting their
> > > eyes together across the room
> >
> > Hardly. I insist upon female company for such matters. YMMV.
>
> Homophobia is unattractive.
I am not afraid of homosexuals, I simply do not have the same opinions they
do about such matters. Free country, and all that. Why *must* you keep
changing the subject?
> > Where precisely have we gotten (now that you are back)? Where could
> > any group of Usenet participants "hope to go"? Nobody was savage to
> > you, unless you define savagery as being critical of unsupported
> > claims and demonstrably poor programming practices, not to mention
> > lying and misleading others, using semantics to avoid admitting
> > failure, etc., etc.
>
> Perhaps you are just wrong on what constitutes "demonstrably poor"
> programming practice.
It's possible, but I am not in the minority by any imagination in
describing your programs as being emblematic of such practice. I have
read your weak attempts at disproving such a theory and have remained
unconvinced your side of the argument holds water.
> > > They forget rule one, and that is that this place is a joke, and
> > > people who take it seriously are themselves jokes.
> >
> > You are the one that is taking it seriously, so seriously in fact
> > that you threaten legal action and intend to author text on the
> > subject. By your own definition, you are a joke. I for one take
>
> If you'd read what I posted you would realize that I effectively
> withdrew the threat when my attorney advised me that usenet is not
> taken seriously, owing to the very abuse I identify, by people who
> matter.
Strange, you keep changing your mind on this, you are very forgetful,
or both. I have the emails to prove it, which I received *after* you
posted the statement you are referring to above. If you suffer from
multiple personality disorder, seek treatment, but by all means quit
making us guess which version of yourself is likely to be present from
one day to the next in this forum or in your email correspondence.
> > Then start doing so. AFAICT, you have *never* done the above for more
> > than a few brief moments before ratholing on one of your social or
> > economic diatribes.
>
> This is because when I do make a contribution, my reward is to be
> collectively trolled.
Correction: Your posts are trolls, which you have actually admitted
to before, as they are "necessary" for you to gain attention. This is
not a lonely hearts club, or a social therapy seminar at the local
chapter of the Nutcases Society. Seek your remedy elsewhere.
> Furthermore, I can get paid for code,
Which is beyond comprehension.
> so why should I throw pearls before swine?
Very good question. Why don't you stop it then? It's pointless for
you to try and convince us that your irrational arguments are anything
but what they are, so go find a group inhabited by people less likely
to find fault with your gibberish and become "elite" there. I am sure,
if you look hard enough, you will find such a place. It usually has
a nice marble sign out front with a lovely title, including the name
"Institution" somewhere in the title, and "Mental" conveniently nearby.
> > Then post code that is beyond reproach, or as others are capable of,
> > learn to admit your faults and learn from them. The only people that
> > get their feelings hurt at code reviews are those that can't stand
> > to have others believe they are not perfect. Only idiots think they
> > are perfect, for they are too stupid to know otherwise.
>
> The people who invented the code review including Gerald Weinberg, did
> not engage in this macho rhetoric, which frightens men away from the
> very ability to express their feelings.
That's probably because the participants in code reviews do not usually
refuse to admit obvious flaws and instead try and pretend (for years
at a time) otherwise, even when the reviewers all agree. The fact
that you do not adhere to normal behavior patterns for code reviews
is the primary issue here.
> However, in the corporate downsizing of the 1990s, this macho spirit
> returned and the result is that people don't collectively review code.
People do, trolls apparently do not. I was certainly present at a
number of code reviews during the 90s, as well as the current decade,
without ever encountering code as poorly constructed as what you
defend as perfect here, or with programmers in attendance as obviously
incapable as you represent yourself to be here. Again, I am beginning
to increasingly believe that you simply are putting on an act so that
we shall pay attention to you. alt.nilges.please.argue.with.me could
be newgrp'd you know.
> jobs are fleeing to less childish countries, and this is IMO a good
> thing.
If the end result is that you are unable to get work programming, then
I agree entirely. Nothing could be more beneficial to mankind, at
least within the purview of programming.
> You are play-acting by characterizing the Fascist attack on my
> credibility of May 2002 as a walkthrough.
You insistence on equating Fascism with disagreement is becoming
increasingly annoying. I suppose if you had ruled the day in such
debates, you would be happy to be called a Fascist as a result,
right?
> For example, had Chris and Richard been coworkers [of Nilges]
I find this premise impossible to believe. This requires more suspension
of disbelief than the plot line to The Matrix.
> and had I been handed a standards manual that
> dictated no use of Hungarian notation, I would have not used Hungarian
> notation.
That move would have not likely been sufficient to save your employment
at such an imaginary company. Once someone reviewed your work, with
or without hungarian, you would have, in any rational world, been
sacked immediately.
> Post facto, they then acted as if their uncertified and unestablished
> wisdom
I have read enough of Richard's writings (both published and on Usenet)
and participated in enough discussions with Chris that I believe both
have more than established their wisdom in such areas. It is important
to understand that the your participation here has given the opposite
impression, to numerous participants, not just me, or the above two.
That is solely your responsibility, your lack of ability to convince
others in this regard is nobody's fault but your own.
> is controlling because their feelings had been wounded in Dec
> 2000 by the popularity of my newbie thread on Steve McConnell.
You are the only person I can recall in this newsgroup that has kept
statistics on the lengths of threads, or who created them. Further,
even if such statistics were kept, I can't imagine how they would
be important, apart to a lonely, desperate man with no other form of
entertainment.
It's amazing you have promised to leave, never to return, yet I am still
able to see new posts appearing in your name. How is it possible for
someone honest to rectify such an unlikely turn of events in their own
mind?
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
2/1/2004 4:40:45 AM
|
|
Edward G. Nilges wrote:
> But it is an incompetent English teacher's mistake to characterize
> this as long-winded verbosity.
Is there another kind of verbosity ?
--
pete
|
|
0
|
|
|
|
Reply
|
pfiland (6613)
|
2/1/2004 4:43:10 AM
|
|
spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401311946.16b2150a@posting.google.com>...
> > Hardly. I insist upon female company for such matters. YMMV.
>
> Homophobia is unattractive.
No one was homophobic. (If he said he preferred male company
would you accuse him of heterophobia?)
> This is because when I do make a contribution, my reward is to be
> collectively trolled. Furthermore, I can get paid for code, so why
> should I throw pearls before swine?
I try to post here only on technical matters, and confine my ad hominen
attacks to more appropriate newsgroups like alt.idiot.william_safire.
But as an impartial observer, I will comment on the one Nilges thread
where I participated.
In that thread, Nilges explained that he knew nothing of Unix, but
reposted his incorrect theory of Unix several times, despite being
corrected several times. Talk about "pearls before swine"!
I'm beginning to understand why newsgroup regulars have become exasperated.
James
|
|
0
|
|
|
|
Reply
|
jdallen2000 (489)
|
2/1/2004 7:13:49 AM
|
|
In article <f5dda427.0401312014.a010804@posting.google.com>, spinoza1111
@yahoo.com says...
>
> > Which I later recanted on after you started waxing longwinded again.
>
> As to being "longwinded": I am always amused by this charge,
I assure you it is not amusing to be reading your text and trying to
pretend otherwise.
> Nobody, for example, characterizes an unsnipped embedded post as
> "longwinded".
I do. It has been requested of you many times to snip text to which
you do not refer directly in your replies. You refuse (or are
incapable of doing so).
> The charge is made against any post of high connectivity that
> introduces many ideas, in a syntactical pattern not immediately
> obvious to thugs and fools.
Whatever lie you need to tell yourself, your verbosity is rambling
by any generally accepted definition of the term. Pretending it is
the mark of your intelligence (pseudo- of course) is just more
egotism and unjustified arrogance.
> But it is an incompetent English teacher's mistake to characterize
> this as long-winded verbosity.
I think you just cut to the chase and call it bull$%^& and move on.
> The question is whether programming needs general culture to create
> effective systems in the large.
That may be your question, but it doesn't seem to be important to
anyone else here. Perhaps you should fish with it in another
forum where your odds might be better.
> I won't mention you or your address in any published work
> beyond these usenet posts. I will be unavoidably and with compassion
> thinking of your isolation and rage.
I wish I was isolated sometimes, as it gets a bit noisy from time
to time in a busy household, but it never makes me angry. Perhaps
it makes you feel less isolated and angry to imagine others in
a similar condition to yourself. If that works for you, be my
guest.
> > Strange, you seem to have the opposite opinion of others that post
> > about you to Usenet.
>
> It's not a symmetrical situation. I made a constructive, on-topic and
> popular contribution to comp.programming in December 2000 in the form
> of a book review.
If that's the case, it must have been your last. I can't recall any
since I started reading your posts.
> Chris Sonnack then asked me to post code in May 2002
> which I did in order to show that in C, you have to waste time in
> constructing rather fragile UDTs to solve real problems.
My guess is you failed, since coding in C to solve problems is provably
not difficult.
> Chris then initiated a Fascist campaign in which he used the structure
There you go again with your Fascism thing.
> of the medium of to amplify one error, corrected the evening it was
> made, and "errors" consisting in the fact that I'm a literate C
> programmer and for this reason use longer identifiers, Hungarian
> notation, and am reluctant to create excess temporary variables...when
> the loop length is pragmatically bounded.
Yes, yes, we've heard it before. Suffice it to say the general
response is overwhelming disagreement with all of the above.
> Throughout its history, usenet has always belied its reputation for
> "freedom" since throughout its history, so much space has been wasted
> by these invitations to get lost,
You are now a Usenet historian? Why do I not believe your authoritative?
> Throughout its history, usenet has been a place where white males can
> regain their shaky self-esteem by claiming that they support "freedom"
> which is the freedom to be like everybody else.
How do you know who is white, black, brown, purple, orange, etc. on
Usenet?
> > The "Usenet elite" of your imagination are nothing more than those
> > that are able to coherently explain their position(s) on topics.
>
> Strange. Richard Heathfield has never coherently defended his
> interpretation of the ng charter.
You failure to interpret text may be problematic.
> > Conversely the "subordinate people" are those that make demonstrably
> > false claims, or simply are incapable of compellingly make their
> > points such that others agree with them. In effect, the "elite" or
> > "subordinate" status of such participants is due solely to their
> > own effectiveness or failure in achieving such goals.
>
> Let's blame the victim, shall we?
There are no victims when you have an equal right to post as anyone
else. You failure to convince others rests nowhere but on your own
shoulders.
> > If you were not incapable of explaining your positions such that
> > others would agree with you more often than not, you would not
> > feel put upon by the "elite" of which you desire to be a member.
>
> The "others" of whom you speak are a set with cardinality so small as
> to be meaningless: for paradoxically, the very size of cyberspace
> means that your attention narrows only to a repeated working set of
> n<10 posters: Richard Heathfield, Chris Sonnack, yourself, and about
> seven others.
Then why are you so upset about something you define to be meaningless?
Either it is, or it is not. Make up your mind. All of them.
> For three years, Richard has posted the same false claim: that this ng
> is for the discussion of abstract algorithms and may not discuss
> programmERS.
I think he draws the line at sociology, corporate rants and random
synaptic firings. I know I do.
> He does so in such a dreary, mechanistic fashion that I
> have speculated that he's being paid by a corporation or government
> agency as an anti-union agent, since the effect of his attacks is to
> destroy solidarity.
Yes, I have heard your ridiculous claims. If it is as meaningless as
you say, why should a union bother with it? You are an exercise
in self-contradiction.
> You are confused, and were meant to be confused, by this volume over a
> period of time but any time slice confronts you with the same set of
> people, consisting of again n<10 clowns and Mr. GsWork who is no EGN
> admirer but instead an honest straight shooter.
It's far more than 10, as I pointed out to you in a recent email. don't
underestimate the number simply because you reside in so many killfiles.
> To re-present this as a vote is again reminiscent of Fascist
> parliamentary praxis.
How long will praxis be your "word of the week"? Is it possible for you
to post without using it?
> Furthermore, check out my (moderated!) Amazon posts. We see a
> consistent pattern. An actual majority, of people who supposedly have
> read the post, vote my Amazon reviews down in answer to the question,
> were they useful to you.
I find this to be expected, and it reaffirms my faith in basic
human intelligence.
> For example, Richard Posner is a legal theorist whose pomposity sugar
> coats his right-wing garbage, and I am concerned with deflating him
> everytime I read one of his books.
Boy, do I know the feeling.
> In a real sense, I am not addressing you nor do I care much if you
> agree with me. You seem so full of hatred that I am more concerned for
> your sanity and the physical safety of those near you, and I advise
> you to join an anger management group.
I advise you to look in the mirror sometime when you start projecting.
I am usually laughing while participating in these verbosity clinics
you keep offering up. If you get angry at them, I consider that an
undocumented feature.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randy.howard (624)
|
2/1/2004 7:24:00 AM
|
|
Edward G. Nilges wrote:
> Randy Howard <randy.howard@FOOmegapathdslBAR.net> wrote in message
> news:<MPG.1a8513376e04942989c13@news.megapathdsl.net>...
>> In article <f5dda427.0401301909.3440acc0@posting.google.com>, spinoza1111
>> @yahoo.com says...
>> > Seriously, folks, I see above that Randy and Richard are batting their
>> > eyes together across the room
>>
>> Hardly. I insist upon female company for such matters. YMMV.
>
> Homophobia is unattractive.
Non sequitur. Randy Howard's statement is not homophobic.
>> > and just delighted that their savagery seems to them to be getting
>> > somewhere.
>>
>> Where precisely have we gotten (now that you are back)? Where could
>> any group of Usenet participants "hope to go"? Nobody was savage to
>> you, unless you define savagery as being critical of unsupported
>> claims and demonstrably poor programming practices, not to mention
>> lying and misleading others, using semantics to avoid admitting
>> failure, etc., etc.
>
> Perhaps you are just wrong on what constitutes "demonstrably poor"
> programming practice.
And perhaps he is not. So far, the evidence is all one way - i.e. Mr
Nilges's programming practices are demonstrably poor.
> I do note that the gains made by programmers
> when they realized, in consequence of Niklaus Wirth's work in the
> 1970s, the folly of microefficiency, are being reversed, for example
> in the rejection of Hungarian notation.
Hungarian Notation has nothing to do with efficiency, micro- or otherwise.
Mr Nilges's code efficiency problems had nothing to do with
micro-efficiency. The difference between linear and quadratic is not a
trivial difference.
>> > I would like to use this ng for its intended purpose without having to
>> > constantly battle for the right to speak without interference from
>> > trolls.
>>
>> Then start doing so. AFAICT, you have *never* done the above for more
>> than a few brief moments before ratholing on one of your social or
>> economic diatribes.
>
> This is because when I do make a contribution, my reward is to be
> collectively trolled.
This is not the case. Mr Nilges has occasionally made positive contributions
to this group (no, really he has!), and these were received well.
> Furthermore, I can get paid for code, so why
> should I throw pearls before swine?
The reasons are simple: Mr Nilges apparently has no pearls to throw, and
anyway comp.programming has few, if any, swine subscribing to it.
> You are play-acting by characterizing the Fascist attack on my
> credibility of May 2002 as a walkthrough.
Mr Nilges is IMHO incorrect to characterise the code review as a Fascist
attack, but why not decide for yourselves?
http://users.powernet.co.uk/eton/compprog/nilges.html contains the review
itself (which actually took place in late June 2002).
Is Mr Nilges really justified in calling that review a "Fascist attack"? I
don't think so. Do you?
<more nonsense snipped>
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
2/1/2004 7:42:00 AM
|
|
[I have snipped the vast majority of Mr Nilges's article because, as usual,
the vast majority of Mr Nilges's article has nothing to do with this
newsgroup.]
Edward G. Nilges wrote:
>> > My understanding is that usenet posting is publication and for this
>> > reason, to publish a source and to narrate your opinion of his
>> > behavior isn't libel under USA or applicable international law.
>>
>> Strange, you seem to have the opposite opinion of others that post
>> about you to Usenet.
>
> It's not a symmetrical situation.
Mr Nilges frequently posts defamatory (and grossly offensive) comments about
regular contributors to this group. On the other hand, he has yet to show
that anyone has defamed him.
> I made a constructive, on-topic and
> popular contribution to comp.programming in December 2000 in the form
> of a book review. Chris Sonnack then asked me to post code in May 2002
> which I did in order to show that in C, you have to waste time in
> constructing rather fragile UDTs to solve real problems.
It is never necessary to construct fragile UDTs in C - unless, I suppose,
one is incapable of writing robust ones, in which case a more forgiving
language might be more appropriate for that person than C.
> Chris then initiated a Fascist campaign
That's not true.
> in which he used the structure
> of the medium of to amplify one error, corrected the evening it was
> made, and "errors" consisting in the fact that I'm a literate C
> programmer and for this reason use longer identifiers, Hungarian
> notation, and am reluctant to create excess temporary variables...when
> the loop length is pragmatically bounded.
Mr Nilges has spoken out in the past against arbitrary limits on string
lengths. If his code is nonetheless to impose such arbitrary limits, the
fact ought to be mentioned in his documentation (which it was not).
Furthermore, temps are cheap. Mr Nilges ought to know this.
> Strange. Richard Heathfield has never coherently defended his
> interpretation of the ng charter.
No need. The meaning of the comp.programming charter is plain for all to
see.
>> If you were not incapable of explaining your positions such that
>> others would agree with you more often than not, you would not
>> feel put upon by the "elite" of which you desire to be a member.
>
> The "others" of whom you speak are a set with cardinality so small as
> to be meaningless: for paradoxically, the very size of cyberspace
> means that your attention narrows only to a repeated working set of
> n<10 posters: Richard Heathfield, Chris Sonnack, yourself, and about
> seven others.
Is that so surprising? Few people have much patience for Mr Nilges's
nonsense, and so they don't bother to read any of it (or, at least, don't
bother to reply to it).
> Cudgel thy brains. You have, when you look at the discussion tree, no
> realistic way to assess properly the size of the total set including
> lurkers. Furthermore, you are just confused, and were meant to be
> confused, by Richard Heathfield's almost mechanistic replication of
> the same small "working set" of unsupported and unsupportable claims.
I am prepared to support any claim I have made on this newsgroup that Mr
Nilges thinks is unsupported. Mr Nilges cannot say the same thing with any
accuracy.
> For three years, Richard has posted the same false claim: that this ng
> is for the discussion of abstract algorithms and may not discuss
> programmERS.
The charter does not explicitly exclude discussions about programmers, any
more than it explicitly excludes discussions about soap flakes or peanut
butter. Nevertheless, it does not explicitly /sanction/ such discussions.
Therefore, they are off-topic.
> He does so in such a dreary, mechanistic fashion that I
> have speculated that he's being paid by a corporation or government
> agency as an anti-union agent, since the effect of his attacks is to
> destroy solidarity.
/That/, on the other hand, is an example of a false and unsupportable claim.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
2/1/2004 8:02:45 AM
|
|
In article <401C6E62.B54079AF@worldnet.att.net>, Les Cargill <lcargill@worldnet.att.net> wrote:
>Gerry Quinn wrote:
>> In article <4016F4BE.909C9BA8@worldnet.att.net>, Les Cargill
> <lcargill@worldnet.att.net> wrote:
>> >If it's the kind of math where you do proof by induction, the
>> >zero is confusing and sometimes problematic.
>>
>> Why? Normally proof by induction means showing that something is true
>> for a particular number, then showing that if it is true for a
>> particular number it is true for its successor. Just start with 1, if
>> it's not true for 0.
>>
>> - Gerry Quinn
>
>I cannot honestly say why. The books all start with 1.
But babies start with 0 ;-)
Maybe that's just because must proofs are about positive
numbers. Inductive proofs about primes often start with 2 or 3.
I can see why 'descent' type proofs, which assume something is true for
X and then show that it is true for some smaller value - a kind of proof
which has something in common with induction - might require a
little extra care if 0 is used. Likewise, perhaps, proofs using the the
pigeonhole principle or similar. But pure induction seems immune to
such problems, and they are hardly serious anyway.
Gerry Quinn
--
http://bindweed.com
Screensavers, Games, Kaleidoscopes
Download free trial versions
|
|
0
|
|
|
|
Reply
|
gerryq2 (435)
|
2/1/2004 11:03:45 AM
|
|
spinoza1111@yahoo.com (Edward G. Nilges) wrote in
news:f5dda427.0401312028.447bfd18@posting.google.com:
> blmblm@myrealbox.com wrote in message
> news:<bvdfqm$r3s5l$1@ID-147531.news.uni-berlin.de>...
>> In article <f5dda427.0401281831.dade6d9@posting.google.com>,
>> Edward G. Nilges <spinoza1111@yahoo.com> wrote:
>>
>> [ big big snip ]
>>
>> [ this was me in an earlier post ]
>> >> > But it is a little disturbing to consider the implications of
>> >> > the fact that the proofs take place in a universe with integers
>> >> > and real numbers, while the programs run in a universe with ints
>> >> > and doubles/floats, which don't quite have the same properties.
>> >>
>> >> s/the proofs/some invalid proofs/
>> >
>> >No, the guy's point is well taken. You cannot deductively "prove"
>> >that some clown won't misuse your code.
>>
>> If I am the "guy" to whom you refer (where I assume you mean "guy"
>> as a gender-neutral term), I'm not sure how your comment relates to
>> what I said. Even if your factorial function came with a disclaimer
>> that it would only work for inputs N such that N! can be represented
>> as an int, the proof doesn't look at that aspect, does it? Such
>> proofs usually don't. That was my point.
>
> OK, I understand that int precision controls the absolute validity of
> the proof. But as hero computer scientist Edsger Dijkstra has
> pointed-out, programming is APPLIED mathematics.
So why post an invalid proof as an attempt to prove something? Clearly,
if the proof isn't based on the mathematical behaviour of the axioms from
which the code is derived then it's not valid. The valid set of values
for specific types are part of those axioms. If the proof does not
include these definitions of fundamental code behaviour you've not proved
anything about the code.
> This is paradoxical, since Dijkstra had when alive such a reputation
> as a theorist's theorist, and was so often dismissed (by people like
> Yourdon who cashed-in on his ideas) as ivory tower.
>
> What it means of course is that any proof is "bounded" by its
> application. No civil engineer asks of the mathematics of
> bridge-building that it foresee the physical conditions that actually
> apply, nor do civil engineers reject math because of this limitation.
Do we expect mathematics to foresee? No, that's the engineers job. Model?
Yes. If when building bridges you decide to pretend it's spanning a
crater on the Moon instead of over a river on the Earth you're not going
to have a very good bridge. If you're going to use mathematics to prove
something (that the code operates as specified, that the bridge operates
as specified) you model as precisely as sensible. In computing, most of
the universe is axiomatic and hence there is no excuse not to model it
correctly.
<snip the rest>
Ian Woods
--
"I'm a paranoid schizophrenic sado-masochist.
My other half's out to get me and I can't wait."
Richard Heathfield
|
|
0
|
|
|
|
Reply
|
newspub2 (159)
|
2/1/2004 12:42:26 PM
|
|
In article <81f33a98.0401300107.26e3aadf@posting.google.com>, gswork@mailcity.com (gswork) writes:
> I wonder if there are any other books specifically about usenet
> discussions
I can't offhand think of an entire book specifically about Usenet, but
there are certainly articles in academic journals and collections. I
wrote one m'self several years ago. The ones I've read are rhetorical
or sociolinguistic studies of trends in Usenet writing. Of interest
to people working in the field, generally speaking (though there's been
significant interest from the business community in applying this sort
of research to business communication).
I suspect EGN's mooted book will not be eagerly received by that
audience, but should it come out I'll ask around.
--
Michael Wojcik michael.wojcik@microfocus.com
Although he was an outsider, and excluded from their rites, they were
always particularly charming to him at this time; he and his household
received small courtesies and presents, just because he was outside.
-- E M Forster
|
|
0
|
|
|
|
Reply
|
mwojcik (1874)
|
2/1/2004 5:09:26 PM
|
|
Randy Howard wrote:
> How do you know who is white, black, brown, purple, orange, etc. on
> Usenet?
Just look at the background of their messages. Jeesh, how ignant can
you be?
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
2/1/2004 5:11:15 PM
|
|
Noah Roberts <nroberts@dontemailme.com> wrote:
> > How do you know who is white, black, brown, purple, orange, etc. on
> > Usenet?
> Just look at the background of their messages. Jeesh, how ignant can
> you be?
I see. You can tell da race o' anyone on usenet by da language used in da
messages dey post? Care ta identify if I be whitey, negroid or what? Slap
mah fro!
Bill, all ye damn hood ratz.
|
|
0
|
|
|
|
Reply
|
bill-godfrey2 (139)
|
2/1/2004 6:54:23 PM
|
|
Bill Godfrey wrote:
> Noah Roberts <nroberts@dontemailme.com> wrote:
>
>>>How do you know who is white, black, brown, purple, orange, etc. on
>>>Usenet?
>
>
>>Just look at the background of their messages. Jeesh, how ignant can
>>you be?
>
>
> I see. You can tell da race o' anyone on usenet by da language used in da
> messages dey post? Care ta identify if I be whitey, negroid or what? Slap
> mah fro!
>
> Bill, all ye damn hood ratz.
You definitely a white boy since the background of your message is a
most decidedly white color. In fact, all I see here are white people!
What a racist newsgroup!
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
2/1/2004 7:42:19 PM
|
|
Gerry Quinn wrote:
>
> In article <401C6E62.B54079AF@worldnet.att.net>, Les Cargill <lcargill@worldnet.att.net> wrote:
> >Gerry Quinn wrote:
> >> In article <4016F4BE.909C9BA8@worldnet.att.net>, Les Cargill
> > <lcargill@worldnet.att.net> wrote:
> >> >If it's the kind of math where you do proof by induction, the
> >> >zero is confusing and sometimes problematic.
> >>
> >> Why? Normally proof by induction means showing that something is true
> >> for a particular number, then showing that if it is true for a
> >> particular number it is true for its successor. Just start with 1, if
> >> it's not true for 0.
> >>
> >> - Gerry Quinn
> >
> >I cannot honestly say why. The books all start with 1.
>
> But babies start with 0 ;-)
>
> Maybe that's just because must proofs are about positive
> numbers. Inductive proofs about primes often start with 2 or 3.
>
True enough, because 1 is the multiplicative identity. I suspect
0 being the additive identity has something to do with the choice of 1.
But I bet it's Aristotle's fault. :)
> I can see why 'descent' type proofs, which assume something is true for
> X and then show that it is true for some smaller value - a kind of proof
> which has something in common with induction - might require a
> little extra care if 0 is used. Likewise, perhaps, proofs using the the
> pigeonhole principle or similar. But pure induction seems immune to
> such problems, and they are hardly serious anyway.
Agreed. "true for <n>" is trivial. It's the other part that's the work.
>
> Gerry Quinn
> --
> http://bindweed.com
> Screensavers, Games, Kaleidoscopes
> Download free trial versions
>
>
--
Les Cargill
|
|
0
|
|
|
|
Reply
|
lcargill (131)
|
2/2/2004 12:20:57 AM
|
|
Ian Woods <newspub2@wuggyNOCAPS.org> wrote in message news:<Xns9482814D24B24newspubwuggyorg@217.32.252.50>...
> spinoza1111@yahoo.com (Edward G. Nilges) wrote in
> news:f5dda427.0401312028.447bfd18@posting.google.com:
>
> > blmblm@myrealbox.com wrote in message
> > news:<bvdfqm$r3s5l$1@ID-147531.news.uni-berlin.de>...
> >> In article <f5dda427.0401281831.dade6d9@posting.google.com>,
> >> Edward G. Nilges <spinoza1111@yahoo.com> wrote:
> >>
> >> [ big big snip ]
> >>
> >> [ this was me in an earlier post ]
> >> >> > But it is a little disturbing to consider the implications of
> >> >> > the fact that the proofs take place in a universe with integers
> >> >> > and real numbers, while the programs run in a universe with ints
> >> >> > and doubles/floats, which don't quite have the same properties.
> >> >>
> >> >> s/the proofs/some invalid proofs/
> >> >
> >> >No, the guy's point is well taken. You cannot deductively "prove"
> >> >that some clown won't misuse your code.
> >>
> >> If I am the "guy" to whom you refer (where I assume you mean "guy"
> >> as a gender-neutral term), I'm not sure how your comment relates to
> >> what I said. Even if your factorial function came with a disclaimer
> >> that it would only work for inputs N such that N! can be represented
> >> as an int, the proof doesn't look at that aspect, does it? Such
> >> proofs usually don't. That was my point.
> >
> > OK, I understand that int precision controls the absolute validity of
> > the proof. But as hero computer scientist Edsger Dijkstra has
> > pointed-out, programming is APPLIED mathematics.
>
> So why post an invalid proof as an attempt to prove something? Clearly,
Because programming is APPLIED mathematics.
My physics teacher warned us that in the everyday lab, we should not
credit measurements, made with actual, ordinary equipment, to more
than two places of precision. But this did not entail, for him, that
measurements made to this precision were invalid, which seems to be
your contention.
Hero computer scientist Dan McCracken, in Numerical Recipes and
Fortran Programming, was one of the few Fortran writers to warn
programmers about being misled by Fortran's excess precision, because
these early giants had the humility to realize that they are applied
mathematicians.
It appears that computer scientists with heroic exceptions like
Dijkstra and McCracken actually believe that they are pure
mathematicians. They have in this replaced the original joy of
creation, in actual (applied) programming with its anhedonic and
bipolar reverse lest someone upset their ricebowl, in part by foul
disrespect of simple praxis and foul disrespect of its necessary link
with theory.
Dijkstra, in March of 1968, actually invented a technique which
ordinary programmers could use, and when Dijkstra turned his attention
to operating systems, he repeated this accomplishment, for which he
deserved the equivalent of a Nobel prize. This burned the ass of
lesser men in his day and as a result Dijkstra's memory is being
apparently erased.
But having being corrupted by "maturity" (that is, access to money and
power), it now becomes the tasks of academics to instead control the
supply of that information, that wants to be free. This task is
carried out by labeling and using third hand sources to write the
biography of others in an insulting fashion.
> if the proof isn't based on the mathematical behaviour of the axioms from
> which the code is derived then it's not valid. The valid set of values
> for specific types are part of those axioms. If the proof does not
> include these definitions of fundamental code behaviour you've not proved
> anything about the code.
Depends on what you mean by proof, Ian.
I sense that Euclid's concern was equally establishing timeless truths
about lines in the sand, AND communicating a memory of those truths
independent of the vagaries of the sand. But this seems to be
forgotten by modern pure mathematicians, and compsci types who are
such unconscious Platonists that they do not realize that they are the
hired hands of money and power, until their job goes to India, where
sufficient social solidarity means that work gets done.
To me, a proof is necessarily a teaching, even a self-teaching device.
Indeed, that's why I found Willem's proof illuminating...despite the
fact that it's subject to the same precision critique as is mine, a
fact that's being conveniently ignored by the trolls' chorus, which
you have joined against the better angels of your nature.
>
> > This is paradoxical, since Dijkstra had when alive such a reputation
> > as a theorist's theorist, and was so often dismissed (by people like
> > Yourdon who cashed-in on his ideas) as ivory tower.
> >
> > What it means of course is that any proof is "bounded" by its
> > application. No civil engineer asks of the mathematics of
> > bridge-building that it foresee the physical conditions that actually
> > apply, nor do civil engineers reject math because of this limitation.
>
> Do we expect mathematics to foresee? No, that's the engineers job. Model?
> Yes. If when building bridges you decide to pretend it's spanning a
> crater on the Moon instead of over a river on the Earth you're not going
> to have a very good bridge. If you're going to use mathematics to prove
> something (that the code operates as specified, that the bridge operates
> as specified) you model as precisely as sensible. In computing, most of
> the universe is axiomatic and hence there is no excuse not to model it
> correctly.
>
This is false. If hero computer scientist Dijkstra is right, then as
applied math, compsci's universe includes the social world.
This is difficult for a generation of compsci types into whom
antipolitics has been beaten by Thatcher and Reagan, but part of the
80% failure rate of enterprise systems results from denial, and a
forced agreement with the mad woman Margaret Thatcher's "there is no
such thing as society".
To sniff like a maiden aunt, "there is no excuse" is to be in denial
of the reality of computing, for we can open up even "axiomatic" texts
like Numerical Recipes and find unacknowledged stylistic bugs, such as
the idiotic use of a font in which 1 and I are nearly indistinct.
To sniff like a maiden aunt, "there is no excuse" is to ignore that in
supercomputing, Fortran persists and so does the preservation of
Fortran-style errors. If there is no excuse, then why have no funds
been made available for a complete rewrite of large, mission-critical
systems in Ada? My suspicion is that the social mechanism that
followed Bush's idiotic speech about Mars, with the promise to destroy
the Hubble telescope, applies, and its name is the reversal of
enlightenment in the service of money and power.
To sniff like a maiden aunt, "there is no excuse" is to equivocate
over a fissure in computing considered as a social reality. This is
the socioeconomic divide between the elite, which presents the idea of
a computing system as independent of society and history, and indeed
as "axiomatic", and the operationals who must then construct the
non-Platonic reality.
Unless they were to use a RISC machine with unbounded precision
implemented in software, that has access to unbounded virtual memory,
the "mere coders" must use, in the case of numeric precision, a fixed
number of bits per real or integer, and for this reason, ANY axiomatic
proof of their code is similar to a laboratory measurement that is
bounded by common goddamn sense.
You have, like all the members of the troll's chorus, irresponsibly
used third-hand impressions of an argument made, and you have labeled
the application of proof techniques to real code as a "Nilges"
technical foul...despite the fact that applying what Willem knows to
real code is both a teaching and an understanding device!
My conclusion is that academic compsci is now corrupt by a false
promise, that owing to the prestige, the money, and the power,
academic computer scientists may be, like pure scientists, considered
as Platonic temple priestesses and indeed, now, guardians of the
secrets of this particular temple of doom...so that the mere unwashed
do not use them as of old.
To sniff like a maiden aunt, "there is no excuse" is to ignore the
fact that September 11 may have been in many ways a confirmation of
hero computer scientist Dijkstra's dark prediction that industrial and
social organizations may well collapse under the weight of unmastered
complexity. FBI agent Colleen Rowley testified before Congress that
she did not even have buggy Boolean evaluation in the FBI data base,
and, post September 11, our precious Administration is reduced to
speaking darkly of levels of mere stochastic noise as credible threat
levels and as excuses for violations of the Constitution.
Colleen might have, as users have over time, welcomed a Boolean
evaluation tool that ran slowly IF she entered queries, let us say,
longer than 255 characters owing to the use of strlen in for, or one
with bugs she could workaround.
This isn't to defend poor practice or bugs, although I am certain it
shall be re-presented in that way by the Troll's Chorus. It is only to
say that computing is an applied and not a pure science.
It's dollars to donuts that Platonism within MIS at the FBI shitcanned
any simple addition of Boolean queries, for the Platonism of
non-coders causes them to yearn for something not made of code by
programmERs. This newsgroup, Richard tells us, has nothing to do with
humanity, and the merely human is shown the door.
Our leaders of "homeland security" speak of stochastic noise because
although there is "no excuse" in your twittering axiomatic world,
somehow they don't have the tools to Constitutionally defend against
threats, or avoid angering poor men by lazily letting Israeli and
Pakistani thugs do their dirty work.
This is because compsci types, being apolitical, are very good at
creating operating systems without even getting paid, but no good at
all in seeing to it that real systems meet the needs of stakeholders,
contextualized in society.
Instead they create systems by means of which they themselves are
deprived of retirement as at IBM and which allowed Enron to fabricate
companies at warp speed.
Like it or not, I use recursion, for example to design test data for
zero records, one record, and n+1 record. And in an on-topic manner I
have narrated this experience on this newsgroup only to find that
what's ontopic is negativity and foul disrespect.
My next stunt in fact shall be to post a free regular expression
explainer and I shall be amused by the resulting brou ha ha.
> <snip the rest>
>
> Ian Woods
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/2/2004 4:38:43 AM
|
|
Richard Heathfield <dontmail@address.co.uk.invalid> wrote in message news:<bvibr4$i6p$1@titan.btinternet.com>...
> [I have snipped the vast majority of Mr Nilges's article because, as usual,
> the vast majority of Mr Nilges's article has nothing to do with this
> newsgroup.]
>
> Edward G. Nilges wrote:
>
> >> > My understanding is that usenet posting is publication and for this
> >> > reason, to publish a source and to narrate your opinion of his
> >> > behavior isn't libel under USA or applicable international law.
> >>
> >> Strange, you seem to have the opposite opinion of others that post
> >> about you to Usenet.
> >
> > It's not a symmetrical situation.
>
> Mr Nilges frequently posts defamatory (and grossly offensive) comments about
> regular contributors to this group. On the other hand, he has yet to show
> that anyone has defamed him.
This is absurd. Even a cursory reading shows GROSSLY defamatory
attacks which you incite.
>
>
> > I made a constructive, on-topic and
> > popular contribution to comp.programming in December 2000 in the form
> > of a book review. Chris Sonnack then asked me to post code in May 2002
> > which I did in order to show that in C, you have to waste time in
> > constructing rather fragile UDTs to solve real problems.
>
> It is never necessary to construct fragile UDTs in C - unless, I suppose,
> one is incapable of writing robust ones, in which case a more forgiving
> language might be more appropriate for that person than C.
ANY udt can be referenced freely within its run unit in the C language
as long as it is declared in open code. Within the UDT, there is NO
distinction between public and private variables in the default case.
This means that if you consider your wonderful C program responsibly
and professionally, not as a single text but as a member of a class of
related but changing texts, it is at any time open to a change which
makes the program completely dependent on the way you've represented
the problem.
ALL udts are for this reason fragile.
This is something that is known: it is not my opinion.
You want to be trusted, to have your mental picture supplement the
udt, because this is job security. This is an illusion because a
sufficiently sharp and/or hungry programmer can reconstruct your
mental property in an hour.
Richard, please tell me why the languages perl, Java, Eiffel and ADA
were all developed, were it not for the deficiencies of C?
>
> > Chris then initiated a Fascist campaign
>
> That's not true.
>
> > in which he used the structure
> > of the medium of to amplify one error, corrected the evening it was
> > made, and "errors" consisting in the fact that I'm a literate C
> > programmer and for this reason use longer identifiers, Hungarian
> > notation, and am reluctant to create excess temporary variables...when
> > the loop length is pragmatically bounded.
>
> Mr Nilges has spoken out in the past against arbitrary limits on string
> lengths. If his code is nonetheless to impose such arbitrary limits, the
> fact ought to be mentioned in his documentation (which it was not).
Your attempt to suspend common sense works only with clowns who rely
on third hand accounts, like Ian. And if to call him a clown is harsh,
I can only say that I am sick to death of the way in which
professional and responsible people somehow feel empowered to rely on
tertiary sources in this play-pen.
The program in question read the string from the console. Common sense
in an applied science tells us that this is an implicit and a
pragmatic limitation.
You cannot document a program fully in the real world for there will
be of necessity a set of shared assumptions.
>
> Furthermore, temps are cheap. Mr Nilges ought to know this.
Yeah, and they're getting cheaper in this job market :-).
Ever hear of the death from a thousand cuts? Just as perfectly
cost-effective semiconductor fabrication, using certain wash formulae,
can destroy a water table when scaled up, temps are NOT cheap when you
scale up to a real program.
Have you ever written a large program in C, or do you just sit around
blasting away at solidarity and common sense?
>
>
> > Strange. Richard Heathfield has never coherently defended his
> > interpretation of the ng charter.
>
> No need. The meaning of the comp.programming charter is plain for all to
> see.
>
Yeah, especially if it's in huge posters, with your face and
accompanied by the words "let me be your Big Brother".
> >> If you were not incapable of explaining your positions such that
> >> others would agree with you more often than not, you would not
> >> feel put upon by the "elite" of which you desire to be a member.
> >
> > The "others" of whom you speak are a set with cardinality so small as
> > to be meaningless: for paradoxically, the very size of cyberspace
> > means that your attention narrows only to a repeated working set of
> > n<10 posters: Richard Heathfield, Chris Sonnack, yourself, and about
> > seven others.
>
> Is that so surprising? Few people have much patience for Mr Nilges's
> nonsense, and so they don't bother to read any of it (or, at least, don't
> bother to reply to it).
>
Counsel rests, m'lud. Counsel takes a leak: Counsel, m'lud, is going
to the King's Arms for a Guiness.
Not only does this vanishingly small, indeed chamber sized, Troll's
Chorus use tertiary sources, it does not read things in full and
instead wastes bandwidth in a fashion that would be actionable, if it
were not so amusing.
>
> > Cudgel thy brains. You have, when you look at the discussion tree, no
> > realistic way to assess properly the size of the total set including
> > lurkers. Furthermore, you are just confused, and were meant to be
> > confused, by Richard Heathfield's almost mechanistic replication of
> > the same small "working set" of unsupported and unsupportable claims.
>
> I am prepared to support any claim I have made on this newsgroup that Mr
> Nilges thinks is unsupported. Mr Nilges cannot say the same thing with any
> accuracy.
Gee, we're all so very grateful for this lordly assurance. It's
something that should be printed on packets of fags for our hands when
idle.
>
> > For three years, Richard has posted the same false claim: that this ng
> > is for the discussion of abstract algorithms and may not discuss
> > programmERS.
>
> The charter does not explicitly exclude discussions about programmers, any
> more than it explicitly excludes discussions about soap flakes or peanut
> butter. Nevertheless, it does not explicitly /sanction/ such discussions.
> Therefore, they are off-topic.
LET ME BE YOUR BIG BROTHER - British advertising slogan, around 1947
and when Orwell was about the shop.
Where's your common sense? There are, at best, n>1 "links" between
"soap flakes" and programming. Sure, if you get fired from your
current position, for posting disrespect on company time, you might
land a job with a manufacturer of soap flakes, always assuming your
nook-shotten isle still manufactures soap flakes. But from "soap
flakes" to "programming" one has to transition at least one node,
labeled in this case "Dickie Heathfield is working at Imperial Soap
Flakes Manufactures, in East Tooting".
Whereas how many nodes are needed between the pure idea of a
programmer, sitting working we hope on programming in his blasted
cube, and programming? Cudgel thy brains: the answer is ZERO.
Of course, the programmer might buy a house. But this doesn't license
us to talk about his blasted house, not because "house" is irrevelant
considered merely as a keyword, but because of the shape of the
conceptual graph. If he constructs his house using a C model (and it
doesn't fall about his ears owing to the deviant choice of language),
why then this application causes the graph to loop back to
programming, and the chap is ON TOPIC!
Thus, if EGN builds a marvelous, if not brilliant, chain of signifiers
from programming to Derrida's theories of the primacy of speech over
writing, Nilges is indeed off topic: unless, as is the case usually,
he then executes a marvelous leap back, like a dancer, to the subject
of programming.
Get it yet, mate?
>
> > He does so in such a dreary, mechanistic fashion that I
> > have speculated that he's being paid by a corporation or government
> > agency as an anti-union agent, since the effect of his attacks is to
> > destroy solidarity.
>
> /That/, on the other hand, is an example of a false and unsupportable claim.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/2/2004 5:00:48 AM
|
|
Edward G. Nilges wrote:
> Richard Heathfield <dontmail@address.co.uk.invalid> wrote in message
> news:<bvibr4$i6p$1@titan.btinternet.com>...
>> [I have snipped the vast majority of Mr Nilges's article because, as
>> [usual,
>> the vast majority of Mr Nilges's article has nothing to do with this
>> newsgroup.]
>>
>> Edward G. Nilges wrote:
>>
>> >> > My understanding is that usenet posting is publication and for this
>> >> > reason, to publish a source and to narrate your opinion of his
>> >> > behavior isn't libel under USA or applicable international law.
>> >>
>> >> Strange, you seem to have the opposite opinion of others that post
>> >> about you to Usenet.
>> >
>> > It's not a symmetrical situation.
>>
>> Mr Nilges frequently posts defamatory (and grossly offensive) comments
>> about regular contributors to this group. On the other hand, he has yet
>> to show that anyone has defamed him.
>
> This is absurd. Even a cursory reading shows GROSSLY defamatory
> attacks which you incite.
Perhaps Mr Nilges would be so kind as to provide evidence to support this
unlikely-sounding assertion.
>> > I made a constructive, on-topic and
>> > popular contribution to comp.programming in December 2000 in the form
>> > of a book review. Chris Sonnack then asked me to post code in May 2002
>> > which I did in order to show that in C, you have to waste time in
>> > constructing rather fragile UDTs to solve real problems.
>>
>> It is never necessary to construct fragile UDTs in C - unless, I suppose,
>> one is incapable of writing robust ones, in which case a more forgiving
>> language might be more appropriate for that person than C.
>
> ANY udt can be referenced freely within its run unit in the C language
> as long as it is declared in open code. Within the UDT, there is NO
> distinction between public and private variables in the default case.
If one wishes to conceal the implementation of a C ADT (or UDT, as you call
it), it's trivial so to do. If one doesn't wish to, one doesn't have to -
it's a choice.
> This means that if you consider your wonderful C program responsibly
> and professionally, not as a single text but as a member of a class of
> related but changing texts, it is at any time open to a change which
> makes the program completely dependent on the way you've represented
> the problem.
All programs, in all languages, can be changed if the source code is
available. There's nothing remarkable about this.
> ALL udts are for this reason fragile.
Not when written by a skilled programmer and used in a controlled
environment.
> This is something that is known: it is not my opinion.
It's still wrong.
> You want to be trusted, to have your mental picture supplement the
> udt, because this is job security. This is an illusion because a
> sufficiently sharp and/or hungry programmer can reconstruct your
> mental property in an hour.
I don't see any relevance whatsoever in this paragraph.
> Richard, please tell me why the languages perl, Java, Eiffel and ADA
> were all developed, were it not for the deficiencies of C?
The same reason most languages are invented: to scratch an itch.
>> Mr Nilges has spoken out in the past against arbitrary limits on string
>> lengths. If his code is nonetheless to impose such arbitrary limits, the
>> fact ought to be mentioned in his documentation (which it was not).
>
> Your attempt to suspend common sense works only with clowns who rely
> on third hand accounts, like Ian.
Mr Nilges appears to be retreating from his position that arbitrary limits
on string lengths are bad. This is a shame, since it was one of the few
cases where he wasn't actually wrong.
> And if to call him a clown is harsh,
> I can only say that I am sick to death of the way in which
> professional and responsible people somehow feel empowered to rely on
> tertiary sources in this play-pen.
I have frequently provided links to the original sources in discussions like
these, and anyway, Google Groups is there for all to search.
> The program in question read the string from the console. Common sense
> in an applied science tells us that this is an implicit and a
> pragmatic limitation.
I quite often read lines hundreds, if not thousands, of characters long,
from the "console", using file redirection. Mr Nilges may not be aware of
this technique.
> You cannot document a program fully in the real world for there will
> be of necessity a set of shared assumptions.
This at least is reasonable; for example, anyone running a Nilges program
may assume it will run slowly.
>> Furthermore, temps are cheap. Mr Nilges ought to know this.
>
> Yeah, and they're getting cheaper in this job market :-).
For a troll, that was actually quite funny.
> Ever hear of the death from a thousand cuts? Just as perfectly
> cost-effective semiconductor fabrication, using certain wash formulae,
> can destroy a water table when scaled up, temps are NOT cheap when you
> scale up to a real program.
Oh, but they are. It's certainly a lot cheaper to save a string length than
to recalculate it ad nauseam.
> Have you ever written a large program in C, or do you just sit around
> blasting away at solidarity and common sense?
Yes.
>> > Strange. Richard Heathfield has never coherently defended his
>> > interpretation of the ng charter.
>>
>> No need. The meaning of the comp.programming charter is plain for all to
>> see.
>>
> Yeah, especially if it's in huge posters, with your face and
> accompanied by the words "let me be your Big Brother".
No need for dystopian visions here. Those who wish to talk about things
other than programming can use *other newsgroups*. There are tens of
thousands of newsgroups, each with a different topic. It shouldn't be
difficult to find one which welcomes the kinds of discussions in which one
wishes to participate, no matter what the subject.
<snip>
> Not only does this vanishingly small, indeed chamber sized, Troll's
> Chorus use tertiary sources, it does not read things in full and
> instead wastes bandwidth in a fashion that would be actionable, if it
> were not so amusing.
There is no Troll's Chorus. The original sources are there for all to read.
Nobody with a whit of common sense reads every single line of every single
article posted by a troll. And the biggest waster of bandwidth around here
is Mr Nilges himself.
>> > Cudgel thy brains. You have, when you look at the discussion tree, no
>> > realistic way to assess properly the size of the total set including
>> > lurkers. Furthermore, you are just confused, and were meant to be
>> > confused, by Richard Heathfield's almost mechanistic replication of
>> > the same small "working set" of unsupported and unsupportable claims.
>>
>> I am prepared to support any claim I have made on this newsgroup that Mr
>> Nilges thinks is unsupported. Mr Nilges cannot say the same thing with
>> any accuracy.
>
> Gee, we're all so very grateful for this lordly assurance. It's
> something that should be printed on packets of fags for our hands when
> idle.
I note that Mr Nilges still fails to assure us that he'll back up his
statements when requested. Of course, he can't, can he?
> Where's your common sense?
Right where it always was.
<offensive misuse of my name snipped>
Mr Nilges does not like his name to be misused, yet he refuses to extend the
same courtesy to others.
> Whereas how many nodes are needed between the pure idea of a
> programmer, sitting working we hope on programming in his blasted
> cube, and programming? Cudgel thy brains: the answer is ZERO.
The number of "nodes" is utterly irrelevant. The fact remains that
"programmer" and "programming" are different subjects.
> Of course, the programmer might buy a house. But this doesn't license
> us to talk about his blasted house,
No, it doesn't. Having said that, Mr Nilges has wasted far more of
comp.programming's time nattering on about that house than the OP ever
wasted posting the original article.
> Thus, if EGN builds a marvelous, if not brilliant, chain of signifiers
> from programming to Derrida's theories of the primacy of speech over
> writing, Nilges is indeed off topic: unless, as is the case usually,
> he then executes a marvelous leap back, like a dancer, to the subject
> of programming.
>
> Get it yet, mate?
I am not Mr Nilges's mate. It is clear from his response that he completely
fails to comprehend the concept of topicality.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
2/2/2004 7:44:25 AM
|
|
In article <f5dda427.0402012100.24ff90f5@posting.google.com>, spinoza1111
@yahoo.com says...
> > Mr Nilges frequently posts defamatory (and grossly offensive) comments about
> > regular contributors to this group. On the other hand, he has yet to show
> > that anyone has defamed him.
>
> This is absurd. Even a cursory reading shows GROSSLY defamatory
> attacks which you incite.
You might want to look up the definition of defamatory, then show that
such comments you are referring to are demonstrably untrue. Otherwise,
they're simply spot on descriptions of your behavior and writings
which you happen to not like very much.
> > It is never necessary to construct fragile UDTs in C - unless, I suppose,
> > one is incapable of writing robust ones, in which case a more forgiving
> > language might be more appropriate for that person than C.
>
> ANY udt can be referenced freely within its run unit in the C language
> as long as it is declared in open code. Within the UDT, there is NO
> distinction between public and private variables in the default case.
You *really* should look up ADT's and call us back once you understand
their implementation and interface characteristics. The problem you
are worried about was solved for all intents and purposes at least
a quarter century ago.
> Richard, please tell me why the languages perl, Java, Eiffel and ADA
> were all developed, were it not for the deficiencies of C?
Probably for the same reason that Intercal, malboge, brainf$%^, ruby,
python, Fortran, Pascal, and numerous others were. Somebody wanted to
write a new language. Ipso facto.
> > Mr Nilges has spoken out in the past against arbitrary limits on string
> > lengths. If his code is nonetheless to impose such arbitrary limits, the
> > fact ought to be mentioned in his documentation (which it was not).
>
> Your attempt to suspend common sense works only with clowns who rely
> on third hand accounts, like Ian. And if to call him a clown is harsh,
> I can only say that I am sick to death of the way in which
> professional and responsible people somehow feel empowered to rely on
> tertiary sources in this play-pen.
Strange, you spew forth an almost uninterrutible string of third-hand
sources (usually in the form of quotations from other areas which are
tangential at best), yet you are sick to death of it. So am I. Please
stop it. Make your points, on your own, without constantly resorting to
misapplied quotations to artificially inflate your already dangerously
overstuffed ego.
Note to others: Nilges' phrase of the week is "tertiary sources",
coming soon in high repetition to a thread near you.
> You cannot document a program fully in the real world for there will
> be of necessity a set of shared assumptions.
The most obvious ones however, such as "Well, this program has
horrendous run-time performance if used for arbitrarily large strings"
does not seem too much to ask, even from an amateur.
> > Furthermore, temps are cheap. Mr Nilges ought to know this.
>
> Yeah, and they're getting cheaper in this job market :-).
Actually, it has more to do with RAM prices and CPU register sets, but
I wouldn't expect you to know that.
> temps are NOT cheap when you scale up to a real program.
Actually they are, unless you are fond of declaring them all global.
> Not only does this vanishingly small, indeed chamber sized, Troll's
> Chorus use tertiary sources,
[Note to reader: I told you]
> it does not read things in full and
> instead wastes bandwidth in a fashion that would be actionable, if it
> were not so amusing.
You love the idea of suing people, but not having sufficient financial
wherewithal to even consult with an actual attorney (evidenced by your
obvious cluelessness with respect to legal actions) makes that just a
distant dream. Hint: If you want to sue someone for wasting bandwidth,
start with the alt.sex.* hierarchy. Once you get that cleaned up, then
head over to the alt.binaries.* hierarchy, etc., etc. It should take
you about 40 years to make any dent in the much larger bandwidth
consumption elsewhere, by which time it won't matter any longer.
> > I am prepared to support any claim I have made on this newsgroup that Mr
> > Nilges thinks is unsupported. Mr Nilges cannot say the same thing with any
> > accuracy.
>
> Gee, we're all so very grateful for this lordly assurance.
Yet you fail to make a counter claim, so you're just handwaving in an
failed attempt to concealed your inability to argue convincingly.
> Where's your common sense?
This is tantamount to Geoffrey Dahmer asking "where's your sense of
decency?". The level of denial in EGN's posts is staggering.
> Thus, if EGN builds a marvelous, if not brilliant, chain of signifiers
> from programming to Derrida's theories of the primacy of speech over
> writing, Nilges is indeed off topic: unless, as is the case usually,
> he then executes a marvelous leap back, like a dancer, to the subject
> of programming.
Arrogance is futile here Nilges, we aren't drinking the kool-aid.
--
Randy Howard
2reply remove FOOBAR
"I admit that it is probably too much work ... to wade through
my prose to get to anything useful." -- Edward G. Nilges
|
|
0
|
|
|
|
Reply
|
randyhoward (3272)
|
2/2/2004 8:42:06 AM
|
|
Richard Heathfield wrote:
> Mr Nilges appears to be retreating from his
> position that arbitrary limits on string lengths are bad.
The C standard's definition of the return value of printf,
implies that string lengths can't excede INT_MAX.
--
pete
|
|
0
|
|
|
|
Reply
|
pfiland (6613)
|
2/2/2004 11:54:50 AM
|
|
Noah Roberts <nroberts@dontemailme.com> wrote:
> You definitely a white boy
That would explain my love of playing that funky music.
> since the background of your message is a
> most decidedly white color. In fact, all I see here are white people!
> What a racist newsgroup!
That's odd, for me, the background is a pale yellow. So we all either have
Jaundice or Heppatitis, or we're all Chinese.
Bill, aka fu manchu.
|
|
0
|
|
|
|
Reply
|
bill-godfrey2 (139)
|
2/2/2004 12:03:14 PM
|
|
pete wrote:
) Richard Heathfield wrote:
)
)> Mr Nilges appears to be retreating from his
)> position that arbitrary limits on string lengths are bad.
)
) The C standard's definition of the return value of printf,
) implies that string lengths can't excede INT_MAX.
Nope, it implies that printf will only return correct values for string
lengths below INT_MAX. Or wasn't that the bit you were referring to ?
It could imply that printf can't handle strings with lengths beyond
INT_MAX, but I'd have to look at the C standard for that, instead of the
first random manpage on printf.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
2/2/2004 12:35:19 PM
|
|
Bill Godfrey wrote:
> Noah Roberts <nroberts@dontemailme.com> wrote:
>
> > You definitely a white boy
>
> That would explain my love of playing that funky music.
>
> > since the background of your message is a
> > most decidedly white color. In fact, all I see here are white
> > people! What a racist newsgroup!
>
> That's odd, for me, the background is a pale yellow. So we all
> either have Jaundice or Heppatitis, or we're all Chinese.
Around here it is yellow text on a blue background. We must be on
the Mars envisioned by Edgar Rice Burroughs, or at a football (US)
game watching nutty fans. Other places show amber on black, which
puts all users in or descended from Africans.
--
Chuck F (cbfalconer@yahoo.com) (cbfalconer@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!
|
|
0
|
|
|
|
Reply
|
cbfalconer (19183)
|
2/2/2004 3:25:37 PM
|
|
pete <pfiland@mindspring.com> wrote in message news:<401E3A8A.34E6@mindspring.com>...
> Richard Heathfield wrote:
>
> > Mr Nilges appears to be retreating from his
> > position that arbitrary limits on string lengths are bad.
>
> The C standard's definition of the return value of printf,
> implies that string lengths can't excede INT_MAX.
My position is that they can be improved: it's a stretch to say this
is equivalent to "bad".
C's defective string model imposes an unreasonable requirement on
short strings.
Basically, Richard is attempting to create a "data smog" consisting of
oversimplifications of texts that no-one then bothers to consult, and
result is a discourse "cascade" of Gadarene proportions, in which the
demon-haunted swine follow the cascade over the cliff. It's not a
pretty sight.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/2/2004 5:20:28 PM
|
|
jdallen2000@yahoo.com (James Dow Allen) wrote in message news:<266426e1.0401312313.7889978e@posting.google.com>...
> spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0401311946.16b2150a@posting.google.com>...
> > > Hardly. I insist upon female company for such matters. YMMV.
> >
> > Homophobia is unattractive.
>
> No one was homophobic. (If he said he preferred male company
> would you accuse him of heterophobia?)
>
> > This is because when I do make a contribution, my reward is to be
> > collectively trolled. Furthermore, I can get paid for code, so why
> > should I throw pearls before swine?
>
> I try to post here only on technical matters, and confine my ad hominen
> attacks to more appropriate newsgroups like alt.idiot.william_safire.
> But as an impartial observer, I will comment on the one Nilges thread
> where I participated.
>
> In that thread, Nilges explained that he knew nothing of Unix, but
> reposted his incorrect theory of Unix several times, despite being
> corrected several times. Talk about "pearls before swine"!
This is a complete distortion. I said I wasn't a unix expert nor,
today, a regular user. But a binarism leads you to presume that one is
either a total "expert" or else a newbie and as such unqualified to
speak.
This oversimplification of course ignores several intermediate
possibilities. I might be a FORMER user of unix (which is in fact the
case). Or I might be a low or intermediate skill user of unix.
However, in typical corporate rhetoric, a sort of "grade inflation"
demands that the regular tech user must insist that he of course is an
"expert".
"Expertise" becomes hegemonic, and monadic.
It becomes in the rhetoric hegemonic since it must insist for job
security that it exhausts all possibilities and is maximal. Thus MOST
programmers will necessarily insist (in a laissez-faire context in
which they lack solidarity with their fellows) that his praxis is
end-historical and cannot be improved.
He must replace the humble expression of gaps in his actual knowledge
with its feudalized ersatz where, instead of admitting his practice
deficient, he will perform submissive gestures towards a "guru".
Expertise becomes monadic since a false professional courtesy means
that no expert on platform X can speak about another platform, because
he's not an "expert" in that platform. The result is that managers,
who have to be experts in the sense that they must choose between
platforms, use exclusively financial models in choosing platforms.
The result in my experience is that managers, when choosing to replace
a platform, almost savagely seem to ignore the technical requirements
of their operationals, as when a functioning (but expensive) Solaris
system has to be replaced by Windows 2000.
The debate becomes curiously abstract. The manager wants to convert
because an abstract financial analysis tells him he should. The tech
wants to stay because in fact the software won't even compile, without
modification, on Windows.
Both talk past each other because the tech can't "quantify" the
conversion, and because the manager in the employment relationship has
to suspect the tech of simply goofing off, and wanting to stay with
technology he knows.
A responsible comparative statement about C, such as my quiet
statement that it might be out of date, is caricatured as mere opinion
because the only game in town is maintaining job security.
>
> I'm beginning to understand why newsgroup regulars have become exasperated.
>
> James
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/2/2004 5:31:08 PM
|
|
Willem wrote:
>
> pete wrote:
> ) Richard Heathfield wrote:
> )
> )> Mr Nilges appears to be retreating from his
> )> position that arbitrary limits on string lengths are bad.
> )
> ) The C standard's definition of the return value of printf,
> ) implies that string lengths can't excede INT_MAX.
>
> Nope,
> it implies that printf will only return correct values for string
> lengths below INT_MAX. Or wasn't that the bit you were referring to ?
That was it.
Upon further reflection, I think it just implies that printf
shouldn't be used when the number of characters printed would
excede INT_MAX.
It's bad to use a function in a situation, where it can't do,
what the standard says it has to do.
--
pete
|
|
0
|
|
|
|
Reply
|
pfiland (6613)
|
2/2/2004 6:09:38 PM
|
|
In article <f5dda427.0402020920.48843aa5@posting.google.com>, spinoza1111
@yahoo.com says...
> pete <pfiland@mindspring.com> wrote in message news:<401E3A8A.34E6@mindspring.com>...
> > The C standard's definition of the return value of printf,
> > implies that string lengths can't excede INT_MAX.
>
> C's defective string model imposes an unreasonable requirement on
> short strings.
There is nothing that says a given implementation can't support
arbitrarily large values of INT_MAX, AFAIK. I've yet to hear
of a situation in which a single string had to be so long that
printf() couldn't handle it. If it did come up, treating the
"string" as a binary blob of length size_t should solve the
issue. If size_t can't hold it, you need a new computer.
--
Randy Howard
2reply remove FOOBAR
"I admit that it is probably too much work ... to wade through
my prose to get to anything useful." -- Edward G. Nilges
|
|
0
|
|
|
|
Reply
|
randyhoward (3272)
|
2/2/2004 6:34:33 PM
|
|
pete wrote:
> Richard Heathfield wrote:
>
>> Mr Nilges appears to be retreating from his
>> position that arbitrary limits on string lengths are bad.
>
> The C standard's definition of the return value of printf,
> implies that string lengths can't excede INT_MAX.
No, it doesn't.
The C Standard's definition of printf implies that one should not use the
printf function for printing /any/ string longer than 4095 characters (for
C99). I believe the limit for C90 is 509. That doesn't mean strings can't
be longer than that; it only means that those are the minimum lengths that
printf (or, rather, fprintf) is required to support.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
2/2/2004 6:42:52 PM
|
|
Edward G. Nilges wrote:
> pete <pfiland@mindspring.com> wrote in message
> news:<401E3A8A.34E6@mindspring.com>...
>> Richard Heathfield wrote:
>>
>> > Mr Nilges appears to be retreating from his
>> > position that arbitrary limits on string lengths are bad.
>>
>> The C standard's definition of the return value of printf,
>> implies that string lengths can't excede INT_MAX.
(pete's argument about printf is faulty. See other reply.)
>
> My position is that they can be improved:
How?
> it's a stretch to say this is equivalent to "bad".
>
> C's defective string model imposes an unreasonable requirement on
> short strings.
What is that unreasonable requirement?
> Basically, Richard is attempting to create a "data smog" consisting of
> oversimplifications of texts that no-one then bothers to consult,
If Mr Nilges wishes us to consult the original articles to which he refers,
he need only provide the relevant message IDs.
<snip>
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
2/2/2004 6:45:04 PM
|
|
In article <f5dda427.0402020931.61d39ab@posting.google.com>, spinoza1111
@yahoo.com says...
> jdallen2000@yahoo.com (James Dow Allen) wrote in message news:<266426e1.0401312313.7889978e@posting.google.com>...
> > In that thread, Nilges explained that he knew nothing of Unix, but
> > reposted his incorrect theory of Unix several times, despite being
> > corrected several times. Talk about "pearls before swine"!
>
> This is a complete distortion.
No, it's a fairly accurate, but brief summary, something you are
obviously not familiar with either of in your own writing.
> I said I wasn't a unix expert nor, today, a regular user. But a
> binarism leads you to presume that one is either a total "expert" or
> else a newbie and as such unqualified to speak.
Your comments in that thread were incorrect, from the outset. You
were corrected by at least half a dozen people, yet you continued
to repeat your false perceptions for quite some time afterward.
This is not something unexpected from you, by any stretch.
> This oversimplification of course ignores several intermediate
> possibilities. I might be a FORMER user of unix (which is in fact the
> case).
Just proof of the saying that UNIX is highly selective about who it
makes friends with. Although, I'll admit that I'm not past believing
that you have forgotten a great deal about UNIX, after all, your
memory has been wanting in a lot of areas lately, not just that one.
> Or I might be a low or intermediate skill user of unix.
Without question.
> However, in typical corporate rhetoric, a sort of "grade inflation"
> demands that the regular tech user must insist that he of course is an
> "expert".
Nobody but you calls themselves an expert here about anything, IIRC.
You are the only self-appointed egotistical megalomaniac currently
inhabiting the group.
> that his praxis is
Did you forget to use "here computer scientist", "n>1" and "tertiary
source" this time?
> A responsible comparative statement about C, such as my quiet
> statement that it might be out of date, is caricatured as mere opinion
> because the only game in town is maintaining job security.
False. It was characterized as a troll. What about those of us for which
job security is not a concern, period? What is your illogical conclusion
for that case?
--
Randy Howard
2reply remove FOOBAR
"I admit that it is probably too much work ... to wade through
my prose to get to anything useful." -- Edward G. Nilges
|
|
0
|
|
|
|
Reply
|
randyhoward (3272)
|
2/2/2004 7:27:17 PM
|
|
In article <MPG.1a885435204a5f72989685@news.verizon.net>,
randyhoward@FOOverizonBAR.net says...
> In article <f5dda427.0402020920.48843aa5@posting.google.com>, spinoza1111
> @yahoo.com says...
> > pete <pfiland@mindspring.com> wrote in message news:<401E3A8A.34E6@mindspring.com>...
> > > The C standard's definition of the return value of printf,
> > > implies that string lengths can't excede INT_MAX.
> >
> > C's defective string model imposes an unreasonable requirement on
> > short strings.
>
> There is nothing that says a given implementation can't support
> arbitrarily large values of INT_MAX, AFAIK. I've yet to hear
> of a situation in which a single string had to be so long that
> printf() couldn't handle it.
What the heck am I thinking? This is of course completely wrong.
I was thinking of arbitrary string lengths, not the length of
them that could be passed to printf(), despite what I wrote
above. Sorry.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randyhoward (3272)
|
2/2/2004 8:35:03 PM
|
|
"Edward G. Nilges" wrote:
> Chris Sonnack then asked me to post code in May 2002...
Good God, man! Are you still licking wounds that are almost two
years old? Don't you know that if you keep licking it, it will
never heal?
> Chris [...] used the structure of the medium of to amplify one
> error, corrected the evening it was made,
You keep repeating this lie, I presume, in the hopes someone will
eventually believe it. And this despite the easily and widely
available archived record. Because I have a few moments to play,
let's take a stroll down memory lane...I find, in my own dusty
archives some snippets worth a smile or three [editorial comments
in the usual square brackets]:
For those not interested in the stroll, but would like to see Ed's
lies exposed, skip down to [[NOW IT GETS INTERESTING...]]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Thu, 06 Jun 2002 09:57:36
> The political problem of malloc...
The "political problem of malloc"?!?!
Bwa-ha-ha-ha-ha....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Thu, 06 Jun 2002 16:06:34
> Civis Romanus sum: I have no desire to be coded as a monster who
> is off topic for the sake of being off topic, for the simple reason
> I am not.
In this corner, you're coded as a one-note kook who's still stewing
over past hurts.
[And nearly two years later, nothing's changed.]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 14 Jun 2002 12:17:24
Besides, Richard's contributions to these groups are considerable
and valuable and time-tested. And what I've seen of his code
indicates a skilled and professional programmer.
So far, your batting averages suck and we've seen no code.
^^^^^^^^^^^^^^^^^^^^^^^
[Here's the first request for code.]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 14 Jun 2002 13:13:30
> ..............for in the period 1984..1995 I wrote thousands of
> lines of C and assisted Princeton mathematician John Nash with C.
Let's see one. You appear to claim notable skill... let's see one
of your better efforts. Are you willing to undergo some peer review?
[Again a request, and NOTE that I explicitly asked you if you were
willing to undergo peer review! Four days later we get our first
taste of code (see below).]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Tue, 18 Jun 2002 16:59
> But here's some code.
>
> Dim objPowerString As New powerString
> objPowerString.value = strInstring
> MsgBox("The tenth word: " & objPowerString.Word(10))
> objPowerString = Nothing
>
> Contrast C.
>
> #define MAXSTRING 1024
> int str[];
> str = malloc(MAXSTRING);
> if { str == NULL } bombOut("Cannot get storage\n");
> ...code to parse...
> printf("The tenth word: ...
> free(str);
A very, very--even extra-ordinarily--poor example. Here's what
might be a more fair and accurate comparison (note the one-to-one
correspondence):
PowerString* ps = PowerString_Create ();
ps->Parse (strInstring);
printf ("The tenth word is: %s\n", ps->GetWord(10));
PowerString_Destroy (ps);
Note that in both cases, the meat is in the PowerString code.
Note in both cases, allocation is up to the PowerString code.
Note in both cases, "Look, Ma, no string limits!"
Note in both cases: nearly identical *use* semantics.
[Note also the inclusion of *some* error handling in his C example,
but not in the VB example, which makes the comparison even less apt.
Below is a question Ed never answered...]
> Oh, and there's also the little matter of null termination.
Do you know what a BSTR is? You should. You've been using them
for many years...
[Speaking of questions never answered,...]
We're just waiting for you to support your claim that malloc/free
is more dangerous than, say, new/delete.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Tue, 18 Jun 2002 18:20:17
>> Note that you can do the same silly thing with delete.
>
> Not with object delete since the name of the object cannot be
> converted to an address and manipulated by silly bastards in
> a future modification of the text.
Wrong.
anObject* p = new anObject[10];
++p
delete p; // KA-most-assuredly-BOOM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 21 Jun 2002 14:50:33
>>>>> Because in C I wrote a string tool...
So why did you post that VB thing? I wanna see your stunningly
elegant C code, Ed.
[...]
> My C code is stunningly elegant when I am up to speed.
Let's see some of that stunningly elegant C code, Ed.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Oh, remember this one? This was fun. Ed suggested that 64 bits
for disk addressing would someday be not enough so we should,...
well, read it for yourself...]
Subject; Re: The Data Quality Act
Date; Mon, 24 Jun 2002 16:13:47
>>> Then, in two years, we'll need long long long. Why not bite the
>>> bullet and do all math with unlimited precision, now?
>>
>> I would much rather my disk manager use hardware math and work
>> as fast as possible. There is really no need for unbounded math
>> with a disk manager. Consider that 64 bits gives you the ability
>> to address:
>>
>> 18,446,744,073,709,551,616
>>
>> bytes (or clusters or sectors or whatevers). Seems that should
>> be plenty for any *single* disk to manage, eh?
>
> Not if I want to download feature length movies.
And just how big do you suppose a feature length movie IS? Do you
have ANY feel for just how large the number above is??
[Later I demonstrated the math, picked some absurdly high numbers for
movie size and showed that it would take about 46 thousand YEARS to
fill the disk (with about 262000 of those huge (70406492913664 byte)
movies). And that's with a disk that addresses **bytes** using a
64-bit unsigned number--most address multi-byte clusters.
You'd think any programmer would be familiar with that old story
about the King, the chessboard and the grains of rice....]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Mon, 24 Jun 2002 17:33:47
> Dude, you wanted code. Here is an example.
So I see.
> virtualString is a VB-6 object...
[...I critiqued it, here severely edited. Those interested Go Ogle...]
> It is best viewed in a wide screen to avoid line wrap.
Yet you posted it in a manner that broke lines severely. Even so, I
find it very, very weird that you maintain a careful 71 column line
width in SOME comments, but go hog wild in others as well as in the
code itself.
I note, too, that you complain about maintaining other people's code,
but make no effort to write maintainable code yourself.
I can't say I'm terribly interested in wading through over 3000 lines
of (IMO) badly written code just to offer a critique (mostly because I
assume anything I have to say will fall on blind eyes).
I waste a few bytes with some basic comments.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
First, code style. I'm not going to belabor this, because some of it
is programmer's choice, but I will say that if you worked for me, you
and I would have a long talk about coding style.
One absolute rule of mine is this: source code is for humans; write
for clarity of expression above all else.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Vertical whitespace. Learn it, use it, love it.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I would absolutely require a lot more comments in the code itself.
The lack of comments is one reason I'm not going to bother wading
through the code in any detail.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Nowhere do you document your functions or their parameters.
Nowhere do you document your class, it's methods or members.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I would recommend dropping the cute box comments (usually the sign
of an immature programmer--we all did it until the silliness and
effort of maintaining that crap began to wear).
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Horizontal alignment. Consider this snip:
Private Type TYPstate
strObjectName As String
strFileValue As String
intMaxRAMSize As Integer
' ...
End Type
Compare the clarity of this revision:
Private Type TYPstate
strObjectName As String
strFileValue As String
intMaxRAMSize As Integer
' ...
End Type
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Const GUIDGEN_PRIMARY_LOCATION =
"C:\Program Files\Microsoft Visual Studio\Common\Tools\guidgen.EXE"
So, your code only works if VS is installed? Very Bad!!
And it only works if VS is installed in the default directories?
Worse!!
And what in the world do you need GUIDs in a string manager for
anyway? Surely there was a more portable solution!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
OBJfso As New FileSystemObject ' File system: include Microsoft
' Scripting Runtime to compile
' this
First, the FSO is a real resource pig. Second, you've just made your
code considerably less portable for no reason (basic file i/o methods
would be a better choice, since they are native to VB, and I see
nothing in your code that requires FSO).
Second, what was it you were saying elsethread about how bad non-OOP
languages were due to the shipping requirements?!?!
Third, why are you creating folders? Your mkPageFileSubDir_ method
(why abbreviate make when the name is already long?) creates a paging
file subdir...do you know about Windows temp files and the Windows
temp directory?
[Fourth, it would be--IMO--better design to split file I/O from
the string class. THAT would be just good OOD.]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Don't comment on the obvious. Comment on WHY or something else that
isn't immediately apparent at first glance: [...]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
You seem to write code as you write text: unnecessarily verbose,
tortured and containing too many irrelevancies.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Wed, 26 Jun 2002 16:19:37
[Ed posted his C code string tokenizer...]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Wed, 26 Jun 2002 17:18:36
EGN> while ( intIndex1 < strlen(strInstring) )
RH> This is very poor style. You call strlen on *every* iteration
RH> of the loop.
Ouch! This may come from working in VB where the equivalent call
(Len) is very low overhead due to BSTR containing the size. Still,
good practice would definitely suggest you NEVER call a function
more than you must.
[So we talked about this issue almost two years ago!]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[NOW IT GETS INTERESTING...]]
Subject; Re: The Data Quality Act
Date; Thu, 27 Jun 2002 15:10:57
I spent a hour or so re-writing the C version to what I would
consider good C practice (and per my own style just for example).
In the process I found a SERIOUS bug in the C code. It occurs on
line 131 of the C text, in the main parse function:
[...]
I'm sure you can see the problem. The allocated string has no room
for the trailing nul.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: Thanks for those huge threads!
Date; Fri, 28 Jun 2002 10:15:51
> (2) Dude, you created an apparent riposte to the C and the VB
> comparision essentially by reformatting and relabeling the code.
And it was *expressly* labeled as exactly that.
> Had this been done to commercial source, it would have constituted
> theft. As it happens it was an injury to me because it makes you
> appear as able to devise a competent reply quickly.
I was able to quickly expose the deficiencies of your code, yes. It
wasn't hard. Took maybe an hour (done in bits over an afternoon
filled with meetings and other work).
> I worked hard on the example code.
I thought you claimed it was easy to do.
> You stole that work in order to assert dominance.
Ask your lawyer to explain the concept of "stole" to you.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 11:42:25
>>> You screwed up the line length in your browser.
>>
>> Nope. You did.
>
> Funny. I did not change it from a default.
I'll say it again: Google broke your lines.
[It took effort to convince Ed about the line-wrap problem, let
alone any bugs in his code...]
> If you'd found a bug or a cool improvement, I would have been
> impressed.
Really? Seems like you wiggled around and went into denial and THEN
start throwing up some bizarre legal smokescreen rather than address
things on their technical merits.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 12:33:39
>>> The allocated string has no room for the trailing nul.
>>
>> Sorry for missing this during my own review.
>
> You missed it because you know C and it isn't there.
Sorry, Ed, you're in *serious* denial here. There are two major
bugs in your "parsing" function. The first is exactly what I said
it is, and I'll go over it more carefully for you. [..snip...]
[So, two days later, Ed **denies** he even *has* a bug!]
> You appear not to have done your homework, for if the bug had been
> in the original it would have blown up immediately, and you did not
> bother to test your proposed code scrap.
Guess what, Ed. I loaded your original, unmodified (mod line wrapping)
source into VC++ and it DOES crash reporting:
+--------------------------------------------------+
| DEBUG ERROR! |
| Program: C:\Docs\@\Test\Quick Test\Test-D.exe |
| DAMAGE: after Normal block (#40) at 0x00300150 |
| (Press Retry to debug the application) |
| |
| [Abort] [Retry] [Ignore] |
+--------------------------------------------------+
The bug is real. Your code is broken. It breaks on the very first
non-empty-string use of the words() function in main(). Specifically,
it breaks when words() attempts to free the first returned substring,
BECAUSE it detects that you hosed that substring.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 12:40:18
Incidentally, VC++ has this to say about your source:
C:\Docs\@\Test\Quick Test\nilges_original.c :
(115) warning C4018: '<' : signed/unsigned mismatch
(123) warning C4018: '<=' : signed/unsigned mismatch
(130) warning C4018: '>=' : signed/unsigned mismatch
(293) warning C4100: 'argv' : unreferenced formal parameter
(293) warning C4100: 'argc' : unreferenced formal parameter
The last two are entirely ignorable (and trivially fixed). The
first three are telling you something important. Do you know
what it is and what it means? [Ed never replied.]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[More denial!..]
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 13:00:07
> You cannot universally and in good faith to use "lack of readability"
> as an excuse for your failure to see an nonexistent bug.
As I have clearly shown, the bug is quite real.
I'll now show you the other bug, which is, in some regards, even worse.
I realize your power of denial is very strong, so I'm going to ask you
to try something. I want you to add a *single* line to your version
of your program and run it, and then I want you to come back and tell
us what happened.
[...snip code... Ed never tried this and reported back.]
If this doesn't crash, I'll be very, very surprised. I'll give you
and the rest of the gang a chance to figure out why. The answer is
in the post that replies to this post. I'll give you a huge helping
hint. This will crash:
itempars ("Hello, World, What's happening?", 1, "Z", -1);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Ed calls himself a VB programmer, yet....]
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 13:05:41
> I did not use VB-6 threads.
No one did. They don't exist. There was a complex work-around that
involved an Active-X object. Or you can do what I did once, and drop
down into a dll for simple multi-threading so long as you never refer
back to the VB environment.
> I learned to avoid them in VB-6 because of the inadequate underlying
> implementation.
Repeat: there was NO implementation of threading in VB from 1-6.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 13:58:48
And here we are. How many of you spotted the bug?
[...big snip of detailed explanation...]
Either way you look at it, the code is seriously broken. The breakage
only applies if "parsing" what Ed names 'string delimiting'. If doing
'set delimiting', these bugs aren't hit by program execution.
Two things are noteworthy here.
First, ALWAYS test your code with *bogus* input, NOT just input you
expect to work. Had this code been even lightly tested to see how
it handled simple variations of input, this bug would have been easy
to spot.
Second, ALWAYS check return values from functions if they can return
failure values.
So, Ed. TWO major bugs in the heart of the code. Impressed, yet?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 17:54:38
[I posted the first of several original versions of a string tokenizer
that used completely different designs and trivially "fixed" all Ed's
stated objections to C solutions. Go Ogle if interested. Or you can
see them all, and Ed's original disaster and my rewrites at:
http://www.sonnack.com/Chris/Software/Code/Toking/index2.html
]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Ed still in denial two days later...]
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 18:16:52
> Dude claimed a bug which I have checked out and there is no bug in
> this code:
> [...]
The bug is in the very next line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Finally Ed begins to acknowledge there "may" be a bug...]
Subject; Re: The Data Quality Act
Date; Fri, 28 Jun 2002 18:24:17
> This MAY be a genuine bug.
No MAY about it.
[...]
> I think having written this that you probably ARE wrong, but I am
> going to take your post home. You were certainly wrong on the null
> length issue and at best are 1 for two down.
I'm astounded by your ability to deny basic truth.
If you ever achieve sanity and clarity, you're going to owe me a very
*large* public apology.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Finally, four days later, Ed acknowledges (NOT FIXES)...]
Subject; Re: The Data Quality Act
Date; Sun, 30 Jun 2002 23:24:16
> OK. It appears that the malloc needed to malloc one more byte.
Yes.
> Chris is probably one for two since I believe a null string with a
> string delim is handled.
I'm afraid the other bug still exists. It has to do with what happens
with you "parse" a string using string delimiting, but the string has
no delimiter present.
Add this stand-alone code block to your main() function and see what
happens. This code block reveals both errors:
[snip]
> Chris, I apologize for teasing and mocking you about this error,..
Accepted. Now you're "one for two".
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Sun, 30 Jun 2002 23:40:50
> I have to check out your objection for parsing zero length
> string-delimited strings but so far you have not, as far as
> I can see, found a bug.
Try with this sample exerciser:
[...snip...gee, it was hard to get through that thick skull...]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Apparently no penetration so far...]
Subject; Re: The Data Quality Act
Date; Wed, 03 Jul 2002 15:30:06
>>> You are silent on the VB example and on its superiority.
Silent no more! Unfortunately, the superiority turns out to be
very much NOT in evidence.
>> Erm but the VB code had a bug, I pointed it out.
>
> We need to get off this infantile emphasis on bugs.
Okay, let's just talk about design issues and compare the VB OO
version to the C non-OO version.
[...]
Anyway, you asked for comments on your VB solution...
[...]
The AddItem method is called for each item added to the items array.
If a string has 200 tokens, this is called 200 times. Notice that it
always calls the allocateItemSpace_() method.
[...]
The important part of this is that we always enlarge our array--by
one item--by calling ReDim. So, that 200-item string makes us ReDim
the array 200 times.
[...]
One comment: the efficiency of building the complement string by
appending character after character is questionable. Each iteration
requires a new copy of the existing string with room for the append.
This also implies deallocating the previous copy.
Even VB has better ways to do this.
[...]
Despite a lot of talk about how OOP just naturally leads to better,
richer, less filling error handling, here's error-handling at its
most crude and (pardon the expression) BASIC. Not in any way better
than poor old C.
[...]
The worst problem is that every control path of every iteration has
us hit something like this:
USRstate.strOriginal & USRstate.strDelimiter
This uses the VB string concatenation operator, "&", to add the
delimiter (or sometimes the delimiter complement) to the end of
the main string. Which could be huge. So we need to make a huge
copy every time through the loop. Every single time, DESPITE that
we are always re-generating one of the same two strings (orig+delim,
or orig+delim_compl).
This, combined with the realization you were creating a new array
every time you added a token, are the primary reasons I'd call this
design "completely broken". The code may well work as designed,
but that design is a problem.
[...]
But if your start index is, say, 1, and the matching delimiter is
the last, you'll ask InStr() to scan the 57 Kb string three times
plus the last time that should succeed.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Still no acknowledgement of error or simple test cases...]
Subject; Re: The Data Quality Act
Date; Tue, 09 Jul 2002 17:05:02
> (2) Admission of genuine error such as a bug in the use of malloc
No admission of the second error which was clearly reported and proved.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Tue, 09 Jul 2002 17:18:12
> The non-JIT solution wastes time up front counting when the loop
> contains a break.
ROFL!! If I ever needed proof of your total programming incompetence,
that single sentence above provides more than I could ask. Let's
consider the situation you describe: a For loop that's going to iterate
over our largish string. Something like this:
For ix = 1 To N
' ...doing something in here...
Next N
Now, tell me something, Ed. How do you get "N"? By calling the items
property, yes? And what happens when you call the items property, Ed?
Ah, that's right, YOU PARSE THE WHOLE STINKING STRING!!
So, it seems clear to me you don't even understand your own design!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Ed demonstrates again his lack of true understanding of VB...]
Subject; Re: The Data Quality Act
Date; Wed, 10 Jul 2002 14:38:00
>> It's really kind of a shame you have to make a copy here. But I
> don't know of a convenient way around it in VB, does anyone else?
>
> Hmm, not sure you are making a copy.
My, God! You *really* don't know your own preferred language!
Yes, Ed, you DO make a copy.
> What I believe happens in the VB6 run time: a pointer to the string
> heap is placed on the stack.
A pointer to the "string heap"? Do you even know what a VB string IS
under the hood? What's its proper name? I bet you don't know.
> Then a copy is made but only if the target at the point of call is a
> string. If it is anything else VB6 may convert without copy.
And what is the target in this case: the String, named Value.
Don't take my word for this, Ed. Do a SIMPLE EXPERIMENT to see what
happens. I did to check that I was right. It took about a minute.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[And now the revisionist lies begin to appear...]
Subject; Re: The Data Quality Act
Date; Thu, 11 Jul 2002 13:06:19
>> Final category is places where the code is flat out broken and
>> won't run. There are none of these (I've noticed so far) in the
>> VB version (but there were two big ones in your C version).
>
> We fixed them.
No. You never admitted the second error, nor presented a fix I saw.
[...]
> I think the problem is that I presented end-to-end solutions which
> worked the first time out,...
No, they didn't. Your C solution crashed immediately and refused
to run until I fixed your error. Even then it produced erroneous
results due to the other bug. That's two major bugs in the single
function of substance in your C solution.
Your VB solution at least runs, but it's poorly designed--particularly
for a tool object. Worse, I say it ALSO produces erroneous results:
For the string: ",Moe,,Larry,Curley,,Shemp,Curley-Joe,CurleyJoeBesser,"
Your VB routine claims there are *nine* tokens. Do you feel there
should be a (blank) token *after* the final comma? That would make
10 tokens...
So, in my book, you presented two broken programs.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Subject; Re: The Data Quality Act
Date; Fri, 12 Jul 2002 12:18:16
> That was a failure to increment a malloc, in one of the two places
> where it was necessary,...
And what about the other major bug?
["increment a malloc? :-) ]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[There's not much point in going on, Ed *still* hasn't acknowledged
the basic design problems, nor what I'd consider a definite bug. I
close with this comparison of his VB tokenizer and mine...]
Subject; Re: The Data Quality Act
Date; Tue, 16 Jul 2002 12:17:53
I did some comparison tests -- your VB PowerString against the VB
version I whipped up (a class called TOKENS_OBJ--code was posted
upthread). The results were surprising, even to me:
Reading every line of a MEDIUM file (26K-chars, 1652 lines),
breaking it into words and writing the words back out to a
second file:
* CJS TOKENS_OBJ - 170 msecs
* EGN PowerString - 5778 msecs (over 30 times as long)
Reading every line of a LARGE file (302K-chars, 10K-lines),
breaking it into words and writing the words back out to a
second file:
* CJS TOKENS_OBJ - 1442 msecs
* EGN PowerString - 51724 msecs (over 35 times as long)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
2/2/2004 9:47:30 PM
|
|
In article <401EC572.E404C41@Sonnack.com>, Chris@Sonnack.com says...
> "Edward G. Nilges" wrote:
>
> > Chris Sonnack then asked me to post code in May 2002...
>
> Good God, man! Are you still licking wounds that are almost two
> years old? Don't you know that if you keep licking it, it will
> never heal?
Actually, the opposite is true in the medical sense, but that's off
topic. :-)
> For those not interested in the stroll, but would like to see Ed's
> lies exposed, skip down to [[NOW IT GETS INTERESTING...]]
Thanks for the reminders in such a convenient format. He is
truly delusional. I think you should email this to one or all
of the contacts listed here...
http://www.apress.com/about/contact.html
.... so that Apress has time to save its reputation if someone there
acts quickly.
> > My C code is stunningly elegant when I am up to speed.
I still laugh at seeing this Nilgewater, no matter how many times I've
read it. Perhaps it's just his own version of Sir Arthur C. Clarke's
"Any sufficiently advanced technology is indistinguishable from magic".
In his world, it probably *is* stunningly elegant, which is terrifying.
> > The non-JIT solution wastes time up front counting when the loop
> > contains a break.
> ROFL!! If I ever needed proof of your total programming incompetence,
> that single sentence above provides more than I could ask.
Correctamundo. He not only does not "get it", he's untrainable, even
after years of attempt to explain it to him.
> So, it seems clear to me you don't even understand your own design!
Well, that fits the model.
> I did some comparison tests -- your VB PowerString against the VB
> version I whipped up (a class called TOKENS_OBJ--code was posted
> upthread). The results were surprising, even to me:
> Reading every line of a LARGE file (302K-chars, 10K-lines),
> breaking it into words and writing the words back out to a
> second file:
>
> * CJS TOKENS_OBJ - 1442 msecs
> * EGN PowerString - 51724 msecs (over 35 times as long)
Well, I'm sure he's going to claim that taking 35X as long is just
a micro efficiency problem. He's a classic, I'll say that. You
just don't get much more clueless than this guy.
--
Randy Howard
2reply remove FOOBAR
Arrogance Incarnate from Edward G. Nilges:
"My C code is stunningly elegant when I am up to speed."
|
|
0
|
|
|
|
Reply
|
randyhoward (3272)
|
2/2/2004 10:58:01 PM
|
|
On Mon, 2 Feb 2004, CBFalconer wrote:
>
> Bill Godfrey wrote:
> > Noah Roberts <nroberts@dontemailme.com> wrote:
> >
> > > You definitely a white boy
> >
> > That would explain my love of playing that funky music.
> >
> > > since the background of your message is a
> > > most decidedly white color. In fact, all I see here are white
> > > people! What a racist newsgroup!
> >
> > That's odd, for me, the background is a pale yellow. So we all
> > either have Jaundice or Heppatitis, or we're all Chinese.
>
> Around here it is yellow text on a blue background. We must be on
> the Mars envisioned by Edgar Rice Burroughs, or at a football (US)
> game watching nutty fans. Other places show amber on black, which
> puts all users in or descended from Africans.
I'm reminded of a Beetle Bailey comic strip from way back when
that strip was good, depicting Lieutenant Flapp (the Afro-sporting
black officer) in the psychiatrist's office. "Now, I'm going to
hand you a pencil and a piece of paper, and I want you to draw me
some dots," the psychiatrist says. Done. "Aha! Do you see what
kind of dots you drew? *Black* dots! Now, I want you to think
carefully about what that might mean..." Flapp leaves the office
muttering, "Makes me think he handed me a black pencil!"
-Arthur,
signing off
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
2/3/2004 12:12:48 AM
|
|
Randy Howard wrote:
> spinoza1111 @yahoo.com says...
>
.... snip ...
>
> > However, in typical corporate rhetoric, a sort of "grade
> > inflation" demands that the regular tech user must insist that
> > he of course is an "expert".
>
> Nobody but you calls themselves an expert here about anything,
> IIRC. You are the only self-appointed egotistical megalomaniac
> currently inhabiting the group.
Sorry, but you are wrong this time. I too am a self-appointed
egotistical megalomaniac. I just don't take up quite the same
space as does Eddie in advertising it.
--
Chuck F (cbfalconer@yahoo.com) (cbfalconer@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!
|
|
0
|
|
|
|
Reply
|
cbfalconer (19183)
|
2/3/2004 2:45:48 AM
|
|
Programmer Dude <Chris@Sonnack.com> wrote in message news:<401EC572.E404C41@Sonnack.com>...
> "Edward G. Nilges" wrote:
>
> > Chris Sonnack then asked me to post code in May 2002...
>
Below is the "smoking gun", and I am grateful to you, oh "programmer
dude" for proving my case.
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Subject; Re: The Data Quality Act
> Date; Tue, 18 Jun 2002 16:59
>
> > But here's some code.
> >
> > Dim objPowerString As New powerString
> > objPowerString.value = strInstring
> > MsgBox("The tenth word: " & objPowerString.Word(10))
> > objPowerString = Nothing
> >
> > Contrast C.
> >
> > #define MAXSTRING 1024
> > int str[];
> > str = malloc(MAXSTRING);
> > if { str == NULL } bombOut("Cannot get storage\n");
> > ...code to parse...
> > printf("The tenth word: ...
> > free(str);
>
> A very, very--even extra-ordinarily--poor example. Here's what
> might be a more fair and accurate comparison (note the one-to-one
> correspondence):
>
> PowerString* ps = PowerString_Create ();
> ps->Parse (strInstring);
> printf ("The tenth word is: %s\n", ps->GetWord(10));
> PowerString_Destroy (ps);
>
There is a slight problem.
YOUR CODE IS C++: MINE WAS C. I WAS COMPARING C AND VB TO SHOW THAT
VB'S SUPPORT FOR OBJECTS MAKES IT SUPERIOR IN MOST CASES TO C. YOU
POSTED C++.
When I saw this example I decided that I would deal with you at arms
length because it proves your incompetence OR your dishonesty.
You actually believed (and apparently still believe) that C and C++
are the same language...or, you thought to pull the wool over people's
eyes.
Words fail.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/3/2004 2:56:14 AM
|
|
On Mon, 2 Feb 2004, Edward G. Nilges wrote:
>
> Programmer Dude wrote:
> > "Edward G. Nilges" wrote:
> >
> > > Chris Sonnack then asked me to post code in May 2002...
>
> Below is the "smoking gun", and I am grateful to you, oh "programmer
> dude" for proving my case.
>
[EGN wrote long ago:]
> > > #define MAXSTRING 1024
> > > int str[];
> > > str = malloc(MAXSTRING);
> > > if { str == NULL } bombOut("Cannot get storage\n");
> > > ...code to parse...
> > > printf("The tenth word: ...
> > > free(str);
> > >
[CJSonnack wrote:]
> > A very, very--even extra-ordinarily--poor example. Here's what
> > might be a more fair and accurate comparison (note the one-to-one
> > correspondence):
> >
> > PowerString* ps = PowerString_Create ();
> > ps->Parse (strInstring);
> > printf ("The tenth word is: %s\n", ps->GetWord(10));
> > PowerString_Destroy (ps);
>
> There is a slight problem.
>
> YOUR CODE IS C++: MINE WAS C. I WAS COMPARING C AND VB TO SHOW THAT
> VB'S SUPPORT FOR OBJECTS MAKES IT SUPERIOR IN MOST CASES TO C. YOU
> POSTED C++.
Chris posted C. It is fairly un-idiomatic C, but there's nothing
wrong with it. You can, given a proper definition for all that
PowerString_* stuff, feed Chris' code to a C compiler and have it
work just fine.
I, being much lazier than Chris, ;-) would have written what I
consider more idiomatic C code:
PowerString *ps = PowerString_Create();
PowerString_Parse(ps, strInstring);
printf("The tenth word is: %s\n", PowerString_GetWord(ps, 10));
PowerString_Destroy(ps);
ps = NULL;
But that's not a language issue; it's (for the most part, in this
context) a style issue.
-Arthur
|
|
0
|
|
|
|
Reply
|
ajo (1601)
|
2/3/2004 3:02:02 AM
|
|
Edward G. Nilges wrote:
> Programmer Dude <Chris@Sonnack.com> wrote in message
> news:<401EC572.E404C41@Sonnack.com>...
>> "Edward G. Nilges" wrote:
>>
>> > Chris Sonnack then asked me to post code in May 2002...
>>
>
> Below is the "smoking gun", and I am grateful to you, oh "programmer
> dude" for proving my case.
>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Subject; Re: The Data Quality Act
>> Date; Tue, 18 Jun 2002 16:59
>>
>> > But here's some code.
>> >
>> > Dim objPowerString As New powerString
>> > objPowerString.value = strInstring
>> > MsgBox("The tenth word: " & objPowerString.Word(10))
>> > objPowerString = Nothing
>> >
>> > Contrast C.
>> >
>> > #define MAXSTRING 1024
>> > int str[];
>> > str = malloc(MAXSTRING);
>> > if { str == NULL } bombOut("Cannot get storage\n");
>> > ...code to parse...
>> > printf("The tenth word: ...
>> > free(str);
>>
>> A very, very--even extra-ordinarily--poor example. Here's what
>> might be a more fair and accurate comparison (note the one-to-one
>> correspondence):
>>
>> PowerString* ps = PowerString_Create ();
>> ps->Parse (strInstring);
>> printf ("The tenth word is: %s\n", ps->GetWord(10));
>> PowerString_Destroy (ps);
>>
>
> There is a slight problem.
>
> YOUR CODE IS C++:
It sure looks like C to me.
> MINE WAS C. I WAS COMPARING C AND VB TO SHOW THAT
> VB'S SUPPORT FOR OBJECTS MAKES IT SUPERIOR IN MOST CASES TO C. YOU
> POSTED C++.
It sure looks like C to me.
>
> When I saw this example I decided that I would deal with you at arms
> length because it proves your incompetence OR your dishonesty.
Perhaps it just proves that Mr Nilges doesn't know the C language.
>
> You actually believed (and apparently still believe) that C and C++
> are the same language...or, you thought to pull the wool over people's
> eyes.
Perhaps Chris knows C rather better than Mr Nilges.
> Words fail.
Chance would be a fine thing.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
2/3/2004 4:31:44 AM
|
|
Edward G. Nilges wrote:
> Programmer Dude <Chris@Sonnack.com> wrote in message news:<401EC572.E404C41@Sonnack.com>...
>
>>"Edward G. Nilges" wrote:
>>
>>
>>>Chris Sonnack then asked me to post code in May 2002...
>>
>
> Below is the "smoking gun", and I am grateful to you, oh "programmer
> dude" for proving my case.
>
>
>>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>Subject; Re: The Data Quality Act
>> Date; Tue, 18 Jun 2002 16:59
>>
>>
>>>But here's some code.
>>>
>>> Dim objPowerString As New powerString
>>> objPowerString.value = strInstring
>>> MsgBox("The tenth word: " & objPowerString.Word(10))
>>> objPowerString = Nothing
>>>
>>>Contrast C.
>>>
>>> #define MAXSTRING 1024
>>> int str[];
>>> str = malloc(MAXSTRING);
>>> if { str == NULL } bombOut("Cannot get storage\n");
>>> ...code to parse...
>>> printf("The tenth word: ...
>>> free(str);
>>
>>A very, very--even extra-ordinarily--poor example. Here's what
>>might be a more fair and accurate comparison (note the one-to-one
>>correspondence):
>>
>> PowerString* ps = PowerString_Create ();
>> ps->Parse (strInstring);
>> printf ("The tenth word is: %s\n", ps->GetWord(10));
>> PowerString_Destroy (ps);
>>
>
Just for fun, let's see if we can maybe come up with a C structure
that would make this legal...
typedef struct powerstring_ {
void (*Parse) (char *);
char *(*GetWord) (int);
/* blah blah blah */
} PowerString;
Hmm.. that's certainly legal C.
>
> There is a slight problem.
Yeah, you don't know C.
>
> YOUR CODE IS C++: MINE WAS C. I WAS COMPARING C AND VB TO SHOW THAT
> VB'S SUPPORT FOR OBJECTS MAKES IT SUPERIOR IN MOST CASES TO C. YOU
> POSTED C++.
>
No, his was C.
> When I saw this example I decided that I would deal with you at arms
> length because it proves your incompetence OR your dishonesty.
More likely, it proves /your/ imcompetence.
>
> You actually believed (and apparently still believe) that C and C++
> are the same language...or, you thought to pull the wool over people's
> eyes.
>
Nope, I'm willing to bet your house, all of the income you'll ever
swindle out of an employer, and your car that he knows the difference
between C and C++.
> Words fail.
As did your brain, apparently.
Mr Nilges:
go away
go away
go away
|
|
0
|
|
|
|
Reply
|
dbtid2 (21)
|
2/3/2004 4:43:30 AM
|
|
CBFalconer wrote:
> Randy Howard wrote:
>
>>spinoza1111 @yahoo.com says...
>>
>
> ... snip ...
>
>>>However, in typical corporate rhetoric, a sort of "grade
>>>inflation" demands that the regular tech user must insist that
>>>he of course is an "expert".
>>
>>Nobody but you calls themselves an expert here about anything,
>>IIRC. You are the only self-appointed egotistical megalomaniac
>>currently inhabiting the group.
>
>
> Sorry, but you are wrong this time. I too am a self-appointed
> egotistical megalomaniac. I just don't take up quite the same
> space as does Eddie in advertising it.
>
Yes, I also know everything.
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
2/3/2004 4:49:03 AM
|
|
Bill Godfrey wrote:
> Noah Roberts <nroberts@dontemailme.com> wrote:
>
>>You definitely a white boy
>
>
> That would explain my love of playing that funky music.
>
>
>>since the background of your message is a
>>most decidedly white color. In fact, all I see here are white people!
>>What a racist newsgroup!
>
>
> That's odd, for me, the background is a pale yellow. So we all either have
> Jaundice or Heppatitis, or we're all Chinese.
You forgot, or where unaware of, an option. We could all be wearing Dit
Da Jao because our muscles are so sore from all the excercize we do.
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
2/3/2004 4:50:25 AM
|
|
Randy Howard wrote:
Quoting Nilges:
>>Thus, if EGN builds a marvelous, if not brilliant, chain of signifiers
>>from programming to Derrida's theories of the primacy of speech over
>>writing, Nilges is indeed off topic: unless, as is the case usually,
>>he then executes a marvelous leap back, like a dancer, to the subject
>>of programming.
>
>
> Arrogance is futile here Nilges, we aren't drinking the kool-aid.
>
I really love this one. Apparently he thinks it is ok to travel way off
topic if he suddenly spits out some way to relate it to programming or
programmers. This actually explains a lot as to his scatter brained
posts that seem to hop from topic to topic without really saying much.
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
2/3/2004 5:02:41 AM
|
|
On Mon, 02 Feb 2004 21:02:41 -0800, Noah Roberts
<nroberts@dontemailme.com> wrote:
>Randy Howard wrote:
>Quoting Nilges:
>>>Thus, if EGN builds a marvelous, if not brilliant, chain of signifiers
>>>from programming to Derrida's theories of the primacy of speech over
>>>writing, Nilges is indeed off topic: unless, as is the case usually,
>>>he then executes a marvelous leap back, like a dancer, to the subject
>>>of programming.
As a side note he gets Derrida wrong.
>>
>>
>> Arrogance is futile here Nilges, we aren't drinking the kool-aid.
>>
>
>I really love this one. Apparently he thinks it is ok to travel way off
>topic if he suddenly spits out some way to relate it to programming or
>programmers. This actually explains a lot as to his scatter brained
>posts that seem to hop from topic to topic without really saying much.
>
>--
>"I can't help it, the Dominating Trolls made me."
>
Richard Harter, cri@tiac.net
http://home.tiac.net/~cri, http://www.varinoma.com
A man with money is always charming - pomposity is just
an eccentricity, forgivable in the rich.
|
|
0
|
|
|
|
Reply
|
cri (1432)
|
2/3/2004 5:20:58 AM
|
|
Programmer Dude wrote:
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Subject; Re: The Data Quality Act
> Date; Thu, 06 Jun 2002 09:57:36
>
>
>>The political problem of malloc...
>
>
> The "political problem of malloc"?!?!
> Bwa-ha-ha-ha-ha....
Is malloc a democrat or republican?
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Subject; Re: The Data Quality Act
> Date; Fri, 14 Jun 2002 13:13:30
>
>
>>..............for in the period 1984..1995 I wrote thousands of
>>lines of C and assisted Princeton mathematician John Nash with C.
He of course repeats that he worked on all this high level code with
these great people but what he fails to tell us is for how long.
Assuming he is telling the truth:
How long did he assist John Nash?
Did John Nash ask for, or appreciate this assistance?
Did Nilges' input ever get used?
How long did it take to fix Nilges' code?
How difficult where Nilges' components? Did they give him code that any
monkey could do that had no deadline, or did they give him important
stuff that required some innovation?
You know what? I was on the XFree86 development team for nearly a year.
Find my contribution...I bet it is still there :P
For those that don't want to bother... I made some trivial modifications
to the PS Print server, commented out a few lines and changed a couple
of constants. But I can say I was "On the XFree86 development team"
because I was an official member.
See what I mean?
--
"I can't help it, the Dominating Trolls made me."
|
|
0
|
|
|
|
Reply
|
nroberts (864)
|
2/3/2004 5:24:57 AM
|
|
spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0402021856.259a2bc7@posting.google.com>...
> Programmer Dude <Chris@Sonnack.com> wrote in message news:<401EC572.E404C41@Sonnack.com>...
> > "Edward G. Nilges" wrote:
> >
> > > Chris Sonnack then asked me to post code in May 2002...
> >
>
> Below is the "smoking gun", and I am grateful to you, oh "programmer
> dude" for proving my case.
> > A very, very--even extra-ordinarily--poor example. Here's what
> > might be a more fair and accurate comparison (note the one-to-one
> > correspondence):
> >
> > PowerString* ps = PowerString_Create ();
> > ps->Parse (strInstring);
> > printf ("The tenth word is: %s\n", ps->GetWord(10));
> > PowerString_Destroy (ps);
> >
>
> There is a slight problem.
>
> YOUR CODE IS C++: MINE WAS C. I WAS COMPARING C AND VB TO SHOW THAT
> VB'S SUPPORT FOR OBJECTS MAKES IT SUPERIOR IN MOST CASES TO C. YOU
> POSTED C++.
Don't take this badly Edward, but you really do wear a big target
sometimes!
Perhaps it looks a little like C++, perhaps you read
Powerstring.Create() in place of PowerString_Create ();
Even so, the actual constructor would just be:
Powerstring MyPowerstring();
or
Powerstring *ps = new Powerstring();
Sometimes (just IMO) when C code starts to look like the above i
consider if, infact, the job would be made clearer by using c++.
In the above, one might make use of C++'s kindly supplied string and
stl goodies. Perhaps PD would prefer C++ too, for something like
this, but the example shown is C
|
|
0
|
|
|
|
Reply
|
gswork (648)
|
2/3/2004 9:18:00 AM
|
|
In article <f5dda427.0402021856.259a2bc7@posting.google.com>, spinoza1111
@yahoo.com says...
> Programmer Dude <Chris@Sonnack.com> wrote in message news:<401EC572.E404C41@Sonnack.com>...
> > "Edward G. Nilges" wrote:
> >
> > > Chris Sonnack then asked me to post code in May 2002...
> >
>
> Below is the "smoking gun",
We sure do Nilges, and you have just provided you incompetent
buffoon.
> >
> > PowerString* ps = PowerString_Create ();
> > ps->Parse (strInstring);
> > printf ("The tenth word is: %s\n", ps->GetWord(10));
> > PowerString_Destroy (ps);
> >
>
> There is a slight problem.
>
> YOUR CODE IS C++: MINE WAS C.
Ridiculous. You are a complete fraud. You know nothing of the
C language and need to have your head examined. Hint: You might
want to study up on pointers for a few years before pretending
to be a programmer again.
> I WAS COMPARING C AND VB TO SHOW THAT VB'S SUPPORT FOR OBJECTS
> MAKES IT SUPERIOR IN MOST CASES TO C.
And he demonstrated a solution that made your case look rather
weak in comparison.
> YOU POSTED C++.
You know neither C, nor C++ OBVIOUSLY. Why should we believe you
know any C? (Chris, Apress needs to be warned about this immediately)
> When I saw this example I decided that I would deal with you at arms
> length because it proves your incompetence OR your dishonesty.
I think you have just managed to prove the opposite, namely that you
are without doubt, completely incompetent. You dishonesty has of
course been established for quite some time.
> You actually believed (and apparently still believe) that C and C++
> are the same language...or, you thought to pull the wool over people's
> eyes.
No, he just baited you into making the biggest blunder (may I be so
bold?) to date in the long endless stream of them that has been
appearing here for years.
> Words fail.
If only that were true.
--
Randy Howard
2reply remove FOOBAR
"YOU POSTED C++" Incredibly humorous, yet incorrect statement
from Edward G. Nilges.
|
|
0
|
|
|
|
Reply
|
randyhoward (3272)
|
2/3/2004 1:38:22 PM
|
|
In article <o7ydncGI3_4ZrYLdRVn-hQ@scnresearch.com>, nroberts@dontemailme.com
says...
>
> >>..............for in the period 1984..1995 I wrote thousands of
> >>lines of C and assisted Princeton mathematician John Nash with C.
>
> Assuming he is telling the truth:
>
> How long did he assist John Nash?
From his description of the event to me, about 5 minutes would have
been sufficient. He helped Nash find a problem with a constant
expression that the MS compiler didn't like, so rather than fix it
properly, he had Nash switch to the Borland C compiler. That's it.
Given that Nilges doesn't understand C worth a popcorn fart, you
could be kind and say that he did the best he could with an empty
toolbox.
That's the whole story, that he keeps repeating in much more
grandiose sounding terms whenever given the opportunity so that it
will sound a lot more impressive than the reality.
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randyhoward (3272)
|
2/3/2004 1:45:00 PM
|
|
In article <of6dnYFGhoaEtYLdRVn-uA@scnresearch.com>, nroberts@dontemailme.com
says...
> CBFalconer wrote:
> > Randy Howard wrote:
> >
> >>spinoza1111 @yahoo.com says...
> >>
> >
> > ... snip ...
> >
> >>>However, in typical corporate rhetoric, a sort of "grade
> >>>inflation" demands that the regular tech user must insist that
> >>>he of course is an "expert".
> >>
> >>Nobody but you calls themselves an expert here about anything,
> >>IIRC. You are the only self-appointed egotistical megalomaniac
> >>currently inhabiting the group.
> >
> >
> > Sorry, but you are wrong this time. I too am a self-appointed
> > egotistical megalomaniac. I just don't take up quite the same
> > space as does Eddie in advertising it.
> >
>
> Yes, I also know everything.
Okay, I sit corrected. :-)
--
Randy Howard
2reply remove FOOBAR
|
|
0
|
|
|
|
Reply
|
randyhoward (3272)
|
2/3/2004 1:45:41 PM
|
|
Randy Howard wrote:
[snip]
> Given that Nilges doesn't understand C worth a popcorn fart, you
Oh, that's a WONDERFUL expression! :-)
[snip]
|
|
0
|
|
|
|
Reply
|
dbtid (26)
|
2/3/2004 2:22:56 PM
|
|
"Edward G. Nilges" wrote:
> There is a slight problem.
Indeed there is, and we all know exactly where it lies.
> YOUR CODE IS C++: MINE WAS C.
As you now might be able to see, it was C.
> When I saw this example I decided that I would deal with you at
> arms length because it proves your incompetence OR your dishonesty.
Are you big enough to apologize and admit your error?
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
2/3/2004 3:37:12 PM
|
|
Randy Howard wrote:
> Chris, Apress needs to be warned about this immediately
Yes, I think I will email them today.
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
2/3/2004 3:38:08 PM
|
|
Randy Howard wrote:
> Thanks for the reminders in such a convenient format. He is
> truly delusional. I think you should email this to one or all
> of the contacts listed here...
>
> http://www.apress.com/about/contact.html
>
> ... so that Apress has time to save its reputation if someone there
> acts quickly.
I will email them today. Thanks for the link.
--
|_ CJSonnack <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|_______________________|
|
|
0
|
|
|
|
Reply
|
Chris7 (2511)
|
2/3/2004 3:38:59 PM
|
|
gswork@mailcity.com (gswork) wrote in message news:<81f33a98.0402030117.75badce1@posting.google.com>...
> spinoza1111@yahoo.com (Edward G. Nilges) wrote in message news:<f5dda427.0402021856.259a2bc7@posting.google.com>...
> > Programmer Dude <Chris@Sonnack.com> wrote in message news:<401EC572.E404C41@Sonnack.com>...
> > > "Edward G. Nilges" wrote:
> > >
> > > > Chris Sonnack then asked me to post code in May 2002...
> > >
> >
> > Below is the "smoking gun", and I am grateful to you, oh "programmer
> > dude" for proving my case.
>
> > > A very, very--even extra-ordinarily--poor example. Here's what
> > > might be a more fair and accurate comparison (note the one-to-one
> > > correspondence):
> > >
> > > PowerString* ps = PowerString_Create ();
> > > ps->Parse (strInstring);
> > > printf ("The tenth word is: %s\n", ps->GetWord(10));
> > > PowerString_Destroy (ps);
> > >
> >
> > There is a slight problem.
> >
> > YOUR CODE IS C++: MINE WAS C. I WAS COMPARING C AND VB TO SHOW THAT
> > VB'S SUPPORT FOR OBJECTS MAKES IT SUPERIOR IN MOST CASES TO C. YOU
> > POSTED C++.
>
> Don't take this badly Edward, but you really do wear a big target
> sometimes!
>
> Perhaps it looks a little like C++, perhaps you read
> Powerstring.Create() in place of PowerString_Create ();
>
> Even so, the actual constructor would just be:
>
> Powerstring MyPowerstring();
>
> or
>
> Powerstring *ps = new Powerstring();
>
> Sometimes (just IMO) when C code starts to look like the above i
> consider if, infact, the job would be made clearer by using c++.
>
> In the above, one might make use of C++'s kindly supplied string and
> stl goodies. Perhaps PD would prefer C++ too, for something like
> this, but the example shown is C
The problem is that "programmer dude" used a C++-like style
deliberately and dishonestly, and this dishonesty has subsequently
characterized his conduct, which when used without due diligence by
buffoons, has created a discourse cascade.
My point was that nearly all C programmers FAIL to encapsulate the
powerstring_create and they FAIL to emulate C++, although this is
technically possible in the language. Instead, they use the style I
used and this is evident in millions of lines of C code.
Then, in newsgroups, they use a publication language, a form of Church
Slavonic, which pretends to be "just as good as" an OO language...in a
dishonest fashion.
What Chris failed to show, of course, was that in the OO VB example,
objPowerString would be a DLL, the source code inaccessible to the
user: whereas even in the phony C++ example he posted, the source code
would in most cases...have to be accessible, to the user.
This means that the typical programmer, who is lazy and intellectually
dishonest as we see in this ng, would MODIFY the internals of the
create to suit his short term goals.
And, this is the essence of the problem.
Given Chris' dishonesty as seen in this example, I am certain that his
actual code doesn't at all look like the example he posted. Instead,
it probably uses malloc in the style I showed.
I have maintained literally millions of lines in code in several
different languages. In less than 5% of this sample do I see anything
like "good practice".
Instead what I see is the consequences of deception.
This started as I described in an article in the IEEE Transactions in
the History of Software, where an IBM customer engineer had inserted a
subroutine to emulate multiply and divide to "fix" a Fortran compiler
that did not even need this "fix", and my university was charged for
this behavior.
And what I also see is that programmers are typically proud of being
able to deceive, and yet want to keep their jobs from migrating
offshore and be considered "professionals"...when in fact, they are
vicious tradesmen.
Chris' example is completely phony. In VB, the power string is
encapsulated properly: in C it is part of the source code in 90% of
cases.
I admit to wrongly believing it to be C++. This was a minor error on
my part compared to the dishonesty of pretending that C has
encapsulated the create and the destroy. This is dishonesty based on a
complete incomprehension much larger than an error.
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/3/2004 4:56:48 PM
|
|
"Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote in message news:<Pine.LNX.4.58-035.0402022158070.19408@unix43.andrew.cmu.edu>...
> On Mon, 2 Feb 2004, Edward G. Nilges wrote:
> >
> > Programmer Dude wrote:
> > > "Edward G. Nilges" wrote:
> > >
> > > > Chris Sonnack then asked me to post code in May 2002...
> >
> > Below is the "smoking gun", and I am grateful to you, oh "programmer
> > dude" for proving my case.
> >
> [EGN wrote long ago:]
> > > > #define MAXSTRING 1024
> > > > int str[];
> > > > str = malloc(MAXSTRING);
> > > > if { str == NULL } bombOut("Cannot get storage\n");
> > > > ...code to parse...
> > > > printf("The tenth word: ...
> > > > free(str);
> > > >
> [CJSonnack wrote:]
> > > A very, very--even extra-ordinarily--poor example. Here's what
> > > might be a more fair and accurate comparison (note the one-to-one
> > > correspondence):
> > >
> > > PowerString* ps = PowerString_Create ();
> > > ps->Parse (strInstring);
> > > printf ("The tenth word is: %s\n", ps->GetWord(10));
> > > PowerString_Destroy (ps);
> >
> > There is a slight problem.
> >
> > YOUR CODE IS C++: MINE WAS C. I WAS COMPARING C AND VB TO SHOW THAT
> > VB'S SUPPORT FOR OBJECTS MAKES IT SUPERIOR IN MOST CASES TO C. YOU
> > POSTED C++.
>
> Chris posted C. It is fairly un-idiomatic C, but there's nothing
> wrong with it. You can, given a proper definition for all that
> PowerString_* stuff, feed Chris' code to a C compiler and have it
> work just fine.
"Just fine": this phrase is why jobs are migrating offshore.
You see, a professional programmer as opposed to a common tradesman or
nasty little clerk takes responsibility for the set of related
solutions he creates, conceptually, over time, and if you don't
understand this, this means that you are a common tradesman or nasty
little clerk.
Although the create and destroy COULD be separate run units and linked
separately, in 90% of cases, to make the code work "just fine", the
programmer will insert their source code into the single compile unit
and deliver the code.
This means that at any time over the system lifecycle, the code user
can modify the create and destroy without much trace.
Whereas in the VB, OO case (despite VB's limitations as an OO
language), the powerString is brought in, in the modal case, as a DLL.
Now, I fully realize that the DLL user could get his hands on the
source of the DLL, and even include it as a private class.
But to think for one minute that this is an argument shows the
fundamental delusion...that programming is not an applied science,
contextualized in a social reality.
In that social reality, the appearance of a private copy of
powerString is evidence of a coverup...a smoking gun.
Whereas in the C case, the source code can be extensively modified.
Furthermore, in the C case, Chris failed to mention a significant
problem.
It is that because the source code for create and destroy will be, in
most cases, inserted into each run unit that needs them, any one copy
can be modified.
Even if no copy is modified, the epistemological problem is that it
can be. No clear set of related solutions has been created.
Basically, the FALSE claim is that "C is object-oriented". It is a
nasty little programmer's claim that is meant to secure the programmer
against the pain of learning.
When in 1976 I published, in Computerworld, my article on "virtually"
structured programming, I had the intellectual honesty to use a label
(derived from axiomatic set theory) that would clearly disambiguate
implementing a structured flowchart in an unstructured language from
using a structured language.
As a result, I made a small addition to the sum total of knowledge.
Whereas to say "C is object oriented" doesn't even leave knowledge
unchanged. It subtracts from knowledge and is a delusion.
> I, being much lazier than Chris, ;-) would have written what I
> consider more idiomatic C code:
>
> PowerString *ps = PowerString_Create();
> PowerString_Parse(ps, strInstring);
> printf("The tenth word is: %s\n", PowerString_GetWord(ps, 10));
> PowerString_Destroy(ps);
> ps = NULL;
>
> But that's not a language issue; it's (for the most part, in this
> context) a style issue.
You fail to mention the key difference between ps and objPowerString.
In any edition of the program over the system lifecycle, I can do
arithmetic on ps.
I cannot do this in objPowerString.
This isn't a "powerful feature of C". It's a bug, because in the
context of obvious intent, ps++ is a syntactical error, a sentence on
the order of "green ideas sleep furiously".
The whole idea of progress in programming languages is to create a
language in which nasty and unimaginative people, who can't solve
problems, can't express their pseudosolutions.
That was over the top, but I'm convinced that it's true.
There's entirely too much self-reflexive garbage in this ng about
programming and, I note, nothing at all about applications, perhaps
because of nondisclosure.
>
> -Arthur
|
|
0
|
|
|
|
Reply
|
spinoza1111 (3250)
|
2/3/2004 5:13:02 PM
|
|
Edward wrote:
) What Chris failed to show, of course, was that in the OO VB example,
) objPowerString would be a DLL, the source code inaccessible to the
) user: whereas even in the phony C++ example he posted, the source code
) would in most cases...have to be accessible, to the user.
Why would it be a DLL in VB, and not in C ?
It could just as easily be a DLL in C, and it could probably just as easily
not be a DLL in VB.
SaSW, Willem
--
Disclaimer: I am in no way responsible for any of the statements
made in the above text. For all I know I might be
drugged or something..
No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT
|
|
0
|
|
|
|
Reply
|
willem (1478)
|
2/3/2004 5:58:34 PM
|
|
Edward G. Nilges wrote:
> gswork@mailcity.com (gswork) wrote in message
> news:<81f33a98.0402030117.75badce1@posting.google.com>...
<snip>
>> the example shown is C
>
> The problem is that "programmer dude" used a C++-like style
> deliberately and dishonestly,
What is Mr Nilges talking about? It sure looked like C-style to me.
> My point was that nearly all C programmers FAIL to encapsulate the
> powerstring_create
Mr Nilges's apparent inability to use or even recognise encapsulation in C
does not mean that nearly all C programmers share his lack of knowledge of
the language.
> and they FAIL to emulate C++,
This is hardly surprising. C and C++ are different languages. If the
programmer wants C++, he or she knows where to find it. It should be noted
that the code of which Mr Nilges is speaking did /not/ emulate C++ at all.
It used ordinary C syntax.
> although this is
> technically possible in the language. Instead, they use the style I
> used and this is evident in millions of lines of C code.
C is sufficiently flexible to support many different styles of programming.
The programmer *chooses*.
> Then, in newsgroups, they use a publication language, a form of Church
> Slavonic, which pretends to be "just as good as" an OO language...in a
> dishonest fashion.
This appears to translate as "oh rats, they caught me, I'd better insert
some more verbiage here", but of course it doesn't work any better now than
it did at any time over the past two years.
> What Chris failed to show, of course, was that in the OO VB example,
> objPowerString would be a DLL, the source code inaccessible to the
> user: whereas even in the phony C++ example he posted, the source code
> would in most cases...have to be accessible, to the user.
willem has already pointed out that the C (not phony C++ as Mr Nilges
claims, but normal C) version could equally be in a DLL, or indeed in a
shared library, and there would be no need whatsoever for the code to be
accessible to the user. Mr Nilges doesn't seem to understand how libraries
work.
> This means that the typical programmer, who is lazy and intellectually
> dishonest as we see in this ng, would MODIFY the internals of the
> create to suit his short term goals.
Mr Nilges appears to confuse "typical" with "Nilges-like", whereas in fact
they are two very different ideas. If it is necessary to hide the source
from the user-programmer, this is fairly easy to do.
> And, this is the essence of the problem.
The essence of the problem appears to be that Mr Nilges doesn't understand
the concepts of encapsulation and data hiding.
> Given Chris' dishonesty as seen in this example,
What dishonesty? He said it was C, and it was C. I don't understand how this
could possibly be seen as dishonesty.
> I am certain that his
> actual code doesn't at all look like the example he posted. Instead,
> it probably uses malloc in the style I showed.
I expect it uses malloc under the hood - but then he didn't say it didn't.
> I have maintained literally millions of lines in code in several
> different languages.
If that is true (and we have only Mr Nilges's word for it), that sounds like
millions of lines of code that need to be fixed.
> In less than 5% of this sample do I see anything
> like "good practice".
Since Mr Nilges's concept of "good practice" is so much at variance with so
many programmers, and since we don't even know whether the sample exists,
it's hard to say what conclusion we should draw from Mr Nilges's statement.
> Instead what I see is the consequences of deception.
Perhaps Mr Nilges means that he is deceiving himself. I can't think what
else he might mean, since Chris's code was not even remotely deceitful.
<nonsense snipped>
> Chris' example is completely phony. In VB, the power string is
> encapsulated properly: in C it is part of the source code in 90% of
> cases.
Mr Nilges seems to be amazingly unaware of the concept of a library.
> I admit to wrongly believing it to be C++.
Well, there's a thing.
> This was a minor error on
> my part
No, it was a very serious error. Mr Nilges's inability to recognise C led
him to claim that another contributor to this newsgroup either lied or was
incompetent. That's a very serious mistake indeed.
> compared to the dishonesty of pretending that C has
> encapsulated the create and the destroy.
Chris didn't pretend this /at all/. He merely showed perfectly normal
C-style opaque type syntax, and took it as read that those reading the
thread would understand what lay under the hood (and, for the most part, he
was right).
> This is dishonesty based on a
> complete incomprehension much larger than an error.
Mr Nilges ought to apologise unreservedly to Chris for these scandalous
accusations of dishonesty on Chris's part - accusations which are based
entirely on Mr Nilges's ignorance of the language he seeks so pointlessly
to decry.
Furthermore, it has surely become very evident even to the most forgiving
reader that Mr Nilges is almost wholly ignorant of the full range and power
of the C language; his constant attacks on it should be viewed with this
ignorance in mind.
--
Richard Heathfield : binary@eton.powernet.co.uk
"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton
|
|
0
|
|
|
|
Reply
|
dontmail (1884)
|
2/3/2004 6:50:49 PM
|
|
Edward G. Nilges wrote:
> "Arthur J. O'Dwyer" <ajo@nospam.andrew.cmu.edu> wrote in message
> news:<Pine.LNX.4.58-035.0402022158070.19408@unix43.andrew.cmu.edu>...
>>
>> Chris posted C. It is fairly un-idiomatic C, but there's nothing
>> wrong with it. You can, given a proper definition for all that
>> PowerString_* stuff, feed Chris' code to a C compiler and have it
>> work just fine.
>
<childish insults snipped - Mr Nilges really needs to grow up a little if he
wishes to converse with adults as an equal>
> Although the create and destroy COULD be separate run units and linked
> separately, in 90% of cases, to make the code work "just fine", the
> programmer will insert their source code into the single compile unit
> and deliver the code.
Most C programs don't consist of a single "compile unit" (or "translation
unit" as it is actually called), but of several or many. Most C programmers
do not bother to recompile library code over and over. The whole point of
putting the code in a library was so that they wouldn't have to recompile
it! Mr Nilges's ignorance of this simple fact is disappointing, but hardly
surprising to those who are familiar with his articles.
> This means that at any time over the system lifecycle, the code user
> can modify the create and destroy without much trace.
Any programmer can modify any source code to which he has write access. So
what? If it is desirable for the programmer not to be able to modify a
library, then the source can be hidden from the programmer, and only the
binary version of the library need be made available (and that can be
read-only access, of course).
> Whereas in the VB, OO case (despite VB's limitations as an OO
> language), the powerString is brought in, in the modal case, as a DLL.
If a DLL is considered the right solution, there's no problem here - it's
trivial to build a DLL out of ISO C code.
<snip>
> In that social reality, the appearance of a private copy of
> powerString is evidence of a coverup...a smoking gun.
Looks like "smoking gun" is the latest Nilges "phrase of the moment". Of
course, he's being ridiculous. If someone wants to examine the DLL sources,
why shouldn't they?
> Whereas in the C case, the source code can be extensively modified.
Mr Nilges claims such vast C experience, yet apparently has never built a
DLL out of C code. Had he done so, he would realise that it is not only
possible but trivial to build DLLs out of C code.
> Furthermore, in the C case, Chris failed to mention a significant
> problem.
>
> It is that because the source code for create and destroy will be, in
> most cases, inserted into each run unit that needs them, any one copy
> can be modified.
No, most programmers will /not/ bother to insert the library code into each
"run unit" (presumably he means "translation unit"), not least because the
darn thing won't link if they do that. They will actually find it easier to
link the library.
> Even if no copy is modified, the epistemological problem is that it
> can be. No clear set of related solutions has been created.
Of course it has. That's what a library /is/ (or at least, can be, and - in
the case under consideration - would indeed be).
> Basically, the FALSE claim is that "C is object-oriented".
Nobody has claimed that.
> It is a
> nasty little programmer's claim that is meant to secure the programmer
> against the pain of learning.
No, it's a strawman Mr Nilges has raised up for himself.
> When in 1976 I published, in Computerworld, my article on "virtually"
> structured programming,
Assuming for the moment that that statement is true, I wonder if anyone was
stupid enough to pay attention to Mr Nilges's words?
> I had the intellectual honesty to use a label
> (derived from axiomatic set theory) that would clearly disambiguate
> implementing a structured flowchart in an unstructured language from
> using a structured language.
>
> As a result, I made a small addition to the sum total of knowledge.
I find this deeply unlikely.
> Whereas to say "C is object oriented" doesn't even leave knowledge
> unchanged. It subtracts from knowledge and is a delusion.
But nobody said it!
>> I, being much lazier than Chris, ;-) would have written what I
>> consider more idiomatic C code:
>>
>> PowerString *ps = PowerString_Create();
>& | | | |