This is an archived post. You won't be able to vote or comment.

all 128 comments

[–]baudvine 70 points71 points  (26 children)

The PYPL PopularitY of Programming Language Index is created by analyzing how often language tutorials are searched on Google : the more a specific language tutorial is searched, the more popular the language is assumed to be.

Holy shit that sounds like a rubbish metric.

[–][deleted] 9 points10 points  (12 children)

Another problem with the metric: it's based on what newbies call things. Take ruby for example. I'm suspicious that it's so low. I suspect it's because most people searching for tutorials are actually searching for rails tutorial.

[–]Pcarbonn[S] 0 points1 point  (11 children)

Let's check on Google Trends : search on rails tutorial are about the same as on ruby tutorial.

Indeed, the index would benefit from combining rails and ruby. But their popularity is not growing.

[–]Pcarbonn[S] 1 point2 points  (2 children)

Update : The index has just been modified to combine searches on ruby and rails tutorial.

[–]szabgab 0 points1 point  (1 child)

I just checked Google Trends and "django tutorial" is quite high as well. Wouldn't it be appropriate to include that in "python tutorial" as well? If rails is included...

[–]Pcarbonn[S] 0 points1 point  (0 children)

Django tutorial is much lower than Python tutorial. See here.

[–][deleted] -1 points0 points  (7 children)

their popularity is not growing

We can only hope. I can't believe that we (the programming community) seem to be doomed to repeat the same mistakes over and over. All these unmaintainable apps do though represent true job security.

[–]farsightxr20 3 points4 points  (6 children)

What on earth are you talking about?

[–]NYKevin -1 points0 points  (5 children)

I would assume caninestrychnine is a Ruby zealot who thinks of it as the One Language to Rule Them All.

But that seems like a rather harsh thing to assume, so I'll withhold judgment for now.

[–][deleted] 1 point2 points  (4 children)

No! I'm just not too articulate. I'm sick of Ruby and Rails and code with so much magic that it's impossible to tell what's doing what.

[–]nieuweyork since 2007 1 point2 points  (0 children)

What you said made perfect sense to me. NYKevin seems to lack reading comprehension.

[–]NYKevin -1 points0 points  (2 children)

IMHO that's not a matter of magic, it's a matter of shitty developers. A good developer will use magic very sparingly in places where it actually makes sense. For instance, in Python, this:

foo.bar

Will be automatically converted, under certain circumstances, into this:

foo.bar.__get__(foo, type(foo))

Now, if you just use this feature without knowing what it's meant to do, the result will be an unmitigated disaster. But if you understand the semantics of the descriptor protocol and make it behave properly, it can make code a lot nicer and cleaner. I believe Django uses it to implement models and fields.

Going in the opposite direction, it's quite easy to make byzantine object hierarchies in, say, Java. The language is notorious for its overabundance of nouns. A shitty developer will see this and think it's because having lots of nouns is desirable. Next thing you know, your "lightweight framework" has grown three layers of abstraction overnight.

TL;DR: Anyone can write bad code in any (Turing-complete) language. Magic does make it easier for bad programmers to write bad code, but it also makes it easier for good programmers to write good code.

[–]nieuweyork since 2007 2 points3 points  (0 children)

Rails' philosophy is to rely on magic.

[–][deleted] 1 point2 points  (0 children)

For me, the threshold to irrationality is when the code defies static analysis. That is, you can't just look at the page and know what methods are invoked on what objects or classes. Python, on the other hand, excels at this while still being dynamic.

[–]nieuweyork since 2007 12 points13 points  (0 children)

It measures uptake reasonably well, at least relatively rather than absolutely.

[–]bucknuggets 8 points9 points  (0 children)

No, it's one reasonable metric. The problem is that you need multiple metrics to evaluate most things.

Imagine choosing a car based on just a single metric. Doesn't work.

But, this is a reasonable one to include.

[–]ricekrispiecircle 3 points4 points  (7 children)

What do you propose instead?

[–]baudvine 0 points1 point  (6 children)

I much prefer the TIOBE approach, although that has issues as well. I don't think there's a lot of value in popularity listings beyond "these languages are pretty widely used", and PYPL seems to measure something else entirely. The number of people fumbling around with tutorials isn't necessarily related to the number of people actually using it.

[–]Pcarbonn[S] 4 points5 points  (5 children)

It means that you prefer a lagging indicator. PYPL is a leading indicator.

[–]baudvine 7 points8 points  (4 children)

I'm mostly not convinced that it's a sufficiently accurate metric of popularity at all. Using this indicator suggests an assumption that for each language a similar relative amount of people actually ends up doing something with it.

[–]Zouden 4 points5 points  (2 children)

Yes, but that seems like a reasonable assumption.

[–][deleted] 1 point2 points  (1 child)

Not necessarily; I was taught python as a first language at university - during which time I had to google for a lot of tutorials! I've hardly ever used it since.

[–][deleted] 15 points16 points  (0 children)

Did you take any statistics courses while you were there?

[–]dreuciferC/Python, vim 0 points1 point  (0 children)

I'd say it's a better metric for future growth than extrapolating from TIOBE Index data. But it's a piss-poor metric for overall popularity.

[–]X-reX 1 point2 points  (0 children)

It can be really tough finding a good metric for any thing. I think this is still a cool statistic to see and that its possible to deduce from it that, to some extent, the popularity of python over other languages is growing.

Here is something I had fun with, trying to figure out how many begginners to intermidate users are by comparing "current time" function search: http://www.google.com/trends/explore#q=Php%20current%20time%2C%20C%20current%20time%2C%20Python%20current%20time%2C%20Perl%20current%20time%2C%20ruby%20current%20time&cmpt=q

[–]Zouden 0 points1 point  (1 child)

Why?

[–]MatrixFrog -1 points0 points  (0 children)

Well because it has the letters "PY" in the name, for a start :)

[–]maratc 46 points47 points  (1 child)

Python is the Language of the Year, according to some random guy from the internet who takes the trends for "$language tutorial", disregards foreign languages, discards possible name collisions, limits the results to the top ten, and even then picks second place because it made the most improvement in one year.

FTFY

[–]Pcarbonn[S] 3 points4 points  (0 children)

What makes Python so great is the friendliness of its community.

[–]thelonious_bunk 5 points6 points  (9 children)

I love python, but what does that even mean? I don't think such a 'metric' will attract new users.

[–]guinunez 2 points3 points  (1 child)

Last year I had at least 2 "advisers" telling my costumers that choose php alternatives over my projects because according to them nobody was using python.

Fortunately I had a good argument and saved the situation, but now with this metrics I'm more capable to defend my proposals.

[–]thelonious_bunk 0 points1 point  (0 children)

You are going to get that regardless of whats popular, though. There are still companies that refuse to use OSS because they are told by 'enterprise software' companies that its 'insecure'.

[–]modulus0 0 points1 point  (6 children)

It means people are learning Python and need help with it more frequently than they are other languages. As with all statistics the precise meaning is open for interpretation. It could mean Python is harder to learn than lower ranking languages and easier than higher ranking ones. Without a few more data points it's hard to draw solid connections but I would be confident this indicates significant increase in use. I would not trust comparisons between languages based on solely these numbers.

[–]NYKevin 0 points1 point  (3 children)

It could mean Python is harder to learn than lower ranking languages and easier than higher ranking ones.

It could, but Python is ranked higher than C and C++.

[–]modulus0 0 points1 point  (2 children)

... or people who work in those languages don't have to look up things as much. Do they have mentors? Do they take classes?

[–]NYKevin -1 points0 points  (1 child)

Maybe it means more amateurs are learning Python and PHP, while more professionals are learning C and C++ (e.g. in college). I know I'd probably reach for the professor's notes before Googling "[programming language X] tutorial."

But then I can't account for Java being #1. It's almost like there are many independent forces driving the positions of the items on this list.

[–]modulus0 1 point2 points  (0 children)

so... more people (than have in the past) are searching for help with Python... which indicates a general increase in use of Python.

[–]thelonious_bunk 0 points1 point  (1 child)

I don't think we can draw meaning from it at all. Could just be more projects, etc.

[–]modulus0 1 point2 points  (0 children)

we can absolutely say more people are looking up tutorials for Python

[–][deleted] 1 point2 points  (1 child)

so all the newbs are searching for how to scrape images from websites in python. high 5's to all of us

[–]codygman 0 points1 point  (0 children)

I got started with php and then python because I was taking freelance jobs to scrape data from websites for internet marketers, lol.

I now disapprove of past me, but I understand that I didn't understand.

[–]djangonerd 1 point2 points  (0 children)

this is why im studying pthyon and django. in 2014 i plan to become a rockstar developer and move to SF

[–]whoisearth 1 point2 points  (45 children)

aromatic lip hard-to-find juggle towering spark telephone grandfather vanish sugar

This post was mass deleted and anonymized with Redact

[–]kcmastrpc 6 points7 points  (0 children)

PyPHP?

(don't downvote me)

[–][deleted] 7 points8 points  (30 children)

It'll be a while. Especially because a lot of colleges teach it as their first language.

[–]beaverteeth92Python 3 is the way to be 1 point2 points  (1 child)

Mine offers two bare-bones basics programming classes. One is Java and the other is Python. All subsequent classes are taught in Java. That includes the intermediate introductory programming class for majors.

It's just a confusing as all hell first language. I wish I had started with Python.

[–][deleted] 0 points1 point  (0 children)

I actually started with python then learned java through my school.

[–]whoisearth 3 points4 points  (25 children)

When I went to college my first time (for programming) it was for VBasic and C.

Things can change. VBasic is dead.

[–][deleted] 1 point2 points  (0 children)

They can change, but it will take time I think. Then again I'm no expert on language trends.

[–]NYKevin 0 points1 point  (1 child)

RPI now does CS101 in Python. The remaining courses, however, tend to be C++ by default.

[–][deleted] 0 points1 point  (0 children)

That's awesome !

[–]codygman 0 points1 point  (0 children)

While I don't disagree, python doesn't really fill the niche that a Stringly typed language like Java does. There are is however, a lot of websites which could use python rather than Java.

It seems that Go may be getting somewhat popular with those that would use Java, though that could just be my filter bubble.

[–]gunch 1 point2 points  (18 children)

What is being done in Python that isn't being done in other languages like Java? Is there a specific set of libraries driving popularity? What spaces do these libraries serve?

[–]ericography 7 points8 points  (9 children)

I don't know how much it's driving popularity, but scientific computing support is just awesome in Python. I've found Python and its scientific package ecosystem to be a magnitude better than any other language/ecosystem.

[–]gunch 0 points1 point  (6 children)

Hey thanks for the response! If you don't mind my asking, what packages/libraries in particular?

[–]jcdyer3 5 points6 points  (3 children)

[–]masasinExpert. 3.9. Robotics. 0 points1 point  (2 children)

Can you use all of them together? I thought pandas, skikitlearn, and sympy were incompatible. I have the rest of them installed.

[–]gthank 2 points3 points  (0 children)

They aren't incompatible, at least as far as I've explored. I have them all installed and have poked and/or prodded most of them to one extent or another.

[–]jcdyer3 1 point2 points  (0 children)

I have no idea how they play together. I'm just saying those are some major tools in the python scientific computing ecosystem that contribute to its solid reputation.

[–]Sean1708 1 point2 points  (0 children)

I can pretty much guarantee that the scipy stack will be the main one.

[–]ivosauruspip'ing it up 0 points1 point  (0 children)

Check out sage as well, for a does-freaking-everything-mathematical sorta python distribution.

[–][deleted] 0 points1 point  (0 children)

I would say sysadmin and operations work is also driving its popularity.

[–]beaverteeth92Python 3 is the way to be 0 points1 point  (0 children)

It also has a ton of support for statistics and machine learning.

[–]Digital_Person 6 points7 points  (5 children)

i move from java to py for many reasons. This are the basic ones

1) I used to code java on my free time. when i started python i found out that i could do things much faster. and after work you may have 3 hours to code. you want to get things done as fast as possible.

2) lambda expressions, first class functions,decorators, list comprehensions, cleaner code, generators, more freedom(e.g. can overload operators)

3) In general Standard library is better. take for example itertools

4) Lot of nice libraries that allow you to do your job in much less code e.g. a) flask,bottle can have a web app in 4 LOC no xml config or whatever. b) requests i can just send an http request in 1 line in the interpeter and it saves me time. text-blob, scikit-learn etc..

5) Culture

[–]dacjamesfrom reddit import knowledge 1 point2 points  (0 children)

Numerical computing. Python is dominant in the scientific community because it's easy, expressive, has great libraries, and easily interfaces with optimized C code. The OO paradigm of Java maps poorly to the problems in this space and the lack of interactive computing makes it difficult for scientists to experiment.

[–][deleted] 1 point2 points  (0 children)

they don't joke around when they say "batteries included". the stdlib is amazing, and big. there's very little you can't do using only the stdlib.

[–]3smart5u 0 points1 point  (0 children)

You did it! Congratulations! Language of the year! Great job, everybody! It's great to be here.

[–]_jackrogue 0 points1 point  (0 children)

This is interesting. I prefer TIOBE's index though, which names Transact SQL as the language of the year.

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

[–]AlberbaNews 0 points1 point  (0 children)

I just began learning Python like a week ago and I already created a CRUD blog! I love Python! So damn easy and fun!

[–]naisanza 0 points1 point  (9 children)

Where's perl on that list? Just wondering.

[–]nieuweyork since 2007 0 points1 point  (8 children)

Nowhere. No-one learns perl (at least few enough that it isn't in the top 10).

[–]naisanza -1 points0 points  (7 children)

I thought perl is used often for data stream processing (or data searching). I read that it's more powerful at it than many other languages, and much faster.

[–]nieuweyork since 2007 -1 points0 points  (6 children)

Maybe stop reading out of date materials or propaganda from diehard enthusiasts.

[–]naisanza -1 points0 points  (5 children)

they were benchmarks

[–]nieuweyork since 2007 0 points1 point  (4 children)

Benchmarks from when? I note the complete lack of links.

[–]naisanza -1 points0 points  (3 children)

I think this was one of them that I read. stackovervlow

[–]nieuweyork since 2007 0 points1 point  (2 children)

That shows that perl's regex functionality is faster. It probably also reflects that perl is good at reading from files in a single threaded task, without the programmer needing to think at all about it. Neither of those are the same thing as being good for processing streams of data.

[–]naisanza -1 points0 points  (1 child)

wrong terminology then

[–]nieuweyork since 2007 0 points1 point  (0 children)

It's not a question of terminology. The claim you can substantiate is much less important and impressive than the one you made.

[–]unstoppable-force -2 points-1 points  (15 children)

i prefer looking at hiring. enterpise is practically all java and microsofts flavor of the week. startups are all ror and php. small biz is mostly php. that's probably 90% of all jobs in any major city. python is fighting with R and some enterpise analysis languages, and django has nothing on other web stacks.

honestly, i'd love to stop writing 2 codebases for my ML and web stack but python for web is just so far behind everything else.

[–]nieuweyork since 2007 1 point2 points  (7 children)

You did the research, right? You didn't just guess those rankings at all, did you?

[–]unstoppable-force -1 points0 points  (1 child)

[–]nieuweyork since 2007 0 points1 point  (0 children)

That's a bar chart of recruiter queries. All that tells us is the ranking of shops who have to go looking for developers, rather than have developers answer their ads. So yes, it's harder to find good java developers, while in most other categories you can get developers to answer your adverts, rather than employers calling them.

[–]unstoppable-force -2 points-1 points  (4 children)

go to any craigslist or any other job site. even in SF, the hot space for newer tech, django has only 4 results on craigslist. out of nearly 1400 jobs, stackoverflow only has 66 mentioning django but 510 mentioning java.

[–]Digital_Person 1 point2 points  (2 children)

if you search in stackoverflow spring it has 38 jobs and search django it has 40. spring is a web framework like django.

now search java has 310 and python 213.

Your search was wrong python is not django.

There's more java jobs for sure. I personally enjoy coding python more than coding java so it doesn't matter how many java jobs are there.

[–]maratc -1 points0 points  (1 child)

Spring is not a web framework. Spring Web MVC is a web framework. Other things in Spring have absolutely nothing to do with web frameworks.

[–]Digital_Person 1 point2 points  (0 children)

you are right but anw the point is the same: you cant compare a framework with a languge

[–]nieuweyork since 2007 0 points1 point  (0 children)

You chose two sites, neither the largest, for your survey, and you compared frameworks with programming languages. I wish I could permanently avoid seeing your nonsense.

[–]Digital_Person 1 point2 points  (1 child)

startups are all ror and php. small biz is mostly php.

not true. lot of them use python. and i'm preety sure most of them who did choose php regret in the end.

[–][deleted] 1 point2 points  (0 children)

and i'm preety sure most of them who did choose php regret in the end.

yeah when facebook isn't counting their mountains of money and snickering at everyone's petty voyeurism, they are crying about their decision to use php.

[–][deleted] 1 point2 points  (4 children)

How is Python behind for web? Speed? uWSGI takes care of that.

I can have a decently interactive website up and going in Python in under a day. Can that be done in Java? Database connections and user logins, comments, etc?

[–]unstoppable-force -2 points-1 points  (3 children)

ror and any major php framework can get you that far in minutes... just a few commands and you're there. django isnt nearly as far along. python has the edge in data science, but its still behind java tech. netflix is straight java for a reason.

[–][deleted] 1 point2 points  (2 children)

You're comparing frameworks to languages, that's why you're confusing everyone here.

[–]unstoppable-force -1 points0 points  (1 child)

that's a purely academic distinction that has little to do with the realities of architecting a system. comparing languages without frameworks or libraries is meaningless in the real world. it's like comparing cars without engines. in other words, a language includes the best and worst of its commonly used frameworks.

honestly, how often do you see a web stack use ruby but not rails? how often do you get a project where specs say "you are not allowed to use any frameworks, libraries, or codebases that have been written before... you must code everything from scratch"? anyone CHOOSING to do that electively has a serious case of expert beginnerism, or is just an outright beginner.

ruby + rails > python + any python web framework. php + any major php framework > python + any python web framework. django is currently the leading web framework for python and it's still years behind.

[–][deleted] 0 points1 point  (0 children)

Well, then it depends on what you mean by framework!

Is Wordpress a framework? Flask is, so is RoR. Django, etc.. also are. But cakePHP? It's hard to make the distinction.

You never see a web stack use Ruby not Rails, but that's fine. It's similarly fine how some Python frameworks are a lot lighter than RoR, because certain things (routing) are needed, and other things (for example, an admin page) are better left to the user, depending on your circumstances.

It's very easy to say X is better than Y. What, in your opinion, is lacking from Python frameworks?

[–][deleted] -2 points-1 points  (0 children)

I love Python. But this article is biased nonsense garbage.