D's greatest mistakes

bearophile bearophileHUGS at lycos.com
Tue Nov 30 10:09:52 PST 2010


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.


> 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.

Bye,
bearophile


More information about the Digitalmars-d mailing list