6 Apr 2011 ncm   » (Master)

Hating every existing language is the first glimmer of awareness.

The second comes when you have started inventing languages meant to be better, and find that they are all worse, except the ones that are far, far worse. They share almost all the fundamental flaws of the language you hate most, but with extra fundamental flaws of your own. If you are perceptive enough, you discover you have no idea what really makes a language useful.

The third comes when you realize that no one language is right for everything or everybody. You begin to think your only hope is a completely specialized language, such as one uniquely suited for left-handed color-blind cartoonists, or for cats. ("No one could reject a language made just for them!" But they do.) Real problems refuse to confine themselves to what your language is supposed to be best at, and keep washing over into where it is worst. ("But it has first-order functions, and it's case insensitive! Who really needs speed anyway?")

The fourth is when you realize that ideology works no better in language design than in governance, and let real problems constrain the design. Creativity thrives on constraints. Discovering what are the real problems turns out to be way harder, even, than getting a language to help solve them without itself becoming a worse problem. Poisonous complexity emerges at every turn. Formalisms stubbornly refuse to solve problems all by themselves, or prevent them.

Finally you realize that while luck is the lion's share of what makes a language successful, failure can always be traced to fatal flaws the designer was (and usually still is) blind to. First your language has to be good enough, which is nearly impossible, and then it has to be impossibly lucky on top of that. Then you have to work hard, too.

People use a language despite everything about it. Now, as in any quest for enlightenment, we return to the beginning.

Latest blog entries     Older blog entries

New Advogato Features


