Keep It Simple Stupid

Il semble que la perfection soit atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus rien à retrancher.

It seems that perfection is attained not when there is nothing more to add, but when there is nothing more to remove.

Antoine de Saint Exupéry

In the glory days of Forth, more than any other programming principle, Forth programmers worshipped the KISS principle.

The basic idea is that one should not add unnecessary embellishment to any piece of code (or any piece of technology) if reliability is desired.

When modern programmer conveniences such as optimizing compilers that don’t mess up your code, and source level debuggers were still more science fiction than reality people who managed to keep feature bloat under control had a much better chance of delivering something on schedule than people who just stuffed everything in their designs.

Of course Forth programmers liked to brag a lot how much they can deliver ahead of schedule — not a smart thing to do. Even Scotty from the original Star Trek series claims that star ship captains are like children and the engineers’ job is to give them what they need not what they want. Well, Forth is roughly the same age as Star Trek, so perhaps boasting about finishing everything ahead of schedule was established before computer geeks got addicted to Star Trek.

Worshipping the KISS principle has two interesting sides:

  1. Keeping the design simple is a good thing, so long as the simplification does not reduce features to the level that the product is no longer the one management had in mind when they have started the project.
  2. The same people who seem to worship KISS somehow invent the most ingenious ways to keep something so simple as a Forth interpreter a nightmare to implement — sometimes with questionable or no benefit to real life programs.

The first one is bad for Forth’s reputation, since project managers like to have the product delivered as requested, not as the engineers decided it was convenient to implement.

While I have problem with the second one is that we are approaching a state where the Forth standard is stuffed with everyone’s favourite pet features that a compliant system supposed to support — sometimes without any benefit to real world programs. A core language supposed to provide basic functionality — the atoms of the language that cannot be build from simpler components in it, and without which the system is not usable. Instead people managed to sneak in abominations such as FM/MOD and SM/REM.

No comments:

Post a Comment