Python Popularity: Questions and Comments

Ron Stephens rdsteph at earthlink.net
Thu Dec 27 17:44:09 EST 2001


Andrew Dalke wrote:

(my responses are interspersed without leading blue lines ;-))

> 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.  :)
>

I am considerably heartened to hear of such prominent success for Python in
the biological sciences. Thanks for sharing this info!



> >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 mean simply that Ruby is so much more similar to Python than any other
language, that this causes the two languages to have to share the available
"market" of interested developers. In other words, both Ruby and Python are
very high level, object oriented, interpreted, modern, scripting languages
that are also powerful enough to be used as general purpose programming
languages. Neither Python nor Ruby is relegated to any single narrow niche;
and both are, in my opinion, well thought-out and implemented languages and
both are attractive to intelligent developers looking for ease of use, power,
expressiveness, and most importantly, speed of development. I do not think
you can say all of the same things about any other two languages. Thus, while
I admire Ruby, I suspect that it divides the pool of developers who might
otherwise be all in the Python *camp*.


>
>
> (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. )
>

Your points above are all well taken.. I think Python is *even easier* to
learn and to use than Ruby. But Ruby aficionados might disagree with us on
this point ;-)))


>
> >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?
>

We can get along and we do. I am just a curious Python hacker who follows the
Ruby language out of interest.

>
> 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

I do not mean to say that "Ruby is more general purpose than Python". I meant
to indicate that Ruby is more general purpose than , say, Perl, or Tcl, or
PHP, or JavaScript etc., and thus more of a direct competitor to Python ,
precisely *because both languages are so admirably suited to general purpose
programming. ;-)))

>
>
> 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.
>

Good point. Ruby is much more like Perl in syntax than it is like Python, and
Matz himself has so commented that he borrowed a lot more from Perl than
Python. However, in my opinion, Ruby still *appeals* very much to folks who
like Python because of its object orientated nature, as well as its clean
design. A lot of folks come to Ruby from Perl for the same reasons that lots
of folks come to Python from Perl, I suspect. Thus, Ruby and Python are
competitors, like it or not.

Heck, Bruce Eckels seemed to say "ah heck, why did someone have to go and do
such a close knock-off of Python for, anyway" (Paraphrase only!!!!)

Of course, Guido said that Ruby's design philosophy didn't appeal to him at
all. And maybe I am beginning to understand a little of "why", Guido might
feel that way, as I read through the comments on this thread. By the way,
Matz exhibits nothing but respect for Guido and Python. I also like the way
Matz says only complimentary things about all languages; you'll never catch
him saying anything bad about Python or Perl. He even steps in on
comp.lang.ruby often to chastise over-zealous followers who have the temerity
to bad mouth Python. You have to admire Ruby's Japanese creator for that
attitude. Also, keep in mind, Ruby is very popular in Japan, which I think is
great !


> > 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.
>

Sounds very exciting. It is just such success stories about Python that I
love to hear !!! ;-))


> >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.
>

True. Three are now over 20 Python books out there ;-)) And, by one very
important measurement, Python blows Ruby away with 1,302 SourceForge projects
compared to only 81 for Ruby. We also blow away Lisp and Scheme on this
measurement, but predictably perhaps lose to PHP and Perl, Java and of
course, C and C++ (C is the number one in this category).


> >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