Re: unexpected result



On 2006-03-12, Richard Heathfield <invalid@xxxxxxxxxxxxxxx> wrote:
jaysome said:

<snip>

<dialogue>
Son: "Dad, I want to learn how to program in C."

Dad: "Son, although I admire your goal, I've been reading a lot in CLC
lately, and based on what they're saying in there, I'm pretty shocked
about how a simple, honest mistake you might make could lead to
formatting my hard drive. So I have to say no on this one."

In 1989, I was learning C. The guy sitting next to me was learning C too. He
omitted to provide sufficient storage for a string. (He was just one byte
short.) When the program ran, he saw pretty much what he expected to see,
just general student-program output, you know the stuff - and then, at the
bottom there, it said something like:

"Do you really want to format C: (Y/N)?"

He was *very* fortunate. The result of this particular instance of undefined
behaviour appears to have been a jump into "the system" - and if it had
jumped just a bit further, he could well have had his hard drive formatted
without being asked. No, I'm not making this up.


Yes you are :) Scare mongerer you ... Sounds more like you modified
his program to make him pap his kecks ...

It was clearly a PC then? DOS?

The following year, I'd managed to find a job as a C programmer. A colleague
of mine had clearly been on the Intermediate C course and the Advanced C
course, but had unaccountably failed to turn up for the Basic C course. He
made *exactly the same error* (i.e. an array that was one byte too short
for the string being stored there), and this time it did actually trash the
machine, to the extent that it wouldn't even boot until we started feeding
diagnostic diskettes into it.

If he had done an advanced C course and an Intermediate C course then
he presumably knew about buffer issues in C. It is impossible that he
didnt or his intermediate and his advanced programs would have failed too.

Good C programmers frequently get the count wrong on array traversal :
and it doesnt cause your hard disk to get erased. All programmers are
human.

Well, in 99.99999999999999% of the cases. The old "n-1" will haunt C
programmers for years no matter good : its experience which means we
avoid it most of the time.

(Oh and did I mention a good debugger would catch it too ..)


Your "Dad" character is quite right. Leave C well alone unless you're
prepared to spend the time and effort it takes to get it right.


Alternatively, jump in there with a good book and have a lot fun
learning the language. If you worried that your hard disk would melt
for every out of control memory access you have in C then trust me, C
would be history by now.

.



Relevant Pages

  • Re: unexpected result
    ... Dad: "Son, although I admire your goal, I've been reading a lot in CLC ... and it doesnt cause your hard disk to get erased. ... for every out of control memory access you have in C then trust me, ...
    (comp.lang.c)
  • Re: unexpected result
    ... Dad: "Son, although I admire your goal, I've been reading a lot in CLC ... The guy sitting next to me was learning C too. ... omitted to provide sufficient storage for a string. ...
    (comp.lang.c)
  • Re: Repost - Breaking In/gg
    ... Because your poem?s narrator is focused on the boy, ... both seem to set the tone of the relationship between father ... Though I suppose a "ritual Dad" would help his son with this ...
    (rec.arts.poems)
  • Liverpool joke
    ... SON "Dad, my mates in school told me that Liverpool won the ... DAD "Yes son, it's true, but they were dead lucky son, all the way ... SON "Jesus Christ - so Liverpool beat the English Champions elect too" ... against the best defence in Europe" ...
    (rec.sport.soccer)
  • Re: Liverpool joke
    ... SON "Dad, my mates in school told me that Liverpool won the ... DAD "Yes son, it's true, but they were dead lucky son, all the way ... SON "Jesus Christ - so Liverpool beat the English Champions elect too" ... against the best defence in Europe" ...
    (rec.sport.soccer)