
Python is doing just fine - timClicks
http://data.geek.nz/python-is-doing-just-fine
======
noelwelsh
People use languages for many reasons, but the most common reason is that it
is perceived to solve a problem better than the alternatives.

The R language is a frigging mess but it has a huge number of libraries in the
statistical domain. For this reason it's a popular choice for writing data
exploration and analysis programs.

The JVM the only game in town if you want some combination of high
performance, the ability to do user-space systems level programming, type
safety, and GC. Nobody loves Java but it is the easiest language to recruit
for if you're targeting the JVM.

Rails is the engine that drives Ruby. iOS drives Objective-C. The browser
drives Javascript.

To me (an very infrequent user of Python) Python has NumPy and Django. So long
as those projects continue to maintain their share of thought leadership
Python will be fine.

\---

Kinda odd to see this post on HN. It doesn't really seem to say much.

~~~
DocSavage
"The JVM the only game in town if you want some combination of high
performance, the ability to do user-space systems level programming, type
safety, and GC."

I think all those points are covered by Go. And Go is more succinct. It was
trivial to cross-compile Go executables on my Mac for Windows and Linux.

~~~
noelwelsh
I knew this would come up.

Haskell and Rust cover the same space as well. HN seems to have some weird
obsession with Go at the moment, but the reality is that outside of this
little bubble no-one knows or cares about Go. I use "no-one" in the to-within-
rounding-error sense, not the literal sense. Go may gain sufficient mindshare
in the future that it gains a space in the average developer's head as their
goto tool for a certain job but it isn't there yet.

While we're at it, Java is not the only language on the JVM. For example,
Scala is growing fast and it has polymorphism AND sane error handling
([http://www.scala-
lang.org/archives/downloads/distrib/files/n...](http://www.scala-
lang.org/archives/downloads/distrib/files/nightly/docs/library/index.html#scala.util.Try)),
features which AFAIK elude Go.

~~~
DocSavage
Well, I was responding to the "only game in town" characterization with
respect to the points you gave, all of which are addressed in Go. You could
add as requirements a mature and highly optimized GC and a large pool of
talent, then it might be correct. (If you are talking Scala, Clojure, and some
other JVM-based languages, I think Go talent pools will quickly catch up if
it's not already there.)

I would think HN has a very broad readership across many occupations.
Dismissing Go as an HN bauble seems very odd. The point is that I enjoy Go,
and it handles all the things you mention and a few more within its sweet
spot. And it works well even now, immature that it is. It's a reasonable
alternative to the JVM for lots of problems.

Go is also most pertinent from the Python perspective because it's probably
gaining recruits from that community instead of the C/C++ community.

------
kamaal
You know what? The very fact that you are having to write this post means
Python isn't doing just fine.

The fact is Python was a fashion some years ago. Like 2-3 years back, It was
the hip language to learn. Now the current fashion is NodeJS and Go. Like it
or not get used to this fact. Python system is currently undergoing wants of
features what Go and NodeJS provide out of the box. This is feature hunger,
and is fundamentally what causes languages to slowly phase out from the main
stream to let other languages take its place.

This doesn't mean Python is bad or lacks something. Its just that only its not
the fashion currently. The fashion is something else, and people don't like
old fashion being pushed down their throats. People like new stuff, Python is
getting old, boring, too many people are into it now and its not hip anymore.

Now, coming to the other part.

Contrary to whatever you think Perl is doing awesome at this time now. Because
the Perl community has moved on. Those dark troll days that existed 5 years
back are gone. There are some very awesome things happening in the Perl
community which probably are not happening even in Python.

Perl has learned its lesson the hard way. Which is if you want to survive and
compete, ship awesome stuff! And Perl is doing just that. New syntax, sugar
and enhancements are going in to Perl core every major release(2 years). CPAN
is going just awesome. Apart from that people like chromatic are doing real
great work in the documentation area. There are tools like Moose,
Devel::Declare, DBIx::Class etc which probably Python can never get ever!

In the other news Perl 6 is hurling quickly towards its finish line and will
be there in short time now(like probably next year end), and for a project of
such huge magnitude it will be quite a language to watch out.

~~~
dalke
Where's your sense of history? People wrote this sort of thing back 10 years
ago, when Ruby was becoming popular. People wrote posts saying that Ruby would
take over from Python, and others replied saying that no, it wouldn't. The
'fact that the author wrote this post' is nothing new - it's more of the same.

And "2-3 years back"? Paul Graham's "The Python Paradox" was in 2004 and Peter
Norvig's "How to Write a Spelling Corrector" was 2007. Neither of those were
turning points. Python was, long ago, chosen as one of the three main
languages at Google. Can you identify what it was 2-3 years ago which
indicated that it was the hip language de jour?

Congratulations about Perl6 advances. It was the cumbersomeness of Perl5
objects and dealing with complex data types which helped me switch to Python,
back in the late 1990s.

~~~
cygx
It's hard to predict the long-term popularity of languages from history. For
example, look at the P*-languages (Perl, Python, PHP, Ruby)

If I'm not mistaken, peak popularity went something like this:

    
    
      Perl->PHP->Python->Ruby->?
    

Now, look at the release dates of these languages (according to Wikipedia's
'appeared in'):

    
    
      1987 Perl
      1991 Python
      1995 PHP
      1995 Ruby
    

While Perl and PHP got popular pretty fast, it took years for Python and Ruby
to gain traction.

All of these language still have reasonably vibrant communities, even though
Javascript appears to be 'hot' right now.

~~~
dalke
I've been trying to get a sense of popularity. All I can find is the "TIOBE
Programming Community Index." I looked at the chart for the last 10 years of
numbers.

Perl started declining in 2005. PHP's popularity seems to have been 2004-2010.
Ruby's was 2007-2010, though it seems to be making a comeback. Python's was
2004-2011, and it again seems to be on the rise again. Those are relative
numbers. In absolute numbers, PHP is ranked higher than VB, then Python, Perl,
Ruby, and Javascript.

It doesn't seem reasonable to really talk of peak usage over the last 10
years. It might be possible to talk about "most mentioned by the popular
bloggers", but that's also a different metric.

~~~
chromatic
_All I can find is the "TIOBE Programming Community Index."_

You might as well not bother. TIOBE is excessively vague about what it
measures to the point that no one's been able to reproduce its results. Worse,
it's never demonstrated that the number of searches it measures has a strong
correlation with usage.

Worst, it confused the Google Chrome browser with an implementation of Pascal
for quite a while.

~~~
dalke
Agreed. The thing is, I can't find anything better, so such questions as "when
did the popularity of language X peak?" seem unanswerable.[1] We are left with
anecdotal impressions, and my own experience ;) says that those are even more
suspect than TIOBE's numbers.

Also, I was looking for popularity, not usage, although these two numbers are
intertwined and hard to disentangle.

[1] That's not quite true. <http://langpop.com/> for example has what appears
to be a more well-defined method of accumulating that data. However, "Last
data update: Wed Apr 13 14:57:11 +0200 2011", the operator is no longer
interested in the project, and would like to sell the site. I cannot find
trend data, and my guess is that that's reserved for whomever will buy the
site. So it might be answerable if I want to spend money on it.

------
dmbaggett
FTA: _It can sometimes feel scary when faced with a few risks to lose
perspective of what has already been achieved._

Just to be clear: my own comments about Python the last few days are driven
from a purely pragmatic desire to ship a great product, on all screens, using
Python. I cringe when I see comments like this that seem to conflate these
pragmatic concerns with emotional language advocacy.

Python is a beautiful, high-productivity, generally pragmatic language with
millions of developers.

 _That's why I chose to build my product around it._

But all good things can be made better, and generally the best way to find the
local optimum is to have lots of feedback from users -- especially developers
who are pushing the envelope by doing ambitious things with the language.

We _are going_ to ship on iOS and WinRT using Python. Whether that's anything
that the core Python devs particularly care about, and whether that helps
Python in the gladiatorial combat between languages, is mostly irrelevant to
me.

------
fuzzix
"I wonder if it is because its big brother Perl, which it used to tease, is no
longer around to tease."

Excuse me?

Perl is doing just fine.

The Python community doesn't really need a whipping boy, does it? It was quite
offputting to me when Python texts, when promoting the features of the
language, were essentially reduced to "It's more readable than Perl!"

Is it as powerful and expressive as Perl or is anything sacrificed for this
supposed readability? (I never saw it myself).

~~~
lmm
Perl is certainly a lot less prominent than it used to be. It seems to have
fallen out of favour as a web backend, it was never popular on the desktop,
and I'm not seeing any interest in making it work on mobile. While I wouldn't
say it was dying, it seems to be falling into the "scripting ghetto" that we
worked so hard to escape.

~~~
draegtun
_> and I'm not seeing any interest in making it work on mobile_

An accepted grant to make it easier to compile perl5 on Android is currently
in progress: [http://news.perlfoundation.org/2012/05/grant-application-
imp...](http://news.perlfoundation.org/2012/05/grant-application-improving-
cr.html) | [http://news.perlfoundation.org/2012/09/improving-cross-
compi...](http://news.perlfoundation.org/2012/09/improving-cross-compilation-
of.html).

Also there is Perldroid - <http://code.google.com/p/perldroid/>

And I assume SL4A is still available on Android? -
<http://code.google.com/p/android-scripting/>

And for many years I had perl5 running on my Symbian phone :)

------
Aloisius
Wait, Python was sexy at one point? The engineers I know who use python are
all serious, pragmatic and a little OCD. They didn't learn Python because it
was sexy, they learned it because it because it was an ultra-readable
language.

I don't think Python was ever sexy. There was a bit of a Ruby vs. Python thing
a few years ago, but both languages were downright _old_ when they became
popular.

A year ago, we had people telling us that JavaScript of all things is sexy
because of NodeJS. Now it is Go (though that hype seems to be fading quickly).

People really need to stop worrying about the flavor of the week. You're never
going to be programming in the sexy language for more than a couple years
before the next trend pops up.

~~~
rudiger
It's the people who worry about the flavor of the week (the early followers,
if you will) who take the language from "sexy, trendy, and unstable" to
"productive, stable, serious, and pragmatic."

~~~
freshhawk
In my experience those people might get things started but they leave for the
next "sexy, trendy and unstable" language and then actual engineering gets
done to get "productive, stable, serious, and pragmatic." actually working.

------
Nate75Sanders
Do a search (separately) for perl, python, ruby on indeed.com

perl wins AND it's not a common word unlike the other two

in fact, plenty of job postings misspell perl as "pearl" and I'm not even
including them

The fact that perl has more hits doesn't necessarily mean that there are
actually more perl jobs than ruby or python jobs, but it certainly means that
perl is still around, whether or not you want to tease it

EDIT: I write python code every day and agree with pretty much everything else
the author said.

~~~
lazyjones
It could also mean that Perl programmers are in higher demand because there's
not enough of them nowdays since all the cool kids are doing Ruby or JS ...

(we know we are having a hard time finding Perl people, but then again we are
not in Silicon Valley ...)

~~~
Nate75Sanders
I don't claim to know exactly why. I can tell you this, though -- a much
crazier statistic is that about 1.5-1.75 years ago I did this same search on
indeed.com and while it's difficult to believe now or then, perl not only was
bigger than python or ruby, it was bigger than python and ruby combined.

Among other reasons, I suspect there are a lot of older perl guys still around
who don't blog/write articles because they do other things in their spare time
and we don't hear as much about perl compared to node/python/ruby/etc.

~~~
nandemo
Perl was mainstream well before Python and Ruby became popular. Back in the
90s, anyone who was adopting Linux-based servers was likely using Perl in some
way: web companies, small ISPs, even banks. So there are tons of legacy Perl
out there.

~~~
lazyjones
Indeed, back in the mid 90's, pretty much all CGI script examples you could
find anywhere were written in Perl.

------
dbecker
The library support for data science with python has improved a lot in the
last few months... There are lots of shiny new options for web development,
but I think python is gaining momentum rather than losing it for data analysis
and scientific programming.

I expect that user base will increase even faster after Wes McKinney's "Python
for Data Analysis" book is published.

~~~
thronemonkey
Agree. I just started doing scientific computing in
python/scipy/numpy/matplotlib and it is fantastic. I see python going nowhere
but up in the scientific community.

------
ryangallen
Also, it's worth mentioning that Udacity and CodeAcademy are teaching Python
to thousands of new programmers.

------
tehansen
about python on mobile, and making it run on the NDK. Checkout kivy.org, it's
a nextgen UI framework with pure opengl ES and multi-touch support from the
ground up. It's pretty fast, especially since the core parts are written in C
and it uses a sort of JIT graphics compiler.

It runs on win/osx/linux as well as iOS and android. In fact through the
android-for-python project (github.com/kivy), it does pretty much exactly what
the author talks about in terms of making it run on the NDK. There is also the
pyJNIus project to go along with it in order to call java code and sdk
directly.

python on mobile really is an option, and it lets you write cross platform
apps in a very nice manner.

------
adrianmn
Also started this week with 50k online students: Learn to Program: The
Fundamentals (pyton from 0) - <https://www.coursera.org/course/programming1>

------
chuppo
When JavaScript becomes a more stable general purpose language, Python will
have to make a run for its cash.

We have seen node.js and jslibs exists, as well as OpenGL bindings for v8.
Microsoft has bade WinRT where JavaScript is a first-class citizen for desktop
programs. What can python offer then? Numpy and scipy and twisted? Those are
just libraries, and bindings can be made from JS to their respective hot-spots
of C.

JavaScript is already beating Python in speed.

~~~
manaskarekar
I think, and I like to dream, that the next wave of stable general purpose
languages will be functional. Given how distributed/concurrent/multi-x
everything is, and will keep increasing in importance, it seems that
functional languages will become more relevant.

That said, as more and more domain specific languages come to be, and general
purpose languages mature, there's probably not going to be a 'single winner.'

~~~
eric_bullington
Not sure if you'd consider it a general purpose language, but you can
certainly use JavaScript in a functional style. It's not a "pure" functional
language, but among commonly-cited languages, what is a pure functional
language besides Haskell?

If I'm not mistaken, proper tail calls are even slated for addition to the
next version of the ECMAScript standard.

~~~
JackC
Out of my depth here, but I think functional languages are relevant to
distributed/concurrent programming because they tend to provide (and enforce)
explicit ways to avoid or manage side effects and mutability. They're likely
to be very different at an interpreter/compiler level from a language that
happens to allow you to avoid side effects and mutability, but isn't designed
to know when you're doing that or to optimize for it. (I'm thinking, for
example, of the insane way Clojure implements dictionaries under the hood in
order to efficiently copy them rather than edit them in place, which in turn
enables its approach to efficiently rolling back and retrying operations that
contend for the same shared transactional memory.) The upshot is that an
imperative language like JavaScript will let you borrow some nice techniques
from the functional world, but won't have a lot of the benefits of a language
that's designed to _only_ be used that way.

Again, no idea what I'm talking about, that's just the impression I have from
the little I've learned about functional programming so far.

