- Poll: How reliable are ChatGPT and Bing Chat? - Tue, May 23 2023
- Pip install Boto3 - Thu, Mar 24 2022
- Install Boto3 (AWS SDK for Python) in Visual Studio Code (VS Code) on Windows - Wed, Feb 23 2022
Let’s look at RedMonk’s ranking first:
- JavaScript (+1)
- Java (-1)
- PHP
- C# (+2)
- Python (-1)
- C++ (+1)
- Ruby (-2)
- C
- Objective-C
- CSS (new)
- Perl
- Shell (-2)
- Scala (-1)
- Haskell
- R (+1)
- Matlab (+3)
- Clojure (+5)
- CoffeeScript (-1)
- Visual Basic (+1)
- Groovy (-2)
The numbers in parentheses indicate the change in position compared to the last ranking. RedMonk analyzed the GitHub Archive using Google BiQuery to generate this ranking. It is interesting to note that previous lists were based on GitHub’s own rankings, which are no longer available.
Living mostly in the Windows administration world, of course, the first thing I noticed is that PowerShell doesn’t even appear in RedMonk's list, whereas some languages I have never heard of seem to be amazingly popular. This somehow appeared highly unlikely to me considering how the biggest software company on the planet has been pushing PowerShell in the last few years.
Another thing I found odd is that Java and JavaScript swapped places at the top. It is probably true that JavaScript gained popularity recently, but Java runs on so many different kinds of devices (on 3 billion phones alone, according to Wikipedia) that this change in popularity is somewhat implausible.
So I did a quick analysis myself to find out how trustworthy the RedMonk ranking is. I used Google’s Keyword Planner, which tells you how many searches Google counted for a certain keyword in one month. This is a well-known method for determining the popularity of a certain topic.
The problem with this method, with regard to programming languages, is that some names of the languages have multiple meanings. For instance, the name of the programming language Java was derived from the island of Indonesia. However, I believe the number of searches for this second meaning of “Java” is negligible.
For one, Google’s keyword tool makes suggestions for other search terms, and none of them indicated that the name of the island plays an important role in the number searches for “Java.” Second, the keyword “Sumatra” (another big Indonesian island) has 8,100 monthly searches, whereas "Java" has 550,000. Deducting these 8,100 searches wouldn’t have an effect on the ranking. I put those names of programming languages with multiple meanings in parentheses.
- (Java) 550,000
- JavaScript 60,500
- (Python) 40,500
- PHP 33,100
- (Perl) 22,200
- Matlab 22,200
- HTML5 20,200 (14,800 for HTML5 and 5,400 for HTML 5)
- (Ruby) 14,800
- Visual Basic 12,100
- C# 12,100
- PowerShell 8,100
- Objective-C 3,600
- (Groovy) 3,600
- (Haskell) 3,600
- CoffeeScript 2,900
- VBScript 2,400
- Clojure 1,900
Notice that I had to omit languages such as C, C++, and R because Google’s Keyword tool doesn’t allow searching for just one letter or because the term was too ambiguous (Shell, Scala). I also replaced CSS with HTML5 because I think that makes more sense, and I added VBScript to the list because I am sure some Windows admins still use this scripting language. Some programming languages share a place because the Keyword Planner rounds the number of searches.
As you can see, the difference between Java and JavaScript is so huge that it is highly probable that the RedMonk ranking is inaccurate. All in all, I think this Keyword-Planer-based order makes more sense than RedMonk’s ranking. GitHub’s own ranking, which also puts Java on top, was probably more accurate.
You’ll also notice that PowerShell is more popular than some of the unfamiliar languages at the end of the list. However, I find it quite interesting that Visual Basic is still more popular than PowerShell. Visual Basic was once my favorite programming language, and I always preferred it over VBScript to automate Windows administration tasks until I switched to C#.
Anyway, I think that drawing conclusions from the popularity in GitHub to the general popularity of a programming language is questionable, to say the least. GitHub is not really that popular in the Windows world, and Windows still belongs to the most popular operating systems. I guess many Windows IT pros have never even heard of GitHub.
Programming languages that are popular in the open source world also benefit from such an analysis, because open source programmers engage themselves more in online communities than do closed source developers.
Subscribe to 4sysops newsletter!
Another thing one has to take into account is that, on the Web, some programming languages are more popular than others simply because they are mostly used by web developers. This why my ranking here also has to be treated with some reservation.
I think that MS is going back in time with powershell. From a command line MS-DOS we went to a GUI like windows which is more user friendly and now we are going back to command line ? Unbelievable !
mar, I guess the majority of admins agree with you. I think, PowerShell is a good thing for many admins who work in environments where scripting is needed. Microsoft just makes the mistake to force those admins who never have to script to use a CLI.
I also think that the future belongs to more human friendly interfaces. The GUI became possible because computers got more powerful. The next generation of interfaces will be even more human friendly than the GUI. Let’s give the Google engineers a little more time and we can let go of the CLI and the GUI.
I am not sure if I see the importance here. If anything this “study” reveals how weak this type of analysis is. In my personal experience of python vs .net (asp and c#) it would seem the former is better, but the latter is more popular. This is based off of two jobs I’ve had and the amount of job postings I have seen. My opinion is based off of how well the project was executed by the time I became involved as well. The python project was dream (as much as I hated python at first. I came in as a php dev), but the .net project is a mess.
Regardless, I think in the end it just matters how well the resulting application or script solves the problem, how fast it was done, and how easy it is for you (and others) to maintain. It doesn’t matter if the language used wins a popularity contest.
@marc: I have to disagree. Sometimes a GUI is better (like trying to learn general concepts of a task), but only when the tool isn’t too complicated. I hated CLI’s in the past, but once you see the power behind them its hard to justify using a bloated GUI. The amount of flexiblity you lose by using a GUI is too great in my opinion.
Using searches for a programming language name does not seem to realy measure popularity, if by popularity we mean actual usage of of the programming language. Searches for a programming language name would seem to measure of the ammount of interest in finding out about or learning the language for which a search is being done.
PowerShell can be used both via the command line and graphic interfaces. The purpose of a GUI is to permit dynamic human-system interaction with (relatively) immediate feedback of results. The purpose of a command line interfaces are to permit the dynamic-system interaction wit (relatively) immediate feedback of resuts and to permit system-system interaction with a record of feedback of results. By supporting both interfaces, PowerShell meets both purposes.
A major purpose of PoserShell is to permit (support) automation of tasks, administrative and others. A GUI interface is not suitable for automation of tasks – unless you are going to have an agent, human or otherwise, observing things in real time. Only a programming language can satisfy this need. PowerShell is first and foremost a programming language with a tremendous library of procedures and funtions to assist with creation of programs. It just happens to currently be a scripting language.
I would expect, at some point, to see a language translator of some kind created and released to eliminate the interpretation at run time.
You’re probably right that GitHub would skew results against PoweShell. How about including CodePlex? And even better, StackOverflow?
dan, I agree that many factors have to be considered when it comes to choosing a language for a project. However, I disagree with your view that popularity doesn’t matter. With a popular language you can find support more easily if you run into problems, you can find many code snippets on the Web that allow you to solve a problem faster, and last but not least, it is easier to find developers if you need to extend the project or if members of your team quit. So I’d say the popularity of a language is one of the most important factors.
John, the number of searches can only give you a crude idea how popular a language is. Nevertheless, I think the “amount of interest in finding out about or learning the language” is related to the popularity although I agree that it is perhaps a better indicator about the future popularity of a language.
I think, like many others you confuse automating administration tasks with building automation tools. I wrote more about this misunderstanding here.
I also disagree with your view that PowerShell is the first or best programming language for creating automation tools. Microsoft’s success is partly based on the fact that they always offered great programming languages and APIs that allowed third-party software vendors to build great systems management tools that enable admins to automate administrations tasks. Until today, those software companies don’t use PowerShell for this purpose. My personal choice would be C#, but this is a matter of taste.
PowerShell is the first scripting language with serious support from Microsoft. That is true. It is a great scripting language and certainly the first choice for admins who need to build automation tools. However, compared to the complexity of the automation tasks that can be administered with the tools build by big software companies, the scripted tools a single admin can build can always only be used for relatively simple automation tasks.
Rohit, you are certainly, right. Analyzing CodePlex would result in a totally different ranking. I am not so sure about StackOverflow, though. I think the best way would be to analyze the whole web. The number of different search engine bots in the 4sysops logs indicate that Google is not the only company who could do that.
Weird. For what it is, Powershell is pretty well done. I think people just aren’t taking the time to learn it. Also, looking at its popularity on Github as a metric doesn’t make much sense. Powershell projects are not really likely to end up there.
SDC, yes PowerShell is indeed well done. But many admins simply don’t have the time to learn a programming language. Most admins in small and mid-sized organizations don’t need to script because all the tools to automate administrations tasks are already available. The differences in IT infrastructures between most SMBs are negligible. Why build a new tool if somebody else already did? Why build my own electric screwdriver to automate screwing tasks if I can just buy it in the next hardware store? It would cost my company a lot more if I build it myself and my screwdriver would probably not even half as versatile, fast, and secure as the one build by professional electric screwdriver makers. So I think it is not really weird.
And you are right, PowerShell projects don’t end up at Github. I guess that applies to most programming languages that are popular in the Windows world
Get-Help and Get-Command mean I almost never use a generic search engine for PowerShell help unless I am really stuck. You can even figure out a whole lot of things just by using tab completion. I would expect PowerShell to not appear as highly in search engines even at an equal level of popularity.
Eric, that is a good point! PowerShell has better internal help features than other scripting languages. It is hard to tell how much this influences any web-based analysis of the popularity of PowerShell. However, I think another factor might outweigh this. PowerShell is mostly used by admins who only script every now and then or are forced to use a CLI because Microsoft doesn’t offer a GUI for the task. These sporadic “developers” have more need for support than professional programmers. Also, admins often don’t know how to use the internal documentation. But they all know how to google.
We must keep two things in mind. First, a language that is intuitive to use and has a limited scope may generate less online discussion than a more “powerful” language which requires additional complexity, such as strong typing, function pointers, or compilation challenges. Second, some languages exist in order to provide functionality that does not lend itself to being shared through repositories such as GitHub. Scripting languages such as PowerShell would (arguably) fall into this category as many people leverage them to perform system/implementation-specific administration tasks. Thoughts?
Adrian, I think you mentioned valid points. However, we also have to take into account that a more powerful language with a wider scope is more often used by professional developers whereas PowerShell is the domain of admins who only have to script or use the console every and now then and are therefore more often in need for help for the most basic problems. So you will see different kinds of questions for PowerShell and C#, but it is difficult to say which language will prompt more questions.
I totally agree with your second argument. I also think that people whose main job is not to write code are less likely to engage themselves in online communities about coding.
I'm reading this article now six years later and just amazing how far out this article is then and now. As a Windows infrastructure guy for over 20 years working with web design from 1996 and windows automation in Windows servers and domains for operations, platform solutions (CRM, SharePoint, Biztalk, Activ Directory, File migration etc), web programming and now working in devops environment for Azure, GCP, I completely disagree then and I do now. Developers has a lower understanding on automation in envinroments and has no need to know either. The survey should include operators and as developers. I believed in automation for 15 years ago and still do but by using the tool that has best coverage on platforms both onpremise and in the Cloud. The winners and future are Powerwall, HCL, JavaScript/HTML5 and Java. Microsoft has done a fantastic job in making PowerShell a great shell, a scripting language and .Net system wrapper language on Windows, MAC, Linux and in Azure. In fact, without PowerShell (and Exchange) Microsoft wouldn't be the second greatest Cloud provider in the world. Because of PowerShell and Microsoft smart move of making PowerShell opensource, learning and attracting the Linux developer community for 2-3 years, introducing Windows Systems for Linux (WSL) on Windows 10 ( and now 2019), introducing the latest Windows Terminal that will blow your mind and now launching PowerShell 7 which is breathtaking, it is unbeatable in the cloud devops environments and automation i general, especially in cloud migrations. The future is CLI and shell tools that are platform independent. The reason of why Powershell it’s not on the list is because of developers has no use of infrastructure automation, operators aren't part of the survey and web developers has mostly been Linux fanatics. The developers won’t have no choice now in DevOps teams since PowerShell works on all images in cloud, operators are now working aside with shell and scripting and Microsoft has Azure. Powershell 7 is what Perl wanted to be but will never had the chance since PHP and Python stopped its growth.
I am also impressed by HashiCorp language which this has created a cloud standardizing using HCL in products Cloud like Terraform/Vault.
Most important languages
1. SQL
2. Javascript / HTML
3. Java
Best Shell on all OS platforms
1. PowerShell
2. Bash (not on Wndows)
Best Web language
1. JavaScript
2. Python (is dependent on JavaScript)
3. PHP (is dependent on JavaScript)
Best system language
1. Java
2. C
3. C++
Best Cloud language
1. HCL
2. YAML
3. JSON (= JavaScript object)
Best scientific language
1. ADA
2. Matlab
3. Python