Does Python really follow its philosophy of "Readability counts"?

Russ P. Russ.Paielli at gmail.com
Tue Jan 13 15:58:57 EST 2009


On Jan 13, 9:47 am, Bruno Desthuilliers
<bdesth.quelquech... at free.quelquepart.fr> wrote:
> Steven D'Aprano a écrit :
>
> > On Mon, 12 Jan 2009 13:36:07 -0800, Paul Rubin wrote:
>
> >> Bruno Desthuilliers <bdesth.quelquech... at free.quelquepart.fr> writes:
> >>> Why on earth are you using Python if you don't like the way it work ???
> >> Why on earth keep releasing new versions of Python if the old ones are
> >> already perfect?
>
> > That's a fallacious argument. Nobody is arguing that any specific version
> > of Python is perfect, but clearly many people do like the general design
> > choices of the language, that is, the way it works.
>
> Thanks for making my point clear.
>
> > *If* you don't like the way it works, and you have a choice in the
> > matter, perhaps you should find another language that works more the way
> > you would prefer.
>
> > On the other hand... Bruno's question is unfair. It is perfectly
> > reasonable to (hypothetically) consider Python to be the best *existing*
> > language while still wanting it to be improved (for some definition of
> > improvement).
>
> And that's the problem : what Paul suggests are not "improvements" but
> radical design changes. The resulting language - whatever it may be
> worth, I'm not making any judgement call here - would not be Python
> anymore.
>
> > Just because somebody has criticisms of Python, or a wish-
> > list of features, doesn't mean they hate the language.
>
> There's probably a whole range of nuances between "not liking" and
> "hating". And Paul is of course perfectly right to think that a language
> having this and that features from Python, but not this other one, would
> be a "better" language (at least according to it's own definition of
> "better"). Where I totally disagree is that it would make *Python* better.
>
> Also, my question was not that "unfair" (even if a bit provocative). I
> really wonder why peoples that seems to dislike one of the central
> features of Python - it's dynamism - still use it (assuming of course
> they are free to choose another language). And FWIW, I at least had a
> partial answer on this.

I think the issue here is the distinction between hacking and software
engineering. I may be misusing the term "hacking," but I do not mean
it in a pejoritive sense. I just mean getting things done fast without
a lot of concern for safety, security, and long-term maintainability
and scalability. I'm not a computer scientist, but it seems to me that
Python is great for hacking and good for software engineering, but it
is not ideal for software engineering.

What Paul is suggesting, I think, is that Python should move in the
direction of software engineering. Whether that can be done without
compromising its hacking versatility is certainly a valid question,
but if it can be done, then why not do it?

Certainly one basic principle of software engineering is data
encapsulation. Tacking new attributes onto class instances all over
the place may be convenient and useful in many cases, but it is not
consistent with good software engineering. If the programmer could
somehow disallow it in certain classes, that could be useful,
providing that those who wish to continue doing it would be free to do
so. If class attributes could somehow be declared private, that would
be useful too. Optional explicit type declarations could also be
useful -- and I believe Python does have that now, so no need to argue
about that.

Why do I continue to use Python when I have so many "complaints" about
it? As everyone here knows, it has many good qualities. My work falls
somewhere in the middle between "hacking" and software engineering. I
am developing a research prototype of a safety-critical system. A
research prototype is not safety-critical itself, and it needs to be
flexible enough to try new ideas quickly, but it also needs to serve
as a model for a well-engineered system. Is Python the right choice? I
think so, but I don't know for sure.



More information about the Python-list mailing list