from Einstein's explanation of covariant tensors. Beautifully simple but formidable to comprehend. Or Haskell code:

defining Fibonacci numbers as an infinite lazy list. Again, elegantly simple but hard to understand for the uninitiated.
Nevertheless, this is far better than the alternative, which is complicatedness. As C.A.R. Hoare remarked, "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult."
Wow, you have officially blown my mind.
ReplyDeleteGood!
ReplyDeleteHoare's comment reminds me of Blaise Pascal (paraphrasing): "I would have written you a shorter letter but I didn't have the time."
ReplyDeleteAh yes - that's exactly the same sort of thing.
ReplyDeleteTom, I think that was Mark Twain. Pascal was more along the lines of "I would have written anything at all (in the margin here to prove my conjecture about the sums of powers of integers) but I don't have the time because I am too busy wagering that if God doesn't exist I can't go wrong believing in him."
ReplyDeleteOr something like that. Here's a link to a joke by/about the creator of Pascal.
Writing well is like designing good software well
ReplyDeleteVery true. A favorite book on writing well: "The Elements of Style" by Strunk and White. It's deliciously opinionated.
ReplyDeleteSimplicity holds the key to a good software design but unfortunately very few professionals realize this. I hope you would keep the good content flowing in. TC :)
ReplyDeleteAgreed - simplicity solves a lot of problems. It's hard to do - requires thinking.
ReplyDelete"Controlling compexity is the essence of computer programming." -Kernighan
ReplyDeleteAmen!
"Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity."
ReplyDelete- David Gelernter
"Complex software is harder to think about, harder to test, harder to debug, and harder to maintain—and above all, harder to learn and use."
ReplyDelete—Eric S. Raymond
Then again:
ReplyDelete"it is often undesirable to go for the right thing first. It is better to get half of the right thing available so that it spreads like a virus. Once people are hooked on it, take the time to improve it to 90% of the right thing."
—Richard Gabriel