Monday, June 27, 2005

Why PL folks need to work in systems

In the technology world, I have a dream. I have a dream that when I install software, it simply works. And if it fails to work, it explains why it fails, and then, it fixes itself, and it simply works.

How many times have you downloaded something, and had to spend hours or days, trying to figure out why the installation failed? Why is this kind of machismo looked so favorably among software engineers? It's a badge of honor to be able to install software that has little to no documentation, that depends on crap like DLLs and obscure patches, and obscure drivers, with arcane invocations to get things to work.

The solution? Programming languages researchers need to rescue us from this mess.

PL researchers learned to formalize languages. This has lead to a world that programmers understand. More or less, if you follow the rules, you can get a program to compile and run, and if it fails, more or less, you know why. It ain't perfect, not by a long shot. If it fails, it doesn't really tell you why, except cursorily.

Yet, PL folks stay confined to their sandboxed world. I'm sorry, but software runs on a system, and there's no formalism governing the OS they run on. If good languages are math, good OSes are complete hacks jerry-rigged by people who, through brute force, just made it work. Ask them if they have proofs or a formalism, and they will laugh.

One possible solution, were performance not a total issue, is the browser. If a browser could provide a generic environment that's the same on any machine, then you'd go to a website and use the software, and there'd be no installation, and so forth. But browsers can run like a dog, well, a three-legged dog with constipation, as dogs actually run quite quickly.

I ask the PL folks of the world to save us from the horrendousness of software installation. It's about time.

No comments: