Thoughts on Guido's ITC audio interview

Dave Benjamin ramen at lackingtalent.com
Tue Jun 28 14:10:36 EDT 2005


Stephen Kellett wrote:
> In message <mailman.983.1119954269.10512.python-list at python.org>, Simon 
> Brunning <simon.brunning at gmail.com> writes
> 
>> Eclipse's refactorings are a great boon, I find. Refectoring is never
>> *fully* automatic, of course, but the ability to, for example, select
>> a chunk of code and have it extracted into a separate method with all
>> needed arguments and the return value worked out for you is very
>> helpful. All you have to do is give the new method a name. And this
>> sort of thing can certainly improve readability.
> 
> This is not an attach on you Simon, but if people are relying on that 
> type of thing for increases in software productivity they are hiring the 
> wrong people.

I think that the right people to hire are the ones that can make the 
best use of whatever tools are available so they can get their job done 
well and in a reasonable amount of time.

I'm not a big fan of Java programming, but sometimes I have to do it, 
and when I do, I must say that the refactoring capabilities of IDEs like 
IntelliJ IDEA are very helpful. Being able to rename classes, variables 
and functions across multiple files, extract methods with automatic 
naming and typing of parameters and throws-clauses, and move methods 
from one class to another makes it so much easier to reorganize and 
improve large amounts of code. And due to Java's verbosity, there 
usually is a lot of code to manage even for simple changes.

In Python, there's still a need to do these sorts of things. Typically, 
we use "search and replace" and "cut and paste" instead. You could make 
a similar statement about those tools - if you rely on "cut and paste" 
to increase your productivity... gah, it makes me cringe just writing 
that! Nonetheless, I would hate to program without "cut and paste" as a 
tool. In any language.

The need for automatic refactoring tools in Python is smaller; Python 
gives you the opportunity to program at a higher level of abstraction, 
so there is less code to deal with. In addition, since Python doesn't 
have checked exceptions or require type annotation, design changes tend 
to "splatter" less across your code base. Still, Python's dynamic nature 
limits the sort of automatic changes you can make reliably, and we ought 
to recognize that. By using Python, we are making a tradeoff: in 
communicating less information, we are forcing IDEs to do more 
guesswork. Java requires less guesswork for the IDE, but requires 
significantly more communication on behalf of the programmer. I don't 
think it's a cut-and-dry win for either language.

Dave



More information about the Python-list mailing list