Is this the $64,000 dollar question????

greenspun.com : LUSENET : TimeBomb 2000 (Y2000) : One Thread

I keep reading this statement and I wonder which part of it is true: The Year 2000 problem stems from an old programming habit of using just two digits to represent years in dates. Unless fixed, computers may read 00 as 1900 instead of 2000 and either stop working or miscalculate data.

What will actually happen,(a) the computer will stop working ie CRASH or(b) will it miscalculate data which means alot of bad data floating around to do what? I know we see this message everyday but do people know what it means?

-- y2k dave (xsdaa111@hotmail.com), August 27, 1999

Answers

Sometimes A, sometimes B, sometimes nothing. Depends of the line of code involved. However with enough lines of code and imperfect humans doing the recoding, the odds are pretty good that sooner or later A or B will happen.

-- rambo (rambo@thewoods.com), August 27, 1999.

It would actually be better to have "A" occur -- at least it would be obvious there is a problem, and clear as to what the extent of the effect will be. However, I suspect that "B" is probably going to be the norm, which means you will not be able to trust anything from a computer.

And then there is, of course, the DATA CORRUPTION problem wherein non-compliant computers pass bad data to compliant computers, causing them to now process non-compliant data and produce results that are just as unreliable and untrustworthy. (That is Hoffy's favorite!!)

-- King of Spain (madrid@aol.com), August 27, 1999.

Both a, and b, will happen it's going to be a mess I think. Hoping we muddle trough but kinda know it's going to be rough sence its going to be winter time ....

-- Rooster (Gotitlate@wow.com), August 27, 1999.

Why do I get the feeling you're baiting for something here? I thought you were a programmer. You have an answer in mind and you want to see if anyone here knows it.

The worst I've seen is the computer doesn't sort the data correctly, that is, 00 should come after 99. Also, delta t will also be negative for some period (depending on the computer uses). This will affect billing systems in particular.

-- Maria (anon@ymous.com), August 27, 1999.


Marie,

I am not a programmer and I am not baiting anybody here. We read this type of disclaimer with every y2k article and I am just wondering which one would happen. Now I see that perhaps both will happen. But this does not help me with A as to do computers STOP working because B is occuring?

-- y2k dave (xsdaa111@hotmail.com), August 27, 1999.



The programming habit was "old" not in the sense of long-gone, but in the sense of long-used. During 1998 and probably 1999, new PC software was being released that used 2-digit years. Infoliant reports on compliance, which software vendors are continually re-evaluating. Increasingly, those evaluations are finding that the software once thought compliant is not. So we have a problem of unknown dimensions, and the dimensions are getting vaguer every day.

-- bw (home@puget.sound), August 27, 1999.

>> What will actually happen...? <<

A computer continues to process instructions. That is its nature. It will do whatever the instructions tell it to do. But you need to understand "instructions" in the sense of strings of bits that are fed to the processor, telling it to fetch certain other strings of bits and perform very simple operations on them, like writing them to some other piece of memory, or adding them together and comparing them to some other bit of data to see which represents a larger number. And so on.

Each program will be different.

In some cases, the program may take the data "00" and simply perform calculations with it that produce incorrect results. The bad data just gets written somewhere, or passed on to somewhere else. Nothing much happens until another program tries to use that data. Then, who knows? It's another program, after all, and each one is different.

In some cases the program may recognize that it cannot handle "00" as valid data and it will halt with an error message, complaining that it was given invalid data. If it is in communication with another computer at that time, then the other computer probably cannot complete the transaction properly, but this second computer *may* be notified of the error on the other end of the line and it may then halt with its own error message, or it may try move on to the next transaction. It all depends on the program's logic.

If, for example, the results of a miscalculation using "00" is used to perform a lookup into a table that contains pointers to functions, and the lookup overruns the table, the computer may jump to a random location in memory and begin to perform whatever it finds there as if it were a valid set of instructions. These random instructions get fed to the processor, which blindly attempts to run them. This sort of error generally crashes the computer rather quickly.

Then again, the program might simply log any invalid transactions to disk and attempt to perform the next transaction. It won't get very far, though, if all the transactions contain the same "00" data. Eventually it will fill the disk with the log of bad transactions and be unable to continue.

A good programmer strives to anticipate as many kinds of bad data as possible and to construct the program to do the most reasonable thing possible among the known alternatives. Not every programmer is a good programmer, and every good programmer has bad days.

In the end it's a huge potluck!

-- Brian McLaughlin (brianm@ims.com), August 27, 1999.


Moderation questions? read the FAQ