Guido rethinking removal of cmp from sort method
tjreedy at udel.edu
Fri Apr 1 21:37:34 CEST 2011
On 4/1/2011 3:45 AM, Paul Rubin wrote:
> What happens then is you define a new interface. In Microsoft-speak if
> the IWhatever interface needs an incompatible extension like new
> parameters, they introduce IWhatever2 which supports the new parameters.
> They change the implementation of IWhatever so it becomes a wrapper for
> IWhatever2 setting the new parameters to default values, to keep
> implementing the old behavior.
Now you have two versions, and eventually many more, to maintain and
document. That takes resources we currently do not have.
Some problems in addition to the benefits of this approach:
1. The users of IWhatever will not gain the benefits of IWhatever2.
2. Upgrading to IWhatever2 requires a change of name as well as off
3. If only some users are upgraded, the IWhatever and IWhatever2 users
may become incompatible even though they were before, thus breaking code
without changing the old interface.
Example: Python2 added str2 (= unicode) on top of str. This had all the
problems listed above. Since CPython uses str internally, in particular
for identifiers, CPython users were stuck with the limitations of str.
Rebinding str to mean str2 has many benefits, especially in the future,
in addition to current costs.
Terry Jan Reedy
More information about the Python-list