How to best explain a "subtle" difference between Python and Perl ?
Nigel Rantor
wiggly at wiggly.org
Wed Aug 13 07:59:55 EDT 2008
Jonathan Gardner wrote:
[...eloquent and interesting discussion of variable system snipped...]
>
> Is Python's variable system better than perl's? It depends on which
> way you prefer. As for me, being a long-time veteran of perl and
> Python, I don't think having a complicated variable system such as
> perl's adds anything to the language. Python's simplicity in this
> regard is not only sufficient, but preferable.
Very well put.
I am not however sure I agree with your very final thought.
I ma a long time C/C++/Java/Perl developer. I know some python too.
The Python system is the same as the Java system, apart from Java's
primitive types, which is a completely different discussion that I
really don't want to get into right now.
So, everything is by reference.
I understand, and agree that a simple system is good. And maybe even
preferable. But it isn't always sufficient.
Some algorithms are much easier to write if you know that your
parameters are going to be copied and that the function may use them as
local variables without having to explicitly create copies.
You can also reason more easily about what side-effects the function
could have if you know it cannot possibly modify your parameters.
Other systems out there require pointer-like semantics (for example
CORBA out and inout parameters) which have to be kludged in languages
like Java to pass in wrapper objects/boxes that can be assigned values.
Whilst it may be easier to learn a system like python/java, in the end
the amount of time spent learning the system is normally dwarfed by the
time spent using the system to build software. I would rather have a
type system that is as expressive as possible.
Also, note that it is entirely possible to create many, many, many
interesting and useful things in Perl without having to resort to
references. They are a relatively new feature after all.
Just my 0.02p
n
More information about the Python-list
mailing list