On 11/30/10 12:09 PM, bearophile wrote:
Andrei:

The key is to navigate such that as many good designs are
expressible as easily as possible.

Very flexible designs are often made of very small parts that need
lot of brain to be combined to form something useful (see Scheme
language, or certain toys). They become almost puzzles, even when the
little parts are designed in a very good and clean way.

Wonder how the reply is related to the quote.

The real challenge is to solve the problem within the global set
of constraints we have, not to prove that a language feature would
 solve it. I know a language feature would take care of the issue,
 the same way money would take care of buying a nice house. The
challenge is to have a nice house when money _is_ limited.

Generally it's positive to avoid useless features, or features that
are easy to implement cleanly with few other ones. But a language
like C# is much simpler than C++ despite it probably has more
features, because in my opinion lot of usage complexity comes from
corner cases, traps, dark corners, and so on, while clean features
that are able to do one thing well and in a clean way don't add a lot
of usage complexity (they may add complexity for the compiler
writer).

So sometimes not adding a feature you increase the complexity of
programs (because the programmer has to implement those things using
 lower level parts, and because sometimes such implementations are
suboptimal). An example are nonnull reference types, that as builtins
may have better syntax and much more complete semantics.

I was about to think "yah, reasonable" till I saw the last sentence...


Andrei

Reply via email to