[Edu-sig] ACM article on Python

David MacQuigg macquigg at ece.arizona.edu
Fri Mar 13 15:33:24 CET 2015


The latest issue of Communications of the ACM (March 2015) has an article
titled "Python for Beginners" with a few points that surprised me.

The first thing that got my attention was the banner text "Choosing Python
is the modern equivalent of the old adage 'nobody ever got fired for
choosing IBM'".  If I were an unimaginative, risk-averse bureaucrat, just
wanting to run with the herd, the choice would be Java, not Python.  The
only clarification I can find is in the conclusion of the article where we
learn that Python is "blandly conventional", just the latest crest in the
"waves of fashion" (Pascal, C++, Java, Python, Scratch).  Odd that Ruby is
not mentioned anywhere.

I read the article carefully, looking for substantive comparisons, and
found only more baffling, vague statements without enough definition or
specificity to reach any understanding.  What does it mean that Java is
more "industrial strength"?  I would say Java is a more "industrial"
language, but that is not a compliment.

The biggest problem is calling Python a "scripting language".  Any language
can do scripting, and Python is particularly good at it, but this label
makes me think of shell scripting (e.g. tcsh, bash, and all the variants of
these special-purpose "job control" languages), not a modern,
object-oriented, full-feature language like Python.

Another problem is quoting a Python advocate on the productivity advantage
of Python (2 man-months vs 24).  Wild statements make prospective users
walk away without further investigation.  I tell my faculty friends it is 2
to 1 over an expert's productivity in Java.  I might even quote Bruce
Eckel's estimate, 5 to 1, but only to back up my own more conservative
estimate.  Until now, I've never seen 12 to 1.

The bulk of the article is discussion of Python's "weaknesses":
1) Creating non-trivial data structures is onerous.
2) Limited support for testing.
3) Lack of static types.
4) Difficult transition to other languages because the syntax is quite
different.

Show me some real-world examples of a data structure or test setup I can't
do better in Python.  Python's doctest is an excellent methodology for
teaching Test-Driven Design, or even just teaching basic Python (see
pykata.org).

I understand the complaint about data types, but I would not give up the
advantages of dynamic typing for the few projects where I really need the
efficiency of static types.  Write first in Python, then insert some C code
where testing shows that it is actually needed.

When I first started using Python, I was astonished to learn that it was
not derived from Java.  See codingbat.com for many one-to-one comparisons
of various code snippets.  See Goldwasser's "Object Oriented Programming in
Python" for an excellent transition to either Java or C++.

This article was disappointing and superficial.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20150313/d1ccdf81/attachment.html>


More information about the Edu-sig mailing list