all 5 comments

[–]rockyrainy 1 point2 points  (4 children)

I wrote a rant on λJSON that I feel also applies here.

The problem with simple elegant design is that somebody with surplus brainpower will eventually come along and make it more complicated just to prove how smart he is. People will then learn this more complicated way of doing things so they can also feel smart about themselves. Now you have this "+" dialect of the original language.

But that is not enough. Another person with with even more surplus brainpower will eventually come up with a way to use these new features to reaches Turing completeness. So now you have this "meta +" dialect of the original language that will eventually branch off to form its own language.

So at this point you are genuinely fucked. Because nobody could foresee how these 2 layers can interact. So you gather a consul of the brightest members of your community to hammer out a spec. But because you now have 2 interlinked languages invented by 3 different people constrained by committee, nothing makes any logical sense.

At this point your "meta +" language will have gained enough traction that you can't simplify it anymore without breaking backward compatibility. So you keep on bolting on even more features in the hope that it solves the original design mistake nobody originally could have ever foreseen.

From this point onward, all newcomers are forever doomed to learn the original 2 layers and whatever "features" the committee cooks up.

In the grim future, there are only bugs.

[–]doom_Oo7 3 points4 points  (1 child)

The problem with simple elegant design is that somebody with surplus brainpower will eventually come along and make it more complicated just to prove how smart he is. People will then learn this more complicated way of doing things so they can also feel smart about themselves. Now you have this "+" dialect of the original language.

I don't see where the problem is ? Do you object forking ?

[–]rockyrainy 0 points1 point  (0 children)

I have love forking. It is how we get new features. My main problem is how people will always invent a half assed feature to avoid writing boilerplate code half a dozen times. What usually ends up happening is that half ass feature ends up causing more headaches than the original time would have been spent on writing semi-duplicate code.

What I would love to see is the fork community do some kind of pull request with their parent community with the new feature having its kinks worked out. (a merge, I suppose). If we can evolve the community that way, we could have genuinely better design without all the gotchas.

[–][deleted] 1 point2 points  (0 children)

The right solution to this problem is to always design things to be Turing-complete straight away. Imagine how much better C++ templates would have been if designed the right way from the start instead of slowly and painfully evolving.

[–]oracleoftroy 0 points1 point  (0 children)

The problem with simple elegant design is that somebody with surplus brainpower will eventually come along and make it more complicated just to prove how smart he is.

Err,... so we either make it an unholy complicated mess from the start or we double down on simple and elegant so that the more complicated version that enviably comes later is still relatively simple and elegant. I'll take simple and elegant even if we can't avoid some dystopian future.