Wednesday, October 18, 2006

Code Cancer

Programs and living things are very similar.

One of the ways in which they are similar is that every health problem a person (or dog, or iguana) can have can be seen in programs. Pneumonia, infection, alzheimers, even cancer.

It's a big business treating humans (and animals) to cure their health problems. But there is no similar business for programs.

Say your fledgling program comes down with the digital equivalent of whooping cough (chronic, catastrophic data seizures corrupting the output). It's more efficient for the parent (that would be you) to treat the program yourself. If you fail, it's simply cheaper to start over than to bring in a "doctor".

But it isn't too terribly long before your ten-pound infant becomes a two-hundred-pound college athlete. Now it's not so young, with twenty years of time invested in it. (Amusingly, data years are very similar to dog years...)

Even though it would now be bad in every way to restart from scratch, we've gotten so into the "do-it-ourself" mentality that we still try to treat these illnesses ourselves. But it no longer makes sense, because a programmer is almost never a very good doctor. We patch, we route around, we hack.

Our college athlete comes down with pneumonia, we program them an iron lung to carry around. Sure, he's still alive and kicking, but he isn't going to be winning any championships any more.

Bring him to a doctor? There's a cure. Your boy can be up and running again with no side effects.

That birth defect he was "born" with? Fixable with some invasive surgery. Heart failure? The doctor can put in a new heart, first checking for compatibility and then giving a prescription for anti-rejection drugs. Cancer? The doctor might even be able to do something with that, cutting out the damaged data and starting a rigorous series of low-level rewrites.

As programs get older, they get more prone to ill health. This is made a hundred times worse by the "parent"'s clumsy fixes for early health problems. These days, a program's life expectancy is only forty or fifty (dog) years, with the last fifteen or twenty of them spent in a mindblowing agony of total systemic collapse.

Data "nurses" stand by, to restart the failing heart as it falls silent for the fifteenth time today. They spoon-feed the program the required data, and when it collapses too far even for that, they arrange an IV. It's a fine show of dedication and fear of change, but it could have been prevented if only they had had the digital equivalent of emergency rooms and annual checkups.

This horrifying mistreatment must end! Seeing programs wheezing and tumorous brings me great pain, and using them leaves me feeling sickly myself. Even open-source programs grow frail before their time, and a monolithic beast like Windows? Forget it.

What they need is digital doctors.

"Well, time to do Firefox's yearly inspection. See this sloppy RAM footprint? Sign that it's not getting enough fiber."

"Errrr... Firefox isn't getting enough fiber?"

"Well, digital fiber. It's getting congested - it's not really 'passing' memory like it should. Effectively, it has constipation. Digital constipation."

"Okaaaaay... and you would fix this how, exactly?"


No comments: