Hacker News new | past | comments | ask | show | jobs | submit login
Python is doing just fine (data.geek.nz)
84 points by timClicks on Sept 26, 2012 | hide | past | web | favorite | 85 comments

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.

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

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...), features which AFAIK elude Go.

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.

> it has polymorphism AND sane error handling ... features which AFAIK elude Go

Go certainly has polymorphism. Also, I've written about ~30,000 lines of Go thus far, and the programs I've produced have by far the best error checking than any other program I've produced with another language. I think that at least qualifies as "sane." (Particularly since I find my error checking to be easy to write and easy to read.)

Go vs. Java:

* Go makes it a lot easier to interface with native libraries than Java ever will. I think anyone who has ever written JNI can confirm that it is a nightmarish interface. JNI also has performance problems, to the point where using an optimized C implementation through JNI is often slower than writing the same thing in Java.

* Java definitely has more libraries available. However, partly because of point #1, Go is catching up quickly. It's very easy to wrap C libraries in a Go interface with cgo.

Also, a lot of the old Java code and frameworks smell kind of funny. Do you want to write a new AWT application in 2012? Really? Yeah, Java has more stuff, but... is it kind of stuff you actually want to use, or the kind of stuff you find at the thrift store?

* Go exposes more OS-level features than Java. For example, Java didn't get a way to create softlinks until JDK7.

* Java does not provide a built-in solution to dependency management. The CLASSPATH mechanism essentially punts the problem to the individual developer. It seems easy enough to dump all your jars in a folder and call it a day, but eventually you end up in a situation where library X depends on library Y, which depends on library Z, which depends on a different version of library X. Hmm. Guess you are in trouble! With Go, this problem does not exist because things are compiled statically, and Go has standardized library paths.

Maven and OSGi were both attempts to solve the dependency problem in Java-land. However, since they weren't standard parts of the language, they felt clunky and bolted-on. Maven also combines the functionality of apt-get, Makefiles, and distcc in one giant monolith, which can make debugging... interesting.

* Partly because of the complexity of Java classloaders, a number of security vulnerabilities have been discovered recently.

* Go programs have a miniscule startup time, whereas the JVM takes a lot of time to start. This seems like a very minor point, until you realize that for things like command-line utilities, it makes Java a real performance-killer. This is one often-overlooked reason why Java fizzled in the browser but succeeded on the server.

polymorphism AND sane error handling [elude Go]

Go has polymorphism. I like Go's error handling a lot-- but this topic has been discussed elsewhere.

Go's GC has a long way to go before it is anywhere near the maturity level of the JVM's. One of the biggest advantages of building a language on the JVM is that you get about the best GC implementation out there completely for free.

On the other hand, Go does not have the benefit of the huge Java ecosystem.

You need the huge Java ecosystem and benefit from it only if you wish to be and use the Java ecosystem, which is basically a million different ways to use XMLs, abuse design patterns, needlessly make solutions verbose and complicated to make your work complex and very important.

Other technologies will have their own ecosystem. Which will grow at their own pace as demand for that grows.

Trolling much? Of course you have a number of AbstractBeanXmlFactoryFactory, and it's generally pretty verbose, but you do have a large number of well-tested, well-performing solutions already established. And that's definitely an advantage when you have a problem to solve right now.

Agreed - about Java and the trolling. All his comments on this topic is nothing but a troll.

I don't think the Java ecosystem is really that great any more. There was definitely a time when it was the biggest and best, but I don't think that's been the case for a while.

Is there anything in particular that's available in Java that you couldn't get in Go or Python?

First of all, the number one component of the Java ecosystem is the JVM - a rock solid execution environment on pretty much any hardware/OS combination you're likely to find in the wild. Also, the JVM is a very decent environment. For one, it has no trouble with high levels of concurrency. Neither Python or Ruby particularly likes concurrence (but achieves it with multiple processes). Write once, run anywhere might have been a mirage when Java came out, it's not anymore.

Next step on the ladder is languages. You can mix any combination of Java, Scala, Groovy, Clojure, JRuby, Jython and others with little or no friction.

Then there's infrastructure. There's a good selection of rock solid application servers - Tomcat, Jetty and Glassfish comes to mind. The entire JDK toolchain, especially VisualVM, JConsole and JMX. Get a stacktrace or a heap dump from a running java process? Trivial and built in.

Finally, the libraries: JDBC is pretty neat: Every database under the sun plugs into the same interface. Terracotta has a pretty interesting line up (http://terracotta.org/products). Hadoop - it's a full ecosystem of it's own. Eclipse and IntelliJ IDEA. Apache POI for MS Office doc manipulation. Apache FOP is supposed to be pretty powerful. Lucene. Apache Commons.

Is there anything in particular that's available in Java that you couldn't get in Go or Python?

A cross-platform UI toolkit that's pretty good all things considered? A reporting toolkit that produces PDFs according to custom templates?

(Swing and JasperReports, respectively)

Go is missing Java's NLP libraries.

I count this as a Go feature.

The next sentence ruins it though: "Nobody loves Java but it is the easiest language to recruit for if you're targeting the JVM."

Recruiting for Go is not nearly as easy as for Java.

If you hire a Go programmer, it probably will be somebody that deeply cares about their work, somebody who has a certain sense for aesthetic and technical simplicity, and other qualities that not common that among Java programmers.

I agree that Go may very well be a "python paradox"[1] language.

[1]: http://paulgraham.com/pypar.html

Also the person will be more expensive.

Promising work in Scala or Clojure will probably lead to better success. At least if you employ a measure of success even slightly more sophisticated than thickness of the pile of resumes you receive.

Yes, Python will probably retain niches as a beginner language and a language for scientific data processing (but not in web development). This is because it's fairly easy to learn and the language enforces certain minimal coding practices better than most other languages. But it should be clear by now that Python certainly won't be taking over the broader programming world.

There was group of guys at a previous job of mine who loved programming in Python so much that they started advocating for its use at work for serious projects. They eventually got their wish, but six months later they realized that using Python for heavy-duty corporate stuff is far removed from using it for personal hobby programming.

The main problem is that Python has been oversold. This will be corrected in due course, and things will go on with Python being used only where appropriate.

Can you give some examples for why Python is not appropriate for "heavy-duty corporate stuff"?

No, Python will not be "taking over the broader programming world", nor will any other language. Of course Python will go on, hopefully, being used only where appropriate.

As for your n = "?" (your ex=colleagues) anecdote, it is laughable, ignorant, and insulting to the intelligence. Are you not aware of "heavy-duty corporate stuff" such as Google, or Youtube, let alone the massive scientific ecosystem built around Python, or do you consider such things "personal hobby programming"?

Python has not been "oversold", as it has never been sold at all. Perhaps you should ask yourself why MIT has converted its courses to Python.

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.

There's Google Go now, too, which is arguably a better solution than the heavyweight JVM (though a worse one than C or Ada).

> Nobody loves Java

You don't, and I don't, but some people do.

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.

> People like new stuff, Python is getting old, boring, too many people are into it now and its not hip anymore.

Lots of people are also into breathing, eating, and having sex. I don't see those activities losing mindshare.

Programming languages and their affiliated ecosystems are tools for solving problems. It's fine if you want to argue that Python has ceased to solve problems for people now, either because there are new problems, or because Python itself has changed/evolved into irrelevance. But if it truly is the case that some people don't want to use it because "it's not hip", then those people are probably not actually trying to solve real problems that anyone cares about.

I'm not convinced that Python was ever all that beloved of web fashionistas or technology blogs. If you think that NodeJS could replace it, you probably don't understand what Python programmers find appealing in a language. These are people who like their code tidy, and are really bothered by little details like [] + [] == "".

Agree with you about Perl though. Definitely still a persistent hum of Perl usage amongst programmers I know.

>>you probably don't understand what Python programmers find appealing in a language.

99% of all programmers in this world are in the game for employment reasons.

People are going to go things where money is. In the past it was Python, now its slowly shifting to something else.

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.

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:

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.

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.

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.

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.

Where is the sense of history of someone whose entire experience of programming probably extends no further than 2-3 years into the past? This is a systemic problem in software. The average age of a "cutting-edge" programmer is always going to be under 30. People in their 20's are at a peak of performance, but merely in the foothills of judgement and knowledge of history, even software history.

Those who are successful in their careers in software become managers in their 30's and cease to take part in debates about languages, which accounts for their puerile tenor.

I'm nevertheless glad to see that you are still keeping an eye on things, Mr Dalke!

Do you have any evidence which helps confirm that "people in their 20's are at a peak of performance"?

I know in my case that in my 20s I implemented an algorithm for finding the maximum common subgraph between a set of N graphs. While in my 40s I created a new algorithm for finding the same, which is faster and more flexible. But in my 20s I worked a lot harder, which means I produced more code. And got burned out a couple of times.

If you measure performance by LOC, then I might agree with you. But did Linus Torvalds and John Carmack become worse once they got into their 30s? What of Don Knuth? And Guido van Rossum was born in 1956 making him over 30 when he started Python.

I think Guido has long since learned not to care about language debates on HN. ;)

I thought that "Perl 6 is not Perl" was pretty much well understood by now. Perl 5 and Perl 6 are such vastly different languages, that they might as we have just named it something different.

I think its right to say Perl 6 is not Perl 5. But Perl 6 is definitely Perl.

I mean its Perl because it preserves the spirit of Perl since Perl 1.

Besides as Larry has mentioned in so many occasions, Though Perl 6 has been designed ground up, in many ways that's the language Perl he always wanted to use. Using the name Perl also serves marketing needs.

It's not a very good marketing tactic, then. It gives end users the impression that Perl has stagnated, whether or not it's true. They've been talking about Perl 6 a long, long time.

> There are tools like Moose, Devel::Declare, DBIx::Class etc which probably Python can never get ever!

I'm not sure why you bring these up, but yes - Python has those. Moose is pretty much built in - objects are in the language itself and there's no need for more syntax sugar on top. DBIx::Class is SqlAlchemy. Devel::Declare is hopefully never going to appear... unless David Beazley is bored one weekend.

> Moose is pretty much built in - objects are in the language itself and there's no need for more syntax sugar on top

Python's object system only provides a subset of what Moose (and Class::MOP) currently offers.

Have a look at Bullwinkle which is a (currently incomplete) port of Moose to Python: http://pypi.python.org/pypi/bullwinkle/

>>Moose is pretty much built in

No actually, Python has an easy class syntax, that's it.

Is anyone actually using Perl 6 in production, or planning to? (Serious question, not a troll.)

I'd say that, until this summer, only core hackers claimed to use or even try Perl 6 to get anything business like done.

chromatic's comment below is gracious but I think he had a quite unpleasant experience, at least business-wise. And he was a core hacker.

The most fun example I know of of someone, other than a core-hacker, planning to use Perl 6 in a production setting, is Sir Robert, as discussed on his 6ing.org blog and introduced at http://www.6ing.org/?p=6

(I would describe myself as an avid Perl 6 watcher. I've been watching it for 12 years. For the last 18 months I've read pretty much the entire days' worth of dialog of the freenode #perl6 IRC channel, nowadays the main hub of Perl 6 activity. And in the last few weeks I've been selecting a subset of log lines representing the gist of each day's activity. For example: http://irclog.perlgeek.de/out.pl?channel=perl6;date=yesterda...)


Its limitations are speed and libraries. However each year these continue to improve. So for now I've only used it a couple of times for small scripts but I do plan on writing some modules/libraries in perl6 in the (near) future.

Also chromatic (http://news.ycombinator.com/user?id=chromatic) has mentioned about using it for many years in his production systems (however I think he ripped it out recently and replaced it with perl5 solution).

I think he ripped it out recently and replaced it with perl5 solution...

January 2011, in fact. I couldn't afford to keep babysitting it to keep it running. I haven't tried since then, so things may be a lot better now.

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.

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

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.

> 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/09/improving-cross-compi....

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

Perl 6 on Android: http://blogs.perl.org/users/martin_berends/2012/06/rakudo-pe...

(Early adopters only!)

I've heard many people saying that "Perl doesn't scale" - "90% of the successful startups run RoR, why wouldn't you?" - "If you use Perl and you get web scale you'll have many problems"

I don't give at all credibility to such comments, but I have heard them. Perl's becoming every day more of a niche language.

Maybe some marketing about great Perl built projects could help. Does something like this exist?

> Maybe some marketing about great Perl built projects could help. Does something like this exist?

Some do get "marketed" via Perl News (http://perlnews.org/) or PerlMonks (http://www.perlmonks.org/). But I know of many Perl built projects which you only get to hear about via contacts, mailing lists or jobs postings.

Here are some announcements of Perl built projects (that I recalled and found quickly)...

* The Secrets Behind Blekko's Search Technology - http://www.readwriteweb.com/hack/2010/12/the-secrets-behind-...

* DuckDuckGo Architecture - http://news.ycombinator.com/item?id=525048

* LOVEFiLM’s love affair with open source - http://www.itpro.co.uk/622960/lovefilm-s-love-affair-with-op...

* Trendshare.org - http://www.modernperlbooks.com/mt/2012/09/announcing-my-new-...

And here is a list of Perl start-ups that come to mind: Lokku, Moonfruit, CareerJet & Adzuna.

Some do get "marketed" via Perl News or PerlMonks

Marketing is bringing your story to people who don't already know about it. Readers of Perl News and PerlMonks are very likely to already be Perl users/advocates.

Your response might be "what percentage of the failed startups run RoR?" ;)

"perl is doing just fine" http://www.tiobe.com/index.php/paperinfo/tpci/Perl.html

^^ Really?

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.

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

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.

Clojure and Go are sexy right now, but I see no signs of that fading.

The best argument for the quality of anything, is that it succeeds despite lacking "sexiness".

I first encountered python in 1993, and although I was intrigued, my first reaction was that it could never become popular, because it was too good!

Almost 20 years later, I'm glad to see that people are not as stupid as I sometimes think.

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.

I've found a surprising number of jobs want perl skills as only a small part of the job. In case Excel or Access isn't sufficient to process the data as needed, they want somebody who can whip out some Perl and get the job done.

Almost every admin, tools engineer lists perl. That doesn't mean you can get a job programming in perl. Just that you'll have to maintain that nasty bit of legacy .pl cruft X people before you hacked on.

There are many jobs where you are programming python

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

Hard time find perl? Sure. Hard time finding someone who knows {PHP, Ruby, Python, real-Javascript}? Not so much, and they cross-train into Perl pretty quickly. (I say "real Javascript" to distinguish those who really know and can write JS vs. those who know how to put a couple of jQuery methods together to drop a couple of event handlers onto the page, then hit their limit.) Especially if they know more than one of that list.

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.

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.

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

For what I know about Ruby (which is next to nothing), I would expect Ruby shop also scouting for perlist, am I wrong ?

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.

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.

Python is now totally dominant in scientific domains. The typical user is interested in ease of use and mature libraries, not in speed or niceties that are debated on Lambda the Ultimate.

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

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.

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

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.

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

This is true but it's missing the point. Scientific programmers and data analysts use Python because syntax matters. Getting those people to program their ideas in Javascript will require syntax changes, and it's not merely an issue of libraries.

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

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.

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.

If you read Doug Crockford's talks, he refers to JavaScript as a Scheme with braces.

Erlang is common enough as a language on a server to warrant a mention. It is not purely functional, but comes close. Immutability (no shared memory) and message passing are the key points.

Is this why the "Perl is dead" trolling is disappearing? The Python people are busy with other things... :-)

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact