Am Donnerstag, den 24.04.2008, 19:04 -0700 schrieb Paul Rubin:
> On a meta level, the notion that adding features to a language makes
> it more capable is tempting but bogus.
Not bogus - in fact adding a feature does make a language more capable.
> Adding feature X might give
> you the freedom to do X, but maybe what you really want is freedom
> -from- X.
Usually the situation is subtly different: you want to have X, but
you'll lose Y if you get X.
The Y that you lose is usually some kind of guarantee.
Adding mutability loses the guarantee that aliasing will never be a
problem.
Adding pointers into arrays loses the guarantee that you'll never get a
buffer overflow.
Adding reinterpreting casts loses the guarantee that a data object may
never be misinterpreted.
Adding a Turing-complete template language loses the ability to
typecheck templates.
Etc. etc. etc.
Few language designers even see the guarantees that they lose, mostly
because they never knew what kinds of guarantees are possible. And, of
course, forfeiting guarantee G may allow you to have features X, Y,
*and* Z, so it's very tempting to err on the pro-features side. (Logo
had many guarantees, but it had little features...)
Regards,
Jo


|