Guido rethinking removal of cmp from sort method

harrismh777 harrismh777 at
Fri Apr 1 02:44:11 EDT 2011

Terry Reedy wrote:
> Python 3 was announced and as a mildly code breaking version at least 5
> years before it came out.

     I appreciate the spirit of your arguments overall, and I do not 
necessarily disagree with much of what you are saying. I would like to 
challenge you to see this from a little different perspective, if I may.

     There are two distinct ways for looking at this "mild code 
breakage," and it might be good to think about how we approach changes 
in the future based on an understanding of both perspectives, and 
consideration for the clients.

     In the possible perspective of the Python language developers  3x 
changes are mild (in fact, overall, probably even insignificant 
percentage-wise). Ok, we removed the cmp comparison keyword from 
list.sort(), made the print() method consistent with the rest of the 
language, and correctly promoted integer divide 1/2 to float so that the 
answer is something greater than zero! Fine. Looks like just a couple 
little changes, no big deal, stop your whining.

     The perspective of the Class client is something quite different. 
They do not look at the overall percentage of Python language definition 
that has changed (tiny percentage, right) they look at the overall 
percentage of their own projects that have just "broken" and need to be 
rewritten to accommodate the disruption in the advertised Class 
interface. And to the client--  these tiny changes are magna-bodacious! 
(nobbled thinking)  You guys have changed integer divide---!  the PRINT 
print() functionality is diff e r e n t ---! and for crying out loud.... 
you changed   S O R T ( )   !!!

     I wonder if folks like google need to do in-place sorts over lists 
very often ...?

     I wonder how mnay Python scripts call the list.sort() method with 
the cmp keyword specified... ?  (could it be thousands, or millions?)
     All the hoorah you guys are getting, as well all of this incessant 
bickering over cmp,  is some of the answer to these questions.

     When you get ready to change an advertised Class interface in the 
future, please consider my interface rules (I gave them to Steven) and 
please take into account your client base---the ones who are making 
valid assumptions about your Class interfaces.  Its easy, and its most 

king regards,
m harris

More information about the Python-list mailing list