Neil's News

Creeping Featurism

3 July 2004

In the beginning there was BASIC. And it was good. But not perfect. So the language was slowly expanded until it now has a GUI (Visual Basic), can build web pages (ASP) and can take control of your computer (VBA). As a language Basic went from being clean simple language that could live in a 4KB ROM to a hideous monster that can no longer say "Hello world" in under 1.44MB.

Then there was Perl. A wonderful little language that was written around the power of regular expressions. But over time it was expanded with strange hacks to provide OO capabilities. Perl can now do anything, but it has become a mess.

One of the new languages on the block is Euphoria. Its slogan is "Just say NO to complicated programming languages!" Writing small programs in Euphora is fun, but one soon gets reminded that this is a language in its teenage years. There's no abs() function. There's no namespace separation between libraries so all functions everywhere must be uniquely named. In time Euphoria will grow up, but history suggests that when it does it will be more similar to its complicated cousins than its designers would like.

Everywhere I look I see languages following the same 20 year life-cycle. They start out as beautifully simple but slightly limited languages. Improvements are hacked on to alleviate the limitations. At some ill-defined point the language loses sight of the simple philosophy around which it was built. It gradually fades away as people defect to younger, more elegant languages.

There's one exception: MOO. Like all languages it has some limitations and annoyances. Whether it is adding SQL or WAIFs, the temptation is to scratch an itch and extend the language in ways it wasn't designed for. But the MOO language was spared this fate because its developers at Xerox seem to have disappeared eight years ago -- just as it matured. Nobody is around to mess it up.

< Previous | Next >

Legal yada yada: My views do not necessarily represent those of my employer or my goldfish.