Wednesday, February 3, 2010

comp.lang.c - 25 new messages in 6 topics - digest

comp.lang.c
http://groups.google.com/group/comp.lang.c?hl=en

comp.lang.c@googlegroups.com

Today's topics:

* Pointer Question II - The Rebirth - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c/t/17bf09bb220a8480?hl=en
* Warning to newbies - 7 messages, 5 authors
http://groups.google.com/group/comp.lang.c/t/9597fd702985dff4?hl=en
* Copying one array to another array - 10 messages, 6 authors
http://groups.google.com/group/comp.lang.c/t/b8577e4d80b55c5d?hl=en
* fantastic idea - 2 messages, 1 author
http://groups.google.com/group/comp.lang.c/t/bc196209becd8498?hl=en
* memset() on a struct or union - 2 messages, 2 authors
http://groups.google.com/group/comp.lang.c/t/e41e9c30b0f7a050?hl=en
* free c text book advice.. - 3 messages, 3 authors
http://groups.google.com/group/comp.lang.c/t/adf51d19d9b07faf?hl=en

==============================================================================
TOPIC: Pointer Question II - The Rebirth
http://groups.google.com/group/comp.lang.c/t/17bf09bb220a8480?hl=en
==============================================================================

== 1 of 1 ==
Date: Wed, Feb 3 2010 3:49 am
From: Ben Bacarisse


DSF <notavalid@address.here> writes:

> On Tue, 02 Feb 2010 12:01:23 +0000, Ben Bacarisse
> <ben.usenet@bsb.me.uk> wrote:
>
>>DSF <notavalid@address.here> writes:
<snip>
>>> Here's the updated code: (Name's still the same, for now.)
>>>
>>> int StringDelete(char *str, size_t pos, size_t n)
>>> {
>>> char *p1;
>>> char *p2;
>>>
>>> size_t l = strlen(str);
>>>
>>> if(pos < l && !((pos + n) < n))
>>
>>What is that second test all about?
>
> No "mystery." The reason is in the part of my reply to Peter
> Nilsson that was snipped. The second part above simply tests pos + n
> for overflow. Off the top of my head (untested) I guess it could have
> been stated as ((pos + n) >= n) and lose the !, but it does work as
> written.
>
>>
>>> {
>>> if(pos + n > l)
>>> n = l - pos;
>>
>>Ah, maybe you are worried about the possibility that pos+n is bigger
>>than SIZE_MAX. I would test if n > l - pos and adjust if needed and
>>delete the "mystery" test in the previous if.
>
> See above. I really don't think it's all that "mysterious." ;o)

The mystery is why it is there, not what it does. Not only is it not
needed (to get the job done -- you need it with the way you've written
this) it focuses the reader on the wrong thing: something technical
about the addition rather than the logical flaw that n > l - pos.

>>> p1 = str + pos;
>>> p2 = p1 + n;
>>>
>>> while(*p2)
>>> *p1++ = *p2++;
>>> *p1 = *p2;
>>
>>This is what memmove is for.
>
> Yeah, I know. But I figured making a wide (16 bit character)
> version of this function would be a lot easier. Just change all char
> to wchar_t and use the wide version of strlen.

It's not that hard to change memmove to wmemmove at the same time.

Interestingly, I find it easier to write these things with a loop
myself (getting the offsets and lengths right for the memmove often
seems rather fiddly), but I prefer to use the library function in part
because it seems easier to check that the call is correct than to
check all the pointer setup and copying. This may be a figment of my
imagination, but I'd rather have code that is self-evident that code
that was simple to write.

> However,since its
> companion function "StringInsert" already uses memmove, and memmove
> will be faster except on the shortest strings (or if pos+n >= l, in
> which case it merely plops a 0 in str[n]).
>
>>
>>> return 0;
>>> }
>>> return 1;
>>> }
>>
>>Odd return values, but I've seen your explanation of why.
>
> The conventional method would be to return str unaltered, but I
> figure returning "Hey you! Either pos or n is out of range or str is
> shorter that you thought!" would be much more useful for debugging or
> error handling. :o)

An alternative is to return str one success and NULL on failure.
There won't be a lot of benefit, but on occasion the caller will know
that all the sizes are right and they can reply on a non-null result.

--
Ben.

==============================================================================
TOPIC: Warning to newbies
http://groups.google.com/group/comp.lang.c/t/9597fd702985dff4?hl=en
==============================================================================

== 1 of 7 ==
Date: Wed, Feb 3 2010 4:02 am
From: Michael Foukarakis


On Feb 3, 1:27 pm, Tim Streater <timstrea...@waitrose.com> wrote:
> On 03/02/2010 02:33, spinoza1111 wrote:
>
>
>
> > On Feb 3, 12:16 am, Tim Streater<timstrea...@waitrose.com>  wrote:
> >> On 02/02/2010 11:15,spinoza1111wrote:
> >> [snip]
>
> >>> A sensible "C standard" would have in fact defined a new C free of
> >>> these problems:
>
> >> ...
>
> >>> reaching the end of a non-void function without finding a return
> >>> statement, when the return value is used
> >>> But "reaching the end of a non-void function" and falling off the end
> >>> of the world is flat-earth thinking, the unnecessary preservation of
> >>> the mistakes of the past and the limitations of old machines. You
> >>> should have FORCED vendors to hire compiler developers to FIX this
> >>> problem by simply adding a machine language return statement behind
> >>> ALL such functions as a guard, or behind functions where the return is
> >>> missing. This isn't rocket science.
>
> >> You've missed the point here, Baldrick. It's not that the function won't
> >> return, but that because execution reaches the end of the function
> >> without encountering a "return x" statement, the value that the function
> >> returns is undefined. This is obviously a problem if the caller expects
> >> to use the returned value.
>
> >> And "undefined" simply means that the value seen by the caller will be
> >> implementation-defined and therefore could be anything. I add this as
> >> you don't appear to understand this simple point.
>
> > To say it's "implementation defined" and to claim this is a standard
> > is bullshit. If it's "implementation defined" then it's not a
> > standard.
>
> Well done for sidestepping the major flaw that I pointed out, and
> focussing on the second point.
>
> > "International standard for dildoes"! "Anything you like including
> > exploding ones!"
>
> > That is: standardization is for the safety and convenience of the
> > consumer/user, not for compiler vendors. Underwriter's Laboratories
> > certifies electrical products as safe, it does NOT say that "the
> > result is undefined", ...
>
> Safe when used as directed. UL will doubtless specify the voltage range,
> temperature range, humidity, and so on. To go outside these limits is
> potentially *unsafe* and what actually happens is undefined. Get the
> point now?

Even on the off-chance a troll does, it won't admit it.


== 2 of 7 ==
Date: Wed, Feb 3 2010 4:17 am
From: "Chris M. Thomasson"


"spinoza1111" <spinoza1111@yahoo.com> wrote in message
news:20199eab-fa3a-435f-ab06-c3789b12d59b@x10g2000prk.googlegroups.com...
On Feb 2, 6:44 pm, "James" <n...@spam.invalid> wrote:
[...]

> > BTW, I personally think that you were able to "convert" one other
> > "clever"
> > person that writes to this "humble" little list from time to time. That
> > would be 'Chris M. Thomason' based on the following thread:
> >
> > http://groups.google.com/group/comp.lang.c/browse_frm/thread/6b84114d...
> >
> > Please Nilges, teach me how you managed to get an "apparent" asshole
> > like
> > Chris T to treat you with respect!? I read that thread, and he seemed
> > fairly
> > disrespectful to you at __first__? Then, he, well, changed?????

> I remember that exchange. I wasn't as good a poet back then, but we
> did successfully work together. This is what this newsgroup is for.
> Unfortunately, such outcomes are rare. And that discussion was spammed
> by the regs, who were enraged that Chris and I were actually working
> together and solving a problem.

> The problem was one of computer science, but Kiki, filled with
> resentment if not hate, kept whining that it was off topic because C
> Sharp could handle the problem with ease.

Yes, C# can indeed handle the problem. However, it's not exactly all that
"efficient" because it needs to do a full blown copy-on-write and use
garbage collection to ensure that everything works as expected. In other
words, I cannot operate on data-structures directly like I can using
assembly language. FWIW, this is exactly how Sun implemented
`AtomicStampedReference'.


C# and Java basically have to do something like the following pseudo-code:
___________________________________________________________________
bool CASX(value current,
value comparand,
value exchange)
{
value new_exchange = new value(exchange); // copy

for (;;)
{
value ref_current = current;

if (! COMPARE(ref_current, comparand)) return false;

if (CAS(current, ref_current, new_exchange)) return true;
}
}
___________________________________________________________________


This logic will most definitely work, but unfortunately a high amount of
"pressure" will be bearing down on the memory allocator and garbage
collector if I frequently execute it. This is why I was so disappointed to
find out that Sun implemented `AtomicStampedReference' this way.


I cannot think of any other technique to implement DWCAS in 100% pure C#
without resorting to COW. I thought of a possible optimization which
involved reusing allocated data-structures, but sadly this won't work due to
a fairly nasty race-condition called the ABA problem:


http://en.wikipedia.org/wiki/ABA_problem


Well, I can solve all of this by resorting to using unsafe code in C#. But
that would make the C# code highly non-portable because I would have to
create an assembly language implementation of DWCAS for every architecture I
want to port to. I expect this for a language like C, but NOT for C#!!!


;^(...


[...]

== 3 of 7 ==
Date: Wed, Feb 3 2010 4:55 am
From: Nick Keighley


On 3 Feb, 04:53, Seebs <usenet-nos...@seebs.net> wrote:

> This stuff makes me wonder sometimes if he's a Poe.

ok you got me.

Perl Object Environment, Power Over Ethernet or Problem of Evil?

It can't be Post Once Exactly, Product of Experts or Purity of
Essence.

And I like Propagation of Error and Greek Cycling Federation (it makes
more sense in greek presumably) as outliers.

== 4 of 7 ==
Date: Wed, Feb 3 2010 5:12 am
From: Michael Foukarakis


On Feb 3, 2:55 pm, Nick Keighley <nick_keighley_nos...@hotmail.com>
wrote:
> On 3 Feb, 04:53, Seebs <usenet-nos...@seebs.net> wrote:
>
> > This stuff makes me wonder sometimes if he's a Poe.
>
> ok you got me.
>
> Perl Object Environment, Power Over Ethernet or Problem of Evil?
>
> It can't be Post Once Exactly, Product of Experts or Purity of
> Essence.
>
> And I like Propagation of Error and Greek Cycling Federation (it makes
> more sense in greek presumably) as outliers.

World Trade Organization makes more sense in greek actually. Contains
significantly more irony as well. :-)


== 5 of 7 ==
Date: Wed, Feb 3 2010 5:26 am
From: santosh


Nick Keighley wrote:
> On 3 Feb, 04:53, Seebs <usenet-nos...@seebs.net> wrote:
>
> > This stuff makes me wonder sometimes if he's a Poe.
>
> ok you got me.
>
> Perl Object Environment, Power Over Ethernet or Problem of Evil?
>
> It can't be Post Once Exactly, Product of Experts or Purity of
> Essence.
>
> And I like Propagation of Error and Greek Cycling Federation (it makes
> more sense in greek presumably) as outliers.

I'm guessing that it's to do with Edgar Allen Poe.


== 6 of 7 ==
Date: Wed, Feb 3 2010 5:38 am
From: Richard Heathfield


santosh wrote:
> Nick Keighley wrote:
>> On 3 Feb, 04:53, Seebs <usenet-nos...@seebs.net> wrote:
>>
>>> This stuff makes me wonder sometimes if he's a Poe.
>> ok you got me.
>>
>> Perl Object Environment, Power Over Ethernet or Problem of Evil?
>>
>> It can't be Post Once Exactly, Product of Experts or Purity of
>> Essence.
>>
>> And I like Propagation of Error and Greek Cycling Federation (it makes
>> more sense in greek presumably) as outliers.
>
> I'm guessing that it's to do with Edgar Allen Poe.

I'm guessing you're wrong. But my own guess as to what he means is
unprintable, so I won't print it.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within


== 7 of 7 ==
Date: Wed, Feb 3 2010 5:43 am
From: Michael Foukarakis


On Feb 3, 3:26 pm, santosh <santosh....@gmail.com> wrote:
> Nick Keighley wrote:
> > On 3 Feb, 04:53, Seebs <usenet-nos...@seebs.net> wrote:
>
> > > This stuff makes me wonder sometimes if he's a Poe.
>
> > ok you got me.
>
> > Perl Object Environment, Power Over Ethernet or Problem of Evil?
>
> > It can't be Post Once Exactly, Product of Experts or Purity of
> > Essence.
>
> > And I like Propagation of Error and Greek Cycling Federation (it makes
> > more sense in greek presumably) as outliers.
>
> I'm guessing that it's to do with Edgar Allen Poe.

Preposterous!

==============================================================================
TOPIC: Copying one array to another array
http://groups.google.com/group/comp.lang.c/t/b8577e4d80b55c5d?hl=en
==============================================================================

== 1 of 10 ==
Date: Wed, Feb 3 2010 4:04 am
From: janus


Hello All,

I was not able to carry out the below,

int array1 = {{2,1},{1,0}};
int array2 = {{3, 5},{7,9}};

array2 = array1;

I got incompatible type error.

My only saving grace was memcpy... Now, I would want somebody to
explain why array to array copying failed.

Regards,
Janus


== 2 of 10 ==
Date: Wed, Feb 3 2010 4:29 am
From: Ben Bacarisse


janus <emekamicro@gmail.com> writes:

> I was not able to carry out the below,
>
> int array1 = {{2,1},{1,0}};
> int array2 = {{3, 5},{7,9}};
>
> array2 = array1;

It is better to cut and paste (or similar). Neither array1 nor array2
is declared as an array so your example does illustrate what you were
doing.

> I got incompatible type error.
>
> My only saving grace was memcpy... Now, I would want somebody to
> explain why array to array copying failed.

There are lots of levels for such an explanation. The simplest is
that C is designed that way: arrays are not "assignable". Another is
slightly more technical: the name of an array is converted to a
pointer to its first element[1] so that both sides of what appears to
be an array assignment are, in fact, pointer valued expressions.
Worse, the one on the left is not a modifiable lvalue -- it is just a
value and you can't assign to such a thing. One could get more
technical still and explain it all in terms used by the language
standard, but I doubt that would help.

There are also other kinds of explanation that would explain why is C
designed this way, but I am not sure I fancy trying that one!

So, in short, C is just like that. You can't assign whole arrays and
you have to use something like memcpy instead.

[1] There are a few exceptions, but lets keep this simple.
--
Ben.


== 3 of 10 ==
Date: Wed, Feb 3 2010 4:31 am
From: Richard Heathfield


janus wrote:
> Hello All,
>
> I was not able to carry out the below,
>
> int array1 = {{2,1},{1,0}};
> int array2 = {{3, 5},{7,9}};
>
> array2 = array1;
>
> I got incompatible type error.

Yes. The implementation is obliged to issue a diagnostic message for any
program that contains any constraint violations. Your code violates this
constraint:

"An assignment operator shall have a modifiable lvalue as its left operand."

See 3.3.16 of C89, or the corresponding passage in C99. (I really,
really must put my copy of that document onto this laptop!)

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within


== 4 of 10 ==
Date: Wed, Feb 3 2010 4:33 am
From: Richard Heathfield


Ben Bacarisse wrote:
> janus <emekamicro@gmail.com> writes:
>
>> I was not able to carry out the below,
>>
>> int array1 = {{2,1},{1,0}};
>> int array2 = {{3, 5},{7,9}};
>>
>> array2 = array1;
>
> It is better to cut and paste (or similar). Neither array1 nor array2
> is declared as an array

Well spotted. I missed the omission of [] in the definitions...

> so your example does illustrate what you were
> doing.

...but on the other hand, I didn't miss the omission of "not" in your
reply! :-)

<snip>

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
"Usenet is a strange place" - dmr 29 July 1999
Sig line vacant - apply within


== 5 of 10 ==
Date: Wed, Feb 3 2010 4:36 am
From: "Chris M. Thomasson"


"janus" <emekamicro@gmail.com> wrote in message
news:fbabffc9-7dd1-42bd-bef7-cee402f7ab57@z26g2000yqm.googlegroups.com...
> Hello All,
>
> I was not able to carry out the below,
>
> int array1 = {{2,1},{1,0}};
> int array2 = {{3, 5},{7,9}};
>
> array2 = array1;
>
> I got incompatible type error.
>
> My only saving grace was memcpy... Now, I would want somebody to
> explain why array to array copying failed.

FWIW, you can embed an array in a struct:
__________________________________________________
struct array
{
int buffer[4];
};


int
main(void)
{
struct array a1;
struct array a2 = { { 1, 2, 3, 4 } };

a1 = a2;

return 0;
}
__________________________________________________

== 6 of 10 ==
Date: Wed, Feb 3 2010 4:36 am
From: santosh


janus wrote:
> Hello All,
>
> I was not able to carry out the below,
>
> int array1 = {{2,1},{1,0}};
> int array2 = {{3, 5},{7,9}};

You probably meant:

int array1[][2] = {{2, 1}, {1, 0}};

and so on.

> array2 = array1;

C doesn't natively support assigning one array to another. You'll have
to use a loop. For example:

for (int i = 0; i < MAX; i++) {
for (int j = 0; j < MAX; j++) {
printf("%d\n", array1[i][j]);
}
}


> My only saving grace was memcpy...

How was memcpy() your saving grace??


== 7 of 10 ==
Date: Wed, Feb 3 2010 4:44 am
From: santosh


santosh wrote:
> janus wrote:
> > Hello All,
> >
> > I was not able to carry out the below,
> >
> > int array1 = {{2,1},{1,0}};
> > int array2 = {{3, 5},{7,9}};
>
> You probably meant:
>
> int array1[][2] = {{2, 1}, {1, 0}};
>
> and so on.
>
> > array2 = array1;
>
> C doesn't natively support assigning one array to another. You'll have
> to use a loop. For example:
>
> for (int i = 0; i < MAX; i++) {
> for (int j = 0; j < MAX; j++) {
> printf("%d\n", array1[i][j]);
> }
> }

The above loop just prints the values of array1. To copy it into
array2, something like the code below is needed.

for (int i = 0; i < MAX; i++) {
for (int j = 0; j < MAX; j++) {
array2[i][j] = array1[i][j];
}
}

This assumes that both arrays MAX elements for both dimensions, and
you want a simple element by element copy of the whole array. For
fancier scenarios, you'll have to adjust the parameters of the loop.


== 8 of 10 ==
Date: Wed, Feb 3 2010 5:17 am
From: richard@cogsci.ed.ac.uk (Richard Tobin)


In article <0.fb05f088d46e8f9ed682.20100203122914GMT.873a1i5wpx.fsf@bsb.me.uk>,
Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:

>There are lots of levels for such an explanation. The simplest is
>that C is designed that way: arrays are not "assignable". Another is
>slightly more technical: the name of an array is converted to a
>pointer to its first element[1] so that both sides of what appears to
>be an array assignment are, in fact, pointer valued expressions.
>Worse, the one on the left is not a modifiable lvalue -- it is just a
>value and you can't assign to such a thing.

You can see this last point by trying

*(int (*)[2][2])array2 = *(int (*)[2][2])array1;

which is still an error, even though you have succeeded in getting
hold of the array (as an lvalue) rather than a pointer to its first
element.

-- Richard
--
Please remember to mention me / in tapes you leave behind.


== 9 of 10 ==
Date: Wed, Feb 3 2010 5:24 am
From: Ben Bacarisse


santosh <santosh.k83@gmail.com> writes:

> janus wrote:
>> Hello All,
>>
>> I was not able to carry out the below,
>>
>> int array1 = {{2,1},{1,0}};
>> int array2 = {{3, 5},{7,9}};
>
> You probably meant:
>
> int array1[][2] = {{2, 1}, {1, 0}};
>
> and so on.
>
>> array2 = array1;
>
> C doesn't natively support assigning one array to another. You'll have
> to use a loop. For example:
>
> for (int i = 0; i < MAX; i++) {
> for (int j = 0; j < MAX; j++) {
> printf("%d\n", array1[i][j]);
> }
> }

[I note you correct this to a copy in another post]. This is, for
me, a messy way to do it. If either dimension changes (or, worse,
the number of dimensions) this code must be found and changed.

>> My only saving grace was memcpy...
>
> How was memcpy() your saving grace??

Maybe because memcpy(array2, array1, sizeof array2); does what is
wanted in a way that need not change if the array sizes do? Of course
it breaks on some changes (such as moving the code into a function)
but it does enough to be described as a solution even if you'd not go
so far as to call it a saving grace.

--
Ben.


== 10 of 10 ==
Date: Wed, Feb 3 2010 5:44 am
From: santosh


Ben Bacarisse wrote:
> santosh <santosh.k83@gmail.com> writes:
> > janus wrote:

> >> I was not able to carry out the below,
> >>
> >> int array1 = {{2,1},{1,0}};
> >> int array2 = {{3, 5},{7,9}};

> >> array2 = array1;
> >
> > C doesn't natively support assigning one array to another. You'll have
> > to use a loop. For example:
> >
> > for (int i = 0; i < MAX; i++) {
> > for (int j = 0; j < MAX; j++) {
> > printf("%d\n", array1[i][j]);
> > }
> > }
>
> [I note you correct this to a copy in another post]. This is, for
> me, a messy way to do it. If either dimension changes (or, worse,
> the number of dimensions) this code must be found and changed.
>
> >> My only saving grace was memcpy...
> >
> > How was memcpy() your saving grace??
>
> Maybe because memcpy(array2, array1, sizeof array2); does what is
> wanted in a way that need not change if the array sizes do? Of course
> it breaks on some changes (such as moving the code into a function)
> but it does enough to be described as a solution even if you'd not go
> so far as to call it a saving grace.

Yes, thanks for mentioning that. But memcpy() will also have to be
checked and modified, if necessary, when either array's size or
dimensions change.

==============================================================================
TOPIC: fantastic idea
http://groups.google.com/group/comp.lang.c/t/bc196209becd8498?hl=en
==============================================================================

== 1 of 2 ==
Date: Wed, Feb 3 2010 4:20 am
From: mathi


This site, http://www.shoppingreps.com?SourceId=1244 allows customers
to work as group representative to a group of people. It is a
fantastic idea. I want to buy a cell phone and I registered my
intention. I am waiting for more than 1 week but I didn't get any
email or any other information about my group. I am supposed to get a
chance for bargaining in my city. I know a couple of store where I can
bargain very well quite interesting. This is the site see for yourself
http://www.shoppingreps.com?SourceId=1244


== 2 of 2 ==
Date: Wed, Feb 3 2010 4:20 am
From: mathi


This site, http://www.shoppingreps.com?SourceId=1244 allows customers
to work as group representative to a group of people. It is a
fantastic idea. I want to buy a cell phone and I registered my
intention. I am waiting for more than 1 week but I didn't get any
email or any other information about my group. I am supposed to get a
chance for bargaining in my city. I know a couple of store where I can
bargain very well quite interesting. This is the site see for yourself
http://www.shoppingreps.com?SourceId=1244

==============================================================================
TOPIC: memset() on a struct or union
http://groups.google.com/group/comp.lang.c/t/e41e9c30b0f7a050?hl=en
==============================================================================

== 1 of 2 ==
Date: Wed, Feb 3 2010 4:52 am
From: santosh


bartc wrote:
> "Joe Wright" <joewwright@comcast.net> wrote in message
> news:XdSdnYjzQrPAOvXWnZ2dnUVZ_q9i4p2d@giganews.com...
> > Richard Tobin wrote:
> >> In article <hk9abg$iso$1@news.eternal-september.org>,
> >> Eric Sosman <esosman@ieee-dot-org.invalid> wrote:
> >>
> >>> Please refrain from using outmoded, idiosyncratic and
> >>> purely local terms in describing your forthcoming conquest.
> >>> The accepted International Standard language would be "When
> >>> I crush nations under my meters ..."
> >>
> >> Surely the International Standard spelling is "metres".

> > I believe you'll find the international spelling to be "meter" except
> > perhaps in Paris. And we know the French can't spell. Chien Chaud indeed.
>
> A meter is what you have under the stairs.
>
> A metre is 1000/25.4 inches.

Yep. Metre is the spelling used in Commonwealth countries, but I'm
familiar with both to the point that I sometimes interchange between
them when writing; a bad habit I know.


== 2 of 2 ==
Date: Wed, Feb 3 2010 5:04 am
From: richard@cogsci.ed.ac.uk (Richard Tobin)


In article <zOadnWDhAa_6bvXWnZ2dnUVZ_sednZ2d@giganews.com>,
Joe Wright <joewwright@comcast.net> wrote:

>Look up "metre" in any dictionary you have to hand. You will be referred to
>"meter" is every case.

The OED gives "meter" as an alternative spelling under "metre", and
describes it as "chiefly U.S.".

-- Richard
--
Please remember to mention me / in tapes you leave behind.

==============================================================================
TOPIC: free c text book advice..
http://groups.google.com/group/comp.lang.c/t/adf51d19d9b07faf?hl=en
==============================================================================

== 1 of 3 ==
Date: Wed, Feb 3 2010 4:58 am
From: santosh


Nick Keighley wrote:
> On 3 Feb, 08:45, Richard <rgrd...@gmail.com> wrote:
[...]
> > >> On Wed, 03 Feb 2010 01:14:01 +0000, Richard Heathfield
> >
> > >> >Only a complete idiot would consider that a recommendation. This
> > >> >newsgroup appears to have no shortage of idiots.
[...]
> > So when Heathfield googled up and posted a link that might help and gave a
> > guarded caveat you think that is NOT recommending?
>
> a very heavily guarded caveat; so yes that is NOT recommending. It's
> odd which people read it one way and which the other (both ways
> round).
[...]

That's right. Richard mentioned an option, a possibility, for the OP.
He didn't recommend it by a long shot.


== 2 of 3 ==
Date: Wed, Feb 3 2010 4:58 am
From: richard@cogsci.ed.ac.uk (Richard Tobin)


In article <hkbd3k$tr0$1@news.eternal-september.org>,
Richard <rgrdev_@gmail.com> wrote:

>So when Heathfield googled up and posted a link that might help and gave a
>guarded caveat you think that is NOT recommending?

It's certainly what I think.

>So he posted a link to something he does NOT recommend?

He posted a link to something that he neither recommends nor
disrecommends. What is odd about that?

-- Richard
--
Please remember to mention me / in tapes you leave behind.


== 3 of 3 ==
Date: Wed, Feb 3 2010 5:14 am
From: Michael Foukarakis


On Feb 3, 10:45 am, Richard <rgrd...@gmail.com> wrote:
> Nick Keighley <nick_keighley_nos...@hotmail.com> writes:
> > On 3 Feb, 05:20, c...@tiac.net (Richard Harter) wrote:
> >> On Wed, 03 Feb 2010 01:14:01 +0000, Richard Heathfield
>
> >> >Only a complete idiot would consider that a recommendation. This
> >> >newsgroup appears to have no shortage of idiots.
>
> >> This sort of thing is one reason why you raise people's hackles.
> >> Calling people idiots, stupid, losers and the like is common
> >> enough among bright progammers.  It's a trap.  People do not
> >> respond well to perceived arrogance and condescension.
>
> > but there comes a point when their idocy is so plain that "complete
> > idiot" is the only way to describe them. I'll give Jacob a free pass
> > as he's a non-native speaker (though he does look like he just wants a
> > poke at Richard Heathfield) but Richard <noname> and twinky are just
> > arguing for the sake of arguing.
>
> > Actually calling themn "idiots" is to be offensive to people who have
> > genuine cognitive challenges. I'd rather deal with genuine but not
> > very bright people than the smart but contrary.
>
> > --
>
> >    "There are some ideas so wrong that only a very intelligent person
> >   could believe in them."                           -- George Orwell
>
> So when Heathfield googled up and posted a link that might help and gave a
> guarded caveat you think that is NOT recommending?
>
> So he posted a link to something he does NOT recommend?
>
> Please. Use your noddle.

Ah, the human brain, the context-sensitive asshole. Most people just
see what they want to see, apparently.


==============================================================================

You received this message because you are subscribed to the Google Groups "comp.lang.c"
group.

To post to this group, visit http://groups.google.com/group/comp.lang.c?hl=en

To unsubscribe from this group, send email to comp.lang.c+unsubscribe@googlegroups.com

To change the way you get mail from this group, visit:
http://groups.google.com/group/comp.lang.c/subscribe?hl=en

To report abuse, send email explaining the problem to abuse@googlegroups.com

==============================================================================
Google Groups: http://groups.google.com/?hl=en

No comments:

Post a Comment