Do computrer programs slowly degrade over time?

Something I’ve always wondered. Say you have a program which has been running continuously on your machine for 5 years. Will little errors slip in there from time to time, causing mainly very minor bugs as time passes? I ask because a game of mine is having a few little problems like that-it still runs, but some occasional things I don’t remember seeing happen before happen once in awhile now.

I’d be more inclined to think that something else on your computer that the game interacts with has changed. Most programs won’t corrupt themselves unless they fail very badly, and that would be more likely to cause it not to run at all.

Programs are surprisingly intolerant to errors. A single bit that gets changed in a random location is likely to crash a program. That said, preference files, and other private data can become corrupted and cause weird problems, but erasing those files should bring the program back to it’s original performance.

What do you mean by “running continually?”

Or “continuously,” even.

Well not literally-just installed and used over a period of years.

[Toddling off to bed before I say something else nonsensical]

If the copy of the program remains identical and uncorrupted on the hard disk, the data it deals with remains identical and uncorrupted, and the environment it operates in remains identical and uncorrupted, they it will perform precisely the same. None of these conditions can be guaranteed however.

Your game certainly has bugs, which may for instances write out to a save game file or log and accumulate errors. More likely the environment it is in has changed; you have updated OS versions, SPs, driver updates, or even changed hardware.

Not in the graphics. However, checksums on the disk, and other protections for media errors, should prevent bit crud.

As ultrafilter said, though, the environment on the computer changes all the time. Programs are never totally self contained, so if the programmer was using a non-standard OS call or other trick, a patch might affect your program. If you never touch anything, it should run forever. (Or until the hardware dies.) When I pulled out my old W98 machine last Christmas, it ran as well (or as poorly) as it did when I put it in the garage.

Generally speaking, programs don’t degrade, but the environment they run in can. And when we say “degrade” we must distinguish between the program actually executing in memory, and the copy of the program stored on the disk.

Programs running in memory can degrade in a sense, in that they may have errors that cause problems over time. They may have memory “leaks”, which means they may use up memory over time that may cause the system to run out of available memory. They may have open file buffers that don’t get flushed, open index or keys that don’t get sorted or optimized when needed, internal counters that aren’t reset properly, etc.

Some of these things may cause the program to slow down, many will just cause the program to crash when they hit some threshold that the program can no longer tolerate.

All of those things are normally cleaned up and reset by ending the program and restarting it, or by maintenance to your database files. Unless you’ve got some serious problems the program itself is normally completely fresh and identical to how it was from the factory each time it is loaded from disc into memory.

Other problems in the computer can also cause the program to slow down over time. Low disc space, memory allocated to other processes, other processes taking up processing time, fragmented files or free space, overheating or failing components, etc., can all cause slow downs or outright crashes.

All of these are outside of the program and simply restarting the program will usually have no effect. Other measures, all the way from something as simple as rebooting the computer, to disk compression, to a complete reload of the system are usually required to fix these kinds of things.

There would be two types of failures, hardware and software. Hardware failures would be due to component failure or introduction of errors by external means such as a voltage spike. Software failure would depend on the complexity of the program and the ability of the program to deal with unanticipated input or commands.

Hardware failure would effect other programs.

Software failure (other than the OS) would not effect other programs and those failures could be subtle or profound. Also those failures could be dealt with by the program or not anticipated by the programmers.

Example 1:
Freddy Pharkas, Frontier Pharmacist, would display an error screen when you mixed ingredients that the program didn’t expect. You would be prompted to continue with the program clearing the erratic data.

Example 2:
Arcade ‘Galaga’, would have no more bombs it you killed all but the two left bees in screens one or two and waited fifteen minutes for the bombs to run out. The bombs would never return. The programmers never incorporated routines to deal with program errors.

It is more probable that only you would come across the failure in Example 2 if you left the game on for a long period.

By definition a computer program doesn’t change any more than a book changes. OTOH, the environment in which the program runs (the operating system) does change and what the user sees is the combination of the two. And the copy of the program residing in memory might change over long periods of time due to random events, but loading a new copy would fix that. As for a game, reading the media (either a CD or a solid state device) is the most likely cause of any changes over time. The readers are made as cheaply as possible and operate as such.

One of the bedrock principles of software reliability is that software does not break or wear out. It may have well hidden bugs that take time to become apparent, or the hardware may become unreliable, but those are not signs of wear.

There is another kind of bit rot that affects programs that aren’t running and don’t even exist in executable form for decades. This bit rot happens when a program written for one environment and stored in human-readable source code form (as opposed to machine-executable binary form) must be made to work in another, very different environment. This ‘very different environment’ might be the ‘same’ OS (after a lot of major version changes) and the ‘same’ hardware (after a few decades’ worth of upgrading and bugfixing) but it can be a big deal just the same.

Or the program might work just fine, even though it was written during the Johnson administration for a computer and OS both made by a company that went belly-up before anyone had heard of Microsoft. It all depends on the standards, both explicit and de facto, adhered to by the people who wrote it and the people making hardware and OSes these days.

Imagine your harddrive…as a Big Square. Now, break that square up into a grid of blocks 40,000 by 40,000. We’ll call this a 40Gig harddrive.

Now, depending on if your OS was installed with FAT32 (older) or NTFS (fairly newer) filing system, your harddrive will store files in as nice, even spaces as they can, just like stacking things up in teh back of your garage. Now, unlike in a garage, your harddrive can swoop in and yank something right out of the middle of the pile: deleted.

Now, say that deleted item was 1Gig. Now you have a 1Gig gap between items. Now, you create a word document that’s 1MB and you save it. Guess where the HD puts it. Yep, right in that little hole towards the outter ring of the drive plates. After a while you have shit scattered all over the place and the computer has to go through all this in a nonsensical routine to find what it needs and bring it to your GUI (monitor).

What you want to do, and what should be done on a monthly basis, is run your Disk Defragmentation device. (Start, Prgrams, Accessories, System Tools). You simply click Analyze and the program will just run from there.

Also removing Adware or backing up your files and reformating the OS will bring out a significant LEAP in computer performance.

I use a split partitioned Harddrive and put my OS on one side and my files and programs on the other. I can format my OS partition with impunity (and I do about once a month) and never need to worry about running a virus program or adware software because it all gets blown away and most virus’ don’t reinitialize themselves into an OS if they’re stored as an MP3 or some such nonsense unless I execute it again, which I can tell if something is unpacking a darned virus or playing my porn I searched so hard for (you know the ones that spell certain taboos 97 different ways to be sure that, no matter what you search for, you get their file as a hit.)