Python grew fastest in web searches for 'tutorial' over the last 5 years
sites.google.com
sites.google.com
Ruby and Javascript are made infinitely more popular because of projects like Rails, jQuery and node. A language like Python has no obvious framework helping drive adoption, so most information out there would be language-centric versus framework centric.
http://www.google.com/trends/explore?hl=en-US#q=Python%20tut...
Not including ember, backbone, angular, …
Although it seems to me that the amount of tutorials on a language/framework do not have to have much in common with their popularity but with the beginner/pro-ratio. (under the assumption that mostly beginners write (for TIOBE) or read (for PYPL) tutorials)
Really, how seriously does one need to take a language popularity index regardless of context?
Similarly he does not see an increase in searches for "objective-c tutorial" and assumes the language is in decline. In reality there might be growth in terms like "ios tutorial" or "iphone sdk tutorial" which his metrics don't track.
A good parallel for your comment would be: "I'm just concerned about people that learn VBA but not really Visual Basic itself, just the bare minimum needed to use Excel macros."
"The ratings are calculated by counting hits of the most popular search engines.... The number of hits determines the ratings of a language" -- http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_d...
How could that indicate anything other then more pages found by the search engines. How do you know the bias of the engine over time isn't giving better results and the "search trend" ranking is causing the results to skew in one direction or another.
I doubt search engine trends are a really accurate way to understand how much code is out there and what people are actually doing on a daily basis.
Worse the search term is: +"<language> programming"
More sites have "python programming" in them then "perl programming" and way more have "java programming" in them?
This tells me nothing really. I could argue it tells me Java is hard as hell and you have to have lots of references to figure out how to do anything.. Or it tells me that Java has lots of "java programming" sites. Heck maybe it tells us that lots of people host javadocs and every single page says "Java Programming" <reference, docs etc.>.
All that said I am actually enjoying python a lot and find myself writing more of my "you choose the language" projects in it. It feels like it will be more maintainable over time and I have the general feeling I can turn it over to others easier then a pile of Perl. I have to really write careful in Perl to make it readable by non-Perl heads. Python sort of forces that on you up-front. I'm still not a fan of having to use SPACES (COBOL anyone!!) to maintain blocks of code but I'm slowly getting used to it and using vim settings to make it easier etc.
This is an honest question: why would you care about that? What does it matter if someone who doesn't know a language (or isn't bothering to learn it) can read code written in that language?
Python sort of forces that on you up-front.
How? Indentation doesn't really matter and, for example, list comprehensions aren't all that obvious to someone who's never seen them before. I can understand "I think sigils might be confusing", but that's such a superficial aspect of programming I'm inclined to dismiss it as such.
My goal is to write stuff so I can DIE. In 30 years can you imagine how much I've written. I don't want all that code following me around the planet. I want to move forward and leave for others something they can maintain and understand and use.
> Python sort of forces that on you up-front.
Again I'm not done with my processing on this but I am a bit unimpressed with using spaces to identify code blocks. Ask me again in a year it might grow on me.. :)
Yes, but why do you care if people who don't understand a language can or cannot read code written in that language?
How does that work towards the longer term goal of writing code that I can DIE and it still lives on?
If nobody understands it then it will die... If they understand it they can maintain it, give it loving care and feeding and it will live for a long time.
No kidding, I have code that has been in production for 27 years.. still.. think about that..
Chances are I will leave this planet and my code will still be running somewhere...
Can you say that? And if not, why isn't that your goal?
We write code to solve problems for people, not to prove how smart we are. I would argue code that lasts decades is much smarter then 10 lines of something nobody understands and gets whacked on the next refactor.. But then again that's just my style.. :)
That reads like a false dilemma to me. Surely there's some wonderful excluded middle between "I write code that someone who doesn't know the language can read it" and "I write code so opaque that you need a language specification, a flashlight, and both hands to begin to comprehend it."
I, for example, try to write code, tests, and documentation that a decent developer with a working knowledge of the language and an understanding of the problem domain can figure out what's going on and why. I don't care if someone's nephew or niece who's never programmed before can make heads or tails of the code because I think that's a tremendously silly goal counterproductive to any good business sense.
(Also I've never seen a language which can enforce things like effective factoring, intelligible naming, coherent coupling and decoupling, intelligent encapsulation, and the like. Certainly Python doesn't enforce those.)
If any language is to be the "language of the decade", it ought to be C, and possibly C++. C or C++ still power basically every piece of truly important software, even today in 2013. The major operating system kernels, userlands, compilers, interpreters (including Python's main implementation!), network servers, and web browsers, are all written in one or both of them, for example. And that's not including the many embedded and industrial uses of C that aren't very visible at all.
Until some other languages offer the same full-stack experience, and are actually used for writing critical, widely-used software, I don't think we can label any languages but C and C++ as the "language of the year", or "language of the decade", or even "language of the century" and beyond.
I'm all for it.
Proponents of 'x' label 'x' the best thing in this decade is a lot less objective than your astute observation that electricity indeed still powers basically every piece of truly important equipment.
I doubt that; here, for example, is a truly important software system that is not written in C++ (and I suspect it would be a lot more dangerous if it had been):
http://www.drdobbs.com/embedded-systems/ada-next-generation-...
What's the current status of this project? I worked with someone who worked for many years on air traffic control software, it was thousands of developers, zero productivity, huge delays and budget overruns. Air traffic control software aids air traffic controllers but it's not as mission critical as the embedded software in the plane itself or in your car or pacemaker.
Regarding the software that controls an airplane, is that being written in C++? It is not too hard to find a counterexample there; Boeing wrote the software for the 777 jet in Ada. I would be very wary of any aircraft whose control software is written in C++, unless it was written some small, unambiguous subset of C++ (which would exclude most language features anyway). Likewise with medical implants, automotive systems, or anything other case in which failure might cause death.
Predicting what will be the next language of the decade is more interesting. My bet is on Javascript for now.
But my point is about the client side. We don't have much of a choice between client side languages, but we do have a choice about how much we do on the client in the first place. That equation has changed quite dramatically over the past decade thanks to new JavaScript runtimes.
Most people using node just use a PAAS too.
[Edit] Or did you mean to say that most people use node on a PAAS? In that case it's not a tautology, but I don't think that most people do, and I didn't say node was easy to set up.
No big deal to be ~50 times slower than native code in a single-thread, single-processor use case, but for a well-parallelizable problem on a multicore machine you end up being several multiples of ~50 times slower.
Google just gave up on trying to optimize Python (see Unladen Swallow project) and told the engineers to move on to something useful. I am not sure if the interanls are just to messed up too make it work or if resistance and denial on the part of "B"DFLs and the community is too strong.
But when javascript - JAVASCRIPT! - has a better server-side concurrecy pitch than your language, it is in big trouble
"Well, simple common sense is going to limit Python's applicability when operating at Google's scale: it's not as fast as Java or C++, threading sucks, memory usage is higher, etc. One of the design constraints we face when designing any new system is, "what happens when the load goes up by 10x or 100x? What happens if the whole planet thinks your new service is awesome?" Any technology that makes satisfying that constraint harder -- and I think Python falls into this category -- should be discouraged if it doesn't have a very strong case made in its favor on other merits."
And note this was before the failure of Unladen Swallow, before van Rossum's departure.
TIOBE - language is popular if "<language> tutorial" brings up lots of results on Google This page - language is popular if many people searched "<language> tutorial".
It's not hard to see that the second one is a much more interesting metric. That said, it's still far from being enough to evaluate a language's popularity. On the other hand, it can be at least mildly correlated with the amount of people wanting to learn said language over the measured period of time.
Then again, if that was purely the case we'd be seeing "brainfk" all over the place.
Just a thought.
Until you notice that Y-axis is logarithmic...