Swaroop C H

blog books about contact subscribe

Programming Language Adoption

01 Feb 2011

55 people have asked me to write about:

Indian companies just don't take Python seriously, not as much as Perl. Why is that?

28 people have asked me to write about:

Most companies opting for Ruby as their programming language of choice instead of Python

51 people have asked me to write about:

The future of the Perl programming language?

Phew, that is quite a lot of people asking about programming language adoption!

The TLDR version of my thoughts on this topic is: Companies are choosing the right tool and the right community for the right job. Which programming language is used in your company depends on the kind of work they are doing.

Ruby and Rails ecosystems are built by and built for web programmers. That is why you will see web programmers switching from PHP and Python to Rails. For web programming, I do believe that Rails has an edge, not just because of the framework itself, but because of the community rallying around it. The amount of amazingly useful stuff that they churn out outpaces any other community w.r.t. web-dev, and they even have quick effective screencasts to make it digestable, hence their edge!

Data analysis is the hot thing these days and as per O'Reilly, Python is the choice of language for data analysis even though Ruby gets more buzz in the tech news. It is the same reason why scientists are switching away from Ruby to Python.

Similarly, I believe that Perl is still used a lot as a "glue language" and "text munging language" which has always been its forte and continues to be its forte, although Python and Ruby have been slowly entering that territory. Even though there are marketing reasons why Perl is no longer as popular, if you do use Modern Perl, you can be as effective as with the other two languages [1]. For example, if you notice the recent announcement of Amazon "Simple Email Service", you will notice that their scripts SDK is written in Perl! Also, if you read the latest Perl news it is not lagging behind the other languages, it just doesn't get the "buzz" factor these days. Programming languages are like fashion, they keep coming back in cycles. Remember the days when JavaScript was considered a pain and today, it's the new hotness? (same goes for Haskell) We owe a lot to Perl and perhaps Perl 6 will teach us the future of things yet again, who knows!

So I have a question back for the 134 people who asked the above 3 questions - Is the programming language chosen by your company match the kind of community we have described here?

What would you say to these 134 people?


[1] Perl was the original magical language which I still have a soft corner for, since I have written a lot of Perl code at Yahoo! and thoroughly enjoyed it.

Comments

Ahmed El Alaoui says:

The rails edge, compared to django (the python framework that is the most comparable to rails), has become minimal in the last few months. Check out Google Trends:

http://trends.google.com/websites?q=www.djangoproject.com+,+www.rubyonrails.org&sa=N

There are all sorts of numbers floating around the web that indicate that the community around django is at least as big as the rails one. And this community delivers functionality that is at least at par as what the rails community delivers. This is very impressive as django doesn't try to sell/market it self as hard as rails tries.

Richard C. says:

@Ahmed El Alaoui

That graph means nothing. The overall Python community is bigger than Ruby community and Django has extensive documentation on its site. So a lot of google queries about Django gives results from its site.

From what I've seen, Django is more popular among small content-management like sites (see djangosites.org), while Rails among web applications/startups. And compared to Rails, it looks like, Django has literally no job opportunities at all.

@Swaroop

I don't think one free promotion event by a publisher or one blog post by a blogger (not scientist :-P) is any indication of "Python as the choice language for Data Analysis".

Sure, Python's NumPy and family is unmatched but recently I've seen plenty of web-analytics/monitoring/social-tracking startups using Ruby and I think Ruby community has created enough libraries for that kind of stuffs.

Swaroop says:

@Ahmed @Richard I used to be dogmatic about choice of tools just like you guys, but at some point, as engineers, we have to accept "the right tool for the right job" since that is the pragmatic approach.

Ahmed says:

@Richard C.
True, python community is bigger. Check this:
http://www.google.com/trends?q=programming+python,+programming+ruby,+programming+php+,+programming+perl&ctab=0&geo=all&date=all&sort=0


Perl has been declining steadly but still has the same amount of searches as ruby
Ruby exploded big from nothing in 2005 when rails 1.0 got released. Proof that ruby´s succes is very connected to rails
Php has a steep decline (compared to others) but is still double in numbers compared to perl / ruby.
Python is triple to perl / ruby. The graphs don´t show python is losing on ruby. On the contrary, python is winning on all (web) scripting languages.


Disqus is no small cms. Youtube as a startup used python. The ultimate startup known as google had the earliest google crawler-indexer built in python. Python is the official scripting language at google and used in google app engine (based on django). Friendfeed also a successful python startup got acquired by facebook for a big amount of money.

Don´t know where you live but here in europe there are plenty of django job opportunities.

@Swaroop
Are there any "tools" that can be build in ruby / rails that cannot be build in python / django? It is not what i have seen. And even if there suddenly is a tool in ruby/rails that doesnt exsist in python/django how long will it take before someone creates it? With such a big python community that wouldnt take more then a couple of days or weeks before some one starts something up. Ruby and python aren´t so different from each other as some would like to believe. Both tools are appropriate for the job but they just have a different philosophy to achieve the results.

Paul Joseph says:

@Swaroop,

I think its also got to do with how the company culture is. For eg at Akamai, we have a lot of great perl programmers and a lot of the old code is written in Perl, but we are making a transition to python for some of the new projects, because the folks are new, and they probably feel python has a much easier learning curve and not to mention readability.

Code is read many more times than it is written

Richard C. says:

@Ahmed

You're echoing the same thing which I said earlier. That Python has more users. But the reason for "programming python" ranking better than other languages which you compared with is, Python is a popular entry level language and many universities teach Python as CS syllabus. No experienced programmer would google "programming X".

And what Google/Youtube using Python has anything to do with Django? Disqus is an exception. But when people say "The admin interface is the killer feature of Django" you would expect what kind of sites they want to build with Django. Even as basic stuff as REST is an afterthought in Django.

@Swaroop

Point taken.

Ahmed says:

@Richard C.

You can search trends by combining "advanced" with language "X" or any other combination and you will still see that overall trend i mentioned. Or check research on some combination of trends:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

What Google/Youtube and any other company or person does in python matters alot for Django or in fact any other python web framework. Even if they do stuff in python that is not immediately web related and especially if they open source their python code (or part of it). As an example, i can mine some social network for data using non-django python code/module/library, combine the data with other related data using python, do some heavy calculations/machine learning/analysis in numpy/scipy/nltk/etc., plot in matplotlib or just translate it in some web summary format and let django show the results in webpage X. I could give you numerous of such examples where Django pulls its power from python code outside of itself. Django lives in the python ecosystem and as such it can take advantage of any growth in it. A growth that guarantees that Django or any other high quality python webframework will stay on the cutting edge. Not to mention the incredible webstuff that Django it self can do.

If you watched the evolution of the web since it started you can see a certain pattern. The web is taking aspects from our real-life outside the web and incorparating it in itself. Our shopping, social interactions, education, etc. is already partly assimilated into the web. So a programming language that is not only strongly focused on webdev but also on real-life-dev outside the web has a very strong advantage to a programming language that is only strongly focused on webdev. That limited focus will work in the web of 2010 but in the web of 2015 the web could be so different and so more assimilated in real-life that a language like python will have a big advantage over ruby (if its focus stays limited of course).

If you look at it from that perspective then Rails can try to churn out as much web-dev as it possibly can and will still be trying to catch up with all the functionality that comes out of Django plus its python-eco-system. Now, i do have to admit that on the presentation and marketing side rails has an edge. Marketing and presentation do help but they alone don't dictate how successful and healthy an ecosystem is or can become.

Swaroop says:

@Richard @Ahmed When people owning cars of different makers and models can get along, I'm sure people who like different programming languages can get along as well!

P.S. No more baiting on this topic, please, I will not be approving any more comments if the heatedness continues.

Feedback

There's no comment box, but please do email me or tweet me your thoughts and criticisms, and I will publish the relevant ones here.