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