From: Harvey Newstrom (mail@HarveyNewstrom.com)
Date: Tue Apr 03 2001 - 08:58:09 MDT
-- Harvey Newstrom <http://HarveyNewstrom.com> <http://Newstaff.com> Jim Fehlinger wrote on Monday, April 02, 2001 7:48 pm, > > _Going Inside..._ by John McCrone. > From Chapter 3 "Ugly Questions About Chaos" (pp. 50-73): > > "[T]he success of the digital computer is founded on precisely its ability > to squeeze out any uncertainty in its behaviour. Computers are built to > follow the same steps and come to the same answers every time they run a > program. I always disagree when people claim that computers are predictable. They are not. There are too many variables that are not predictable. I have debugged too many problems that were not readily reproducible. I even developed a patent-pending method for determining whether a given set of source code produced a given set of executable code. This is because even source code is not predictable! When writing to disk, the file may or may not exist. It may or may not be in use. The disk may or may not be full. The disk may or may not be remotely mounted on another computer over the network. When a write occurs, it may or may not have gotten a random I/O error. It may have been successful or not. It may or may not have gotten written on a bad sector. The file may or may not be fragmented across different segments. It may or may not be cached in memory or really written to disk directly. It may or may not be compressed or not. The disk may or may not be the newest Windows FAT partition table, or it may be in an older format. It may be a disk, a floppy, a CD, or a RAM disk in memory. I think you see my point. There are so many layers of complexity and abstraction, that there is no way to predict exactly what a computer will do. All these variables can occur in any combination. They may or may not work. They may or may not be faster or slower than last time. The program may or may not recover from an unusual error or delay compared to previous runs. When running it again, it may or may not run into the same situation. Most programs do not recover from all possible errors or delay states. They work 99% of the time, but randomly fail or act differently under different conditions. Anybody who uses the Windows operating system will tell you that computers are not reliable or predictable under most circumstances. The main reason that these process are unpredictable is because the disk is a shared resource among dozens of simultaneous processes. The timing of each is dependent on memory fragmentation, disk fragmentation, cup load and micro variations in cup processor speed. There are so many variables that it is virtually impossible to duplicate the exact environment again. Add to that networking or human input, and the system becomes totally unpredictable. Even sunspots and random background radiation can affect network transmission speeds. Back to the original reference, computers are not predictable. What is really occurring is that computers are abstracted. All of the computers can be programmed with the same source code. This does indeed allow them to be mass produced. However, they do not all function the same given the same source code. In the military, we had problems with rounding errors between different computers or chip sets. Even standard mathematical calculations do not come up the same with the same rounding error between machines. One divided by three times three should be one again. Some systems say yes. Others will say 0.9999999... others will round in various other ways. That's just with integer division. Start doing sine waves, electronics and real-time calculations, and calculations become even more fuzzy.
This archive was generated by hypermail 2.1.5 : Sat Nov 02 2002 - 08:06:49 MST