Python Popularity: Questions and Comments

Andrew Dalke dalke at dalkescientific.com
Thu Dec 27 10:53:47 CET 2001


Ron Stephens:
>How is Python doing popularity wise?

I can tell you that it's doing well in computational chemistry.
I know several places that have switched to doing development
in Python over Perl or other VHLLs.  I think it's because of
Python's readability and its easy ability to add new data types
which act like native objects.

In structural biology it also seems to be popular.  I know
of several Python projects (PyMol, VMD, MMTK, MSMS, Chimera), a
couple old ones in Tcl, none in Perl, none in Ruby.  Although
I'm biased by prefering Python, so I'm sensitized to Python
projects.

In bioinformatics, Perl is still the most popular, although
we (the Biopython project) are trying.  :)

>Python, while fabulously successful, is at an interesting point in its
>growth curve. It will be difficult to maintain the extremely high rate
>of growth exhibited so far; new contenders are possible problems; and
>the recessionary economy could also negatively impact Python's growth.

It's impossible to undergo a meteoric growth forever.  Exponential
growths must turn into S-curves.  So why should there be a need for
an extremely high growth rate?

>1. Ruby is an especially interesting competitor to Python. I have been
>monitoring the Ruby newsgroup, and it shows incredible growth and
>vitality. Furthermore, Ruby is aimed right at the heart of Python's
>niche.

I looked at Ruby last summer.  I read the documentation and
followed the newsgroup for a couple months.  I was able to follow
what was going on, but didn't want to see myself explaining it to
non-software developers; that is, the chemists, biologists, and
physicists who use the tools I develop.

I don't see how it's aimed at "the heart of Python's niche" -- what
do you see as Python's niche?  I see it as a language which is
usable by beginning programmers and enjoyable by experienced
developers.  I don't see Ruby really fitting the first of those.

(I don't see how '@var' obviously means "instance variable" nor
'$var' for "global variable", while Python's is much easier to
explain, since the 'self.' makes it more apparant.  I like that
Python doesn't have an implicit return of the last evaluated
expression, making it easier to find them.  I like that I can
say "methods inside of __s are special" as compared to Ruby where
you have to memorize that things like "to_s", "initialize", have
special meaning.  I like that empty function calls still need
a () in the declaration.  I don't like that Ruby promotes adding
methods to existing classes, since I think that can lead to
conflict.  I think 'abs(x)' is better than 'x.abs' or 'x.abs()'.
I'm forgetful, so I don't like special syntax shortcuts, like
  a = %w{ ant bee cat dog elk }
for
  a = ["ant", "bee", "cat", "dog", "elk"]
(especially since it can be written
  a = "ant bee cat dog elk".split() )
I don't like that regular expressions are treated with special
syntax.  I don't like having aliases, as Hash.indexes/indicies,
Array.len/size.  Ohh, and Hash has three equivalents in
has_key?(key) / key?(key) / include?(key) .

At the implementation level, I like that the C Python implementation
uses native threads rather than it's own threading package.  That
lets me work with other threaded libraries more easily.  I like that
the C garbage collector is built on reference counting, since I
need the guaranteed semantics more than I need lesser implementation
complexity. )


>If we view Microsoft's Visual Studio, especially Visual Studio.net's C#
>and VB, as the official 800 lb. gorilla of software development; and if
>we view Java as the 400 lb. gorilla pretender to the throne; and if we
>view Borland's Delphi and Kylix as no more than a smart leader of a
>chimp; then everything else is the pack of open source chimps.

Luckily, I work in a field where most people use unix for real
development, so solutions based on C# and VB just don't exist, and
there's a huge installed based of C and FORTRAN code.  I do know one
company doing some work with Kylix under Linux.

So I can't really comment on this paragraph.

>The open source world is still led by PERL, but PERL is truly more of a
>text processing, web CGI, scripting specialist; not so much of a direct
>threat to Python.

Why can't we all just get along?

Seriously, in my usual environment there are half a dozen "real"
programming languages in use (C, C++, FORTRAN, Python, Perl, Tcl),
a couple times more homebrew scripting languages (related to the
different scientific packages in use), and a slew of programs
which are only accessable through the command-line.

> Python aims to be a powerful general purpose
>programming language, in addition to being a very easy to learn and easy
>to use scripting language. And who can say that Python does not succeed
>very well in all of the above?

Is this what you see as Python's niche?  Someone in the Perl group
would say exactly the same thing, as would someone from Smalltalk,
and from Ruby, and from Tcl, and from ....

>But Ruby is also a more general purpose, object oriented, relatively
>easy to read, language.

What do you mean by "more general purpose"?  I didn't see all that
much in Ruby which was more general purpose than Python, especially
now with the closing of the type/class dichotomy.  I guess the
biggest ability is being able to send a block to be evaluated.
I know Smalltalk-ers love it, but to me things like

3.times do
  print "Ho! "
end

aren't as easy to explain or understand as

for i in range(3):
  print "Ho! "

(I know, I've been contaminated by years of BASIC, PASCAL, C,
and C++, but so have my clients.)

> Ruby folks include those who like its more
>Perl-like syntax, but Ruby's core converts believe that its pure,
>absolute object oriented nature exceeds those of Python and make it more
>worthy to long term success.

I know there's the argument that Ruby is "pure", but I think the
whole "functions are really private members of the Object base
class" idea is a sign of impurity, done because people are used to
writing functions and not having to define a static class method
like one might have to do for Java.  But I think impurity is a
good thing.  So I think the call for purity to be a wrong argument.

> They seem to see Ruby as a more modern, up-to-date version
> of Python.

I thought most people see Ruby as a more modern version of
Perl than Python.  I definitely see it as a cross between
Perl and Smalltalk, with some ideas derived from Python.

> They see Python as a compromise between object oriented and
> procedural programming.

And that's bad because ... why?  Compromise is often seen as
bad, yet the world works on it.  Others replace the term
"compromise" with "synthesis" or "fusion" or "hybrid" or many
other words.  The phrase "multiparadigm" is another fun one.

>Be that as it may, I suspect that much of Ruby's momentum is simply due
>to its newness; all things new are seen as sexy in this world of ours.
>But nonetheless, Ruby has the following going for it.

I agree with you.  I also think people are willing to give Ruby
a try, because they don't want to be seen as a fuddy-duddy.

>Now, its more like a 4:3 ratio, with Python getting say, 4000 per month,
>and Ruby 3000. At this rate, Ruby could pass Python is  afew months, by
>this measure!

How do they get any work done?  I can barely follow the outlines
of most of c.l.py these days.  Oh, and much of the development email
is on a pretty high-traffic mailing list, so c.l.py doesn't reflect
all the Python traffic.  Then there's the various lists like for
Jython and Zope, which get some Python questions.

Again, talking about the fields I'm in, I've been presenting
Python at computational chemisty and biology conferences for
the past three years.  I keep waiting for someone to ask me
"what aout Ruby?", but as of yet no one has.

There is one site for Ruby in bioinformatics -- bioruby.org.
That site seems to be down right now, but as I recall, the
packages they had were pretty minimal.  They had a presentation
at the last Bioinformatics Open Source Conference, but it
didn't show any real advantages over the equivalent Perl.
We were pushing to get a BioRuby developer at the upcoming
Bioinformatics hackathon (promo: co-sponsored by O'Reilly and
Electric Genetics, with support from the Open Bioinformatics
Foundataion, AstraZeneca, and your's truely, Dalke Scientific
Software :)  We couldn't get anyone.

>b. Ruby is getting alot of favorable press, and new books are coming out
>now. First, Pickaxe , now, Matz' own Ruby in a Nutshell and several
>others soon to be or already here.

If books are a good metric, then there's also plenty of new Python
books coming out (as you know from your dozen plus reviews :).
And Perl ones.  And Java ones.  It's just easier to notice when
there are only a few books.

>c. Ruby actually seems to be a nice language to me. Its object oriented
>features seem well thought out and yet its still easy to comprehend.

I had problems with it.  I could comprehend Python's features
from the documentation.  I still can't from the Ruby on-line docs.
One thing is that Ruby objects seem so heavy-weight to me.  For
example, Hash has support for a built-in default object, and
for "freezing" hash.  So if I wanted to make a Hash-like object,
I need to do quite a bit, I think.

(Again, I got into Python about 6 years ago, when the dictionary
object which much lighter weight than it is now, and I learned
about the changes when the occured instead of all at once.  Still,
Python's dictionary seems conceptually easier to understand and
use than Ruby's.)

>d. Ruby has some smart and aggressive coders doing libraries,
>extensions, Java version etc. etc. etc., tehy are agressive and
>motivated; tehy think they will see world domination ;-)))

They will leanr how to sepll 'tehy'?  :)

Python, Perl, and Java also have "smart and agressive coders" etc.
For example, I've seen nothing in Perl or Ruby to match
Marc-Andre Lemburg's mxTextTools, which I use for my Martel
parser.

>2. The economy is hurting Python's open source development model.

It is?  I guess I started when Guido worked at Stichting
Mathematisch Centrum, before CNRI, and I don't think then he could
ever work full time on Python.  The recent spate of development
progress has actually worried me, since I'm not able to follow
all this new work, like __getattribute__ and __slots__ and
new-style classes.

>Without Mark Hommond's win32 work, Python would be a mere shell
>of its current self.

A lot of that work was when he was a contractor, before working
with ActiveState.  I know PythonWin 1.5.2 has no ActiveState
copyright notice in it.

I can't make any real statement about the people you mentioned.
I can say Python developed without a lot of dedicated resources
for it, so I'm not going to worry about it.  Besides, why should
it affect Python any less than other projects?


>3. Third, Python faces the laws of large numbers. It is exceedingly hard
>to continue a growth spurt past a certain point. Maybe were at that
>point, maybe not. But ask yourself this; Two years from now, will you
>see more Python success stories, more growth, or a leveling out? Five
>years from Now?

So?  What's the growth curve in C?  Do you see more C success stories?
More growth, or a leveling out?

I expect to have success stories of my own in the 2-5 year range.

Frankly, for a while I was learning about better and better ways
to develop software:  BASIC -> Pascal -> C -> C++, then C/C++ augmented
with Tcl, then Perl, then Python augmented by C/C++, which is
where I'm at now.  I also tried out a dozen other languages,
including Prolog, APL, Lisp, and other classics, and read about
more languages, including Smalltalk and Eiffel.

As far as I can tell, I think the basics of the Ruby/Smalltalk/
Perl/Python/C/C++/Java/... class of languages are pretty well
understood.  I don't think Ruby or any similar language can
offer anything sufficiently new enough to get many people to
change.  The only new topic my limited prognositications can
make for the future is aspect oriented programming, and I don't
know enough of that to make any firm statement.

BTW, I think what's going to happen in Python's future is
1) refactoring browsers, like what Smalltalk has, 2) better
performance through some sort of typing, and 3) the development
of more specialized libraries for different domains.  (Please
bear in mind that I'm biased by being a library and application
programmer.)

>Ten years from now, will Python still be Relevant? Oh, I know that
>Python will still be being used, and the community will still exist, but
>will it really be a thing that seems to Matter, like it does now.

I hope not.  I want to have new tools and new ways of thinking
on programming.  It's still a lot of hassle to develop new code,
and I'm a slacker in the Gen-X mold, with a short attention span.
(Okay, the length of this response belies that statement :)  Still,
I want something better then Python, and I hope that in ten years
we'll at least start using it.  I also hope I'll recognize it
early enough, like I did with Python.

Mind you, Python's data model is still simple enough that it can
be ported to other systems without much effort.


                    Andrew
                    dalke at dalkescientific.com






More information about the Python-list mailing list