Python Will Not Be The Programming Language of the Future
I’ve blogged previously about sitting in the School of Informations’s SI 539: Design of Complex Websites, my opinion of language choice, and my frustrations with parts of App Engine. After the last session of the course I had a short conversation with Chuck about the nature of the SI’s programming requirement, the state of various languages and development environments, and the possibility of offering a solid selection of high-level, high-specificity half semester courses focusing on a single development space (Rails, App Engine, iPhone, Android, OLPC, RFID, etc). SI’s current programming offerings aim for a basic competency level. This aim is a major disservice to the HCI students in the program who graduate with no completed projects and no “hard” skills they can apply, even at a beginner level.
This, I think, is putting them at a major disadvantage against graduates from places like CMU who leave with several completed projects under their belt. SI’s students are leaving with some reports, diagrams, and concept pieces untempered by actual development experience. I’ve found almost SI student suffer from a near-fatal case of wouldn’t-it-be-cool-itis. They’re full of great ideas but, lacking practical experience, unable to weigh the value added to product against the cost of adding it (“Feature X will be very valuable to users, but more costly than features A, B, and C which combined will do more to improve the experience”).
During this conversation Chuck tossed out one of those nuggets so surprising that you can only nod along, mouth agape. I can’t recall the exact quote, but this comes close, “I think Ruby had its year, but now it’s pretty much over. Python’s everywhere. I mean, Google uses it. It’s the future world programming language.”
Two thing struck me as odd in this statement. First, the notion that Python has somehow become a major language recently and Ruby’s growth since its 2005 entrance into popular attention has stalled. The second, that some language is on its way to becoming the One Language To Rule Them All.
Sadly, I don’t carry around a Ruby Defense Kit, so I just had to trust the the experience behind Chuck’s opinion.
His assertion seemed odd to me, though. Based on my experience I see roughly the same amount of Python and Ruby chatter. I encounter Ruby developers in the wild more often, and meet more people interesting in moving to Ruby than to Python, but this could just be my personal experience. Clearly I needed to dig a little deeper and get some perspective on the question.
Based on what I found, I think Chuck is experiencing perspective bias from his recent heavy Python involvement. Generally I found the following things:
- Python is growing
- Ruby is growing
- Python grew faster this year than last
- Ruby grew faster last year than this year
- Python grew from almost no interest to its current level over 12 years
- Ruby grew from almost no interest to its current level in 3 years
- There’s a slight trend towards Ruby over Python for new web projects (likely caused by Rails)
Although book trends aren’t a perfect representation of language use O’Reilly book sales chart from earlier this year is a nice summary of what I generally found:
You can also find some great data by doing trend searches on indeed.com.
Neither Python nor Ruby is a minority language, but neither are they majority languages. They appear to be growing by cannibalizing from Java, C/C++, PHP, and Perl. The question that speaks directly to Chuck’s second point (Python is on its way to becoming the world programming language) is whether one of these languages will continue to cannibalize until it becomes the dominant language.
That seemed to be happening with C++, until it didn’t. That was the hope with Java until everyone realized WORA was a myth.
Chuck thinks we’re in store for another round of this, but I don’t. The need, and desire, for a single language for all your development has passed. The number, and variety, of devices we develop for has grown and each device has particular needs better met by particular languages and frameworks.
Consider the Mac platform. I could develop native Ruby (or Python) applications for Mac OS X, but I lose all the major productivity boosts of Cocoa). I could develop Cocoa apps with Ruby (or Python) but Cocoa is filled with an expression style better suited to Objective-C so I use obj-c.
You can tell a similar story about Windows.
The iPhone uses Cocoa, Java dominates on other mobile devices, there’s a lot of interest in Erlang for highly concurrent systems, if your market is web you need Javascript (unless you use GWT, Pyjamas, or soon-to-be-released Red), Lua is starting to dominate in game scripting, C# is king for Xbox XNA games, and some day Nintendo will realize that requiring a separate, secure office and charging $2,000 – $10,000 is driving indie game developers to the iPhone/Touch.
There’s a high chance you’re currently working professionally in multiple languages each best suited to its particular job. I don’t foresee a massive move to ruby cocoa or iron python. Who is so tied to a particular language that they’d be willing to give up major advantages of programming in another language where it’s most appropriate?
Certainly not me. My love of Ruby can’t overcome my love of being lazy.


5 Comments
Jump to comment form | comments rss [?] | trackback uri [?]