ANN: PyStream - a C++ stream emulation

Alex Martelli alex at magenta.com
Wed Aug 23 04:28:02 EDT 2000


"Grant Griffin" <g2 at seebelow.org> wrote in message
news:39A2EF6E.D21B7E35 at seebelow.org...
    [snip]
> Given that 1.6 and 2.0 are virtually 100.0% backward compatible, how do
> these new constructs actually hurt anybody?  If anything, aren't the

Adding features 'hurts' by bloating a program/language/library/whatever.

Making it larger, richer, more complicated: that is damage in itself.

Complexity does not grow linearly in the number of features, but rather
sort of exponentially, since each feature 'interacts' with some fraction
of other features.  The natural trend is always towards more and more
features (just as, in general, it's towards growth of entropy...), which
is why one develops a counter-attitude, prizing *simplicity*.  Each 'new
feature' must be seen to AMPLY 'pay for itself' before overcoming this
healthy resistance.

Or, to put it more poetically...:

"You know you've achieved perfection in design, not when you have nothing
more to add, but when you have nothing more to take away." (Antoine de
Saint-Exupery).


In a language/library setup, the complexity-cost of new features is
higher when they're added to the 'core language' itself, because that
sets up more and thicker potential interactions.  Often, placing the
new features in the library is thus a good compromise between the
desire to have them, and the desire to keep simplicity.

In some cases, such as operator +=, this may not be practicable.  But
when it IS, as in the 'print >> outputfile' blotch (which, as the PEP
itself recognized, is functionality that could perfectly well be added
with a library function rather than by extending language syntax), the
'gratuitous' core-language additions are _particularly_ irksome...


Alex






More information about the Python-list mailing list