The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
This month Visual Basic.Net has moved up sightly, but the big news is the PHP replacement language called Hack.
Looking a how popular a programming language is on Stack Overflow and the popularity of those same languages on GitHub allows for a analysis of what languages are most popular. The article by Stephen O’Grady reads: “The idea is not to offer a statistically valid representation of current usage, but rather to correlate language discussion (Stack Overflow) and usage (GitHub) in an effort to extract insights into potential future adoption trends.”
To be included in this analysis, a language must be observable within both GitHub and Stack Overflow.
No claims are made here that these rankings are representative of general usage more broadly. They are nothing more or less than an examination of the correlation between two populations we believe to be predictive of future use, hence their value.
There are many potential communities that could be surveyed for this analysis. GitHub and Stack Overflow are used here first because of their size and second because of their public exposure of the data necessary for the analysis. We encourage, however, interested parties to perform their own analyses using other sources.
All numerical rankings should be taken with a grain of salt. We rank by numbers here strictly for the sake of interest. In general, the numerical ranking is substantially less relevant than the language’s tier or grouping. In many cases, one spot on the list is not distinguishable from the next. The separation between language tiers on the plot, however, is generally representative of substantial differences in relative popularity.
GitHub language rankings are based on raw lines of code, which means that repositories written in a given language that include a greater amount of code in a second language (e.g. JavaScript) will be read as the latter rather than the former.
In addition, the further down the rankings one goes, the less data available to rank languages by. Beyond the top tiers of languages, depending on the snapshot, the amount of data to assess is minute, and the actual placement of languages becomes less reliable the further down the list one proceeds.
Object Oriented Programming has been around for many years, and it used in most of the newer programming languages. According to Wikipedia, the list of object-oriented languages include Java, C++, C#, Python, PHP, Ruby, Perl, Delphi, Objective-C, Swift, Common Lisp, and Smalltalk. I haven’t used all of these languages, but I’ve used Object Oriented Programming for many years in multiple languages.
In this article by Charles Scalfani we learn that maybe everything isn’t all roses and rainbows on the Object Oriented ranch. People are starting to question how useful and powerful these Object Oriented features really are.
At first glance, Inheritance appears to be the biggest benefit of the Object Oriented Paradigm. All the simplistic examples of shape hierarchies that are paraded out as examples to the newly indoctrinated seem to make logical sense.
And Reuse is the word of the day. No… make that the year and perhaps evermore.
I swallowed this whole and rushed out into the world with my newfound insight.
Banana Monkey Jungle Problem
With religion in my heart and problems to solve, I started building Class Hierarchies and writing code. And all was right with the world.
I’ll never forget that day when I was ready to cash in on the promise of Reuse by inheriting from an existing class. This was the moment I had been waiting for.
A new project came along and I thought back to that Class that I was so fond of in my last project.
No problem. Reuse to the rescue. All I gotta do is simply grab that Class from the other project and use it.
Well… actually… not just that Class. We’re gonna need the parent Class. But… But that’s it.
Ugh… Wait… Looks like we gonna also need the parent’s parent too… And then… We’re going to need ALL of the parents. Okay… Okay… I handle this. No problem.
And great. Now it won’t compile. Why?? Oh, I see… This object contains this other object. So I’m gonna need that too. No problem.
Wait… I don’t just need that object. I need the object’s parent and its parent’s parent and so on and so on with every contained object and ALL the parents of what those contain along with their parent’s, parent’s, parent’s…
Ugh.
There’s a great quote by Joe Armstrong, the creator of Erlang:
The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.
Banana Monkey Jungle Solution
I can tame this problem by not creating hierarchies that are too deep. But if Inheritance is the key to Reuse, then any limits I place on that mechanism will surely limit the benefits of Reuse. Right?
Right.
So what’s a poor Object Oriented Programmer, who’s had a healthy helping of the Kool-aid, to do?
The latest results of the Stack Overflow Developer Survey have been published and it shows that Microsoft needs to rethink their approach to development technologies. They used rely on developers to embrace their vision for technical solutions and development technologies in the enterprise. That relationship is much more complicated today and the latest survey is evidence of that strained relationship.
While the CEO at Microsoft, Satya Nadella, has been talking a good game of changing its partnership with developers, the mission to win back thousands of developers isn’t finished. While Microsoft still gets a lot of developer support with .Net and C#, the company is also helping developers to the cloud with Azure and then extending their reach beyond Microsoft-built technology with support for Node.js and Linux. Can Microsoft win back the hearts and minds of the development community?
If you are learning to write code or are just considering a new programming language, it will definitely helps to know which languages are the most popular. The idea is that a language that is more popular will usually mean more support from other programmers and more job opportunities. The internet site GitHub has tracked historical popularity of various programming languages used by 10 million users since 2008 to rank the overall popularity of languages using the data collected by Linguist.
The top 5 languages right now: JavaScript, Java, Ruby, PHP, and Python. You can read the GitHub article here.
So you are interested in programming, but just don’t know which language to choose? Here is an interesting infographic that may help you make a decision:
You can see the full-size image here. You can get more information about programming choices here.