Python 'Dominates' IEEE Spectrum's 2020 List of Top Programming Languages (ieee.org) 155
IEEE Spectrum's August issue will include an article titled "The Top Programming Languages."
Calculated using metrics from 11 online sources, it concludes that "One thing remains constant: the dominance of Python." Our default ranking is weighted toward the interests of an IEEE member, and looking at the top entries, we see that Python has held onto its comfortable lead, with Java and C once again coming in second and third place, respectively. Arduino has seen a big jump, rising from 11th place to seventh. (Purists may argue that Arduino is not a language but rather a hardware platform that is programmed using a derivative of Wiring, which itself is derived from C/C++. But we have always taken a very pragmatic approach to our definition of "programming language," and the reality is that when people are looking to use an Arduino-compatible microcontroller, they typically search for "Arduino code" or buy books about "Arduino programming," not "Wiring code" or "C programming.")
One interpretation of Python's high ranking is that its metrics are inflated by its increasing use as a teaching language: Students are simply asking and searching for the answers to the same elementary questions over and over. There's an historical parallel here. In the 1980s, BASIC was very visible... But few professional programmers used it, and when the home computer bubble burst, so did BASIC's, although some advanced descendants like Microsoft Visual Basic are still relatively popular professionally.
There are two counterarguments, though: The first is that students are people, too! If we pay attention only to what professional and expert coders do, we're at risk of missing an important part of the picture. The second is that, unlike BASIC, Python is frequently used professionally and in high-profile realms, such as machine learning, thanks to its enormous collection of high quality, specialized libraries.
C++ came in fourth, followed by JavaScript, R, "Arduino," Go, Swift, and Matlab.
But because different programmers have different needs, they've also created a special interactive version of their rankings online, "allowing you to weight the metrics as you see fit... "
Calculated using metrics from 11 online sources, it concludes that "One thing remains constant: the dominance of Python." Our default ranking is weighted toward the interests of an IEEE member, and looking at the top entries, we see that Python has held onto its comfortable lead, with Java and C once again coming in second and third place, respectively. Arduino has seen a big jump, rising from 11th place to seventh. (Purists may argue that Arduino is not a language but rather a hardware platform that is programmed using a derivative of Wiring, which itself is derived from C/C++. But we have always taken a very pragmatic approach to our definition of "programming language," and the reality is that when people are looking to use an Arduino-compatible microcontroller, they typically search for "Arduino code" or buy books about "Arduino programming," not "Wiring code" or "C programming.")
One interpretation of Python's high ranking is that its metrics are inflated by its increasing use as a teaching language: Students are simply asking and searching for the answers to the same elementary questions over and over. There's an historical parallel here. In the 1980s, BASIC was very visible... But few professional programmers used it, and when the home computer bubble burst, so did BASIC's, although some advanced descendants like Microsoft Visual Basic are still relatively popular professionally.
There are two counterarguments, though: The first is that students are people, too! If we pay attention only to what professional and expert coders do, we're at risk of missing an important part of the picture. The second is that, unlike BASIC, Python is frequently used professionally and in high-profile realms, such as machine learning, thanks to its enormous collection of high quality, specialized libraries.
C++ came in fourth, followed by JavaScript, R, "Arduino," Go, Swift, and Matlab.
But because different programmers have different needs, they've also created a special interactive version of their rankings online, "allowing you to weight the metrics as you see fit... "
Engineers love python? (Score:2)
Knock me over with a feather! Glad I was sitting down when I read that...
Re:Engineers love python? (Score:5, Interesting)
That engineers love python is definatly not new. I started using it in the 1990s due to its phenomenally straight forward RS232 library which was immensely useful for my day job of reverse engineering RS232 hardware to write software to control it. Before that the default was QBasic which was an *awful* language, but had a weirdly excellent Serial implementation (OPEN "com1:",8,N,1,9600 or something like that, its been a while). And I fell *immediately* in love with the language having more or less learned it in an afternoon.
The problem for me was it took almost a decade before I actually started seeing jobs advertising for it, and its only in the last 5 years I've started seeing it regularly advertised.
Which makes it a bit surreal seeing all the Javascript and Ruby hipsters suddenly singing high praise of it and behaving as if its a brand new languange. No kids, Python is one of the oldest languages still in common use, older than Java, Ruby, Javascript, any number of functional languages, Swift, Kotlin, etc etc etc. Its *almost* as old as C++.
Still, I'm not complaining. I still rather enjoy Python even if the novelty has long since passed. the 3.x range has considerably modernised it. I just hope the new converts don't bring their bad habits across and infect the package ecosystem with the sort of half arsed badly written and promptly abandoned hellscape that blighted JS and to a lesser extent Ruby. Pythons advantage was a big ecosytem that developed slowly and carefully over a couple of decades. Our APIs are conservative and planned, our contracts rarely change. Lets hope the new kids learn a few things from us.
Re:Engineers love python? (Score:5, Informative)
any number of functional languages
The functional languages in widespread use, namely Haskell, ML, Erlang and such, are as old or older than Python.
Re: (Score:2)
Erlang, well maybe. But Haskell? ML? Widespread use? I think even LISP is more widespread, and certainly Scheme.
Re: (Score:2)
Re: (Score:2)
I'm not sure what else you'd call a language whose primary encoding is functions and primary datatype is functions.
Re: (Score:2)
Haskell is all over the place on the backend, LISP, not so much. Scheme is often available as a plugin language in places where nobody is expected to actually write plugins. That seems to be the main use case.
Re: (Score:2)
I think you have a different meaning of widespread.
Still today functional programmings languages are mostly relegated to academic and research based use.
You can often apply functional types of methodologies to your procedural/OO based languages much easier than applying Procedural and OO based mythologies in a functional language.
Don't get me wrong, I like the idea of functional languages, and my coding style is heavily influenced on them. But if I am going to write code, which I don't want to be the only
In an afternoon? (Score:2)
" And I fell *immediately* in love with the language having more or less learned it in an afternoon."
Sorry, but you can't learn a language as large as Python in an afternoon. Sure, you may have learned enough to do what you needed to do but I suspect that was it.
Re: (Score:2)
Re: (Score:2)
Of course mastery took longer, but the core of the Python 1.x language can absolutely be learned in an afternoon. The tutorial on the website took about 4 hours to finish and it more or less covered the entire language. Yes some parts took a bit longer to work out, mostly the introspection system, but the rest really was a fairly simple language.
Re: (Score:2)
Sorry, but you can't learn a language as large as Python in an afternoon. Sure, you may have learned enough to do what you needed to do but I suspect that was it.
Your comment is only true for awful programmers who memorize language features and confuse them with algorithms or design patterns.
Like the idiots who think that to know C means memorizing the spec.
Re: (Score:2)
Back in the olden days before Google. Your compiler/interpreter would come with a book with all the commands and what they do. Newer pre-google languages may had the book in a digital searchable form, Borland IDEs for example. They usually had every command, it parameters and often an example code of it being used.
No one ever needed to memorize the spec, those who did, were not necessarily good programmers either. As the language is the tool, but the programmer is the craftsman. It is if you go to a woo
Re: (Score:2)
Well every language that I know and that I may have been programming in for over 20 years, I really only have learned enough to do what I needed to do. When I need to do something different then I will look up something new.
A C++ Program written by an electrical engineer, to be interfacing with some electronics will be just as hard to debug for a C++ Programmer who has been writing 3d Simulations. As it would be for a skilled programmer to learn a new language all together.
Valuables, Loops, Conditionals, I
Re: (Score:2)
As an EE who has actually done both I can assure you that debugging one was not any more difficult than debugging the other. And I find that new languages are pretty easy to pick up and start using productively.
Re: (Score:3, Insightful)
"Our APIs are conservative and planned, our contracts rarely change."
Who is this "our" you refer to? Are you taking credit for Python personally? If so, when will "our" performance improve? When can we expect multi-threaded performance to not be an embarrassment? When can we expect two threads within a Python application to actually run concurrently? Is it "our" plan that threads be a mechanism to destroy determinism and not be a mechanism to improve performance?
I guess, considering "our" idea of progr
Re: (Score:2)
Because Python2 was good enough in most ways that there was no reason to change. Good stable code is a treasure, and expensive to convert to something else. Python2 had as it's main weakness a lack of ability to deal with Unicode. Python3 pretty much solved that. But if your text was in, say, English, the conversion didn't make much sense. There are a few other edge cases were Python3 is better, and a few where Python2 is better, but they aren't large.
Personally, I like Python3's Unicode handling, so I
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
The real problem was people being too stubborn to bother to upgrade. It wasn't that hard to upgrade most python programs. Just as long you weren't too friendly with the likes of PIP. (which I avoid third party libraries as much as I can. I don't say I never use them, eg I use PyPyODBC and elxwrtitter. But I try to limit my use)
But more often than not, it is just because some stubborn guy doesn't want to bother to even test his code on Python 3 and fix the print statments.
Re: (Score:2)
(Source: google)
Since we're now in 2020, I'd say that qualifies as "rarely change
I think that is a very poor argument when the change still hasn't succeeded, the change has been in progress for over a decade. That means, even when there are few specific changes, you're still stuck in the state of constant change, eternally in the middle of a switchover.
Re: (Score:2)
Well, planned maybe, but one of python's big weaknesses is that so much changes between versions. It is great for projects with short shelf lifes or that can be frozen in time, but with long running projects that want to update libraries python can be a nightmare.
Re: (Score:3, Insightful)
Re: (Score:2)
Google "pylint".
Re:Engineers love python? (Score:4, Insightful)
Re: (Score:3)
Re: (Score:2)
is demonstrably wrong
When something is usually true, but stated without caveat, it doesn't automatically mean it is wrong. It might have merely been presented in a brief form.
In that case, presenting a demonstration of a case where it isn't true is called the exception that "proves the rule."
Don't leave meaning entirely out of your word analysis. ;)
Re: (Score:2)
Re: (Score:2, Troll)
Nevermind python, WTF is "Arduino" at #7? Never heard of computer language called "Arduino", is it hotter than Amber Heard shagged from her both ends by Musk and Depp?
Re: (Score:2, Informative)
Re: (Score:2)
OK, now, before you go to sleep this dumb, please read that fucking link you spammed to find out what "arduino" is, and if it is a programming language. (spoiler: it isn't)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
It helps to read the article before feigning ignorance.
Re: (Score:3)
The fact that they are willing to consider Arduino a language instead of lumping it with C++ shows that their rankings are bullshit. Do they also count "Minecraft code" as separate from Java? It's clickbait bullshit.
Re: (Score:2)
Knock me over with a feather! Glad I was sitting down when I read that...
This engineer doesn't like Python.. I detest it's lack of type checking during compile, it's use of white space as a syntactical element, they way object oriented programming hides nothing (no private variables) from your users and even how comments work and look. There was a reason C and following (C++, Java, C##, etc) used curly braces and semi-colons and supported private class variables.
Where It's better than most of the shell scripting languages, the thing that really bothers me is the use of indenta
Fad diet, yay sports team (Score:4, Insightful)
Might as well be ranking tribes on categories like "coolest" and "best dressed" and other vapid nonsense.
Not news. Definitely not nerdy. Just stop.
Re: Fad diet, yay sports team (Score:3)
It's useful to track these things using multiple data sources and over time. You can spot important trends that way. For example, it would have been easy to see the fall of Ruby from such metrics.
Re: (Score:2)
Like i said in another post: WHERE IS C#? Where is the .NET stuff?
Always missing. I know most folks around here hate Microsoft, but, not including MS stuff in "top lists" isn't going to make it go away.
Re: (Score:3)
Like i said in another post: WHERE IS C#? Where is the .NET stuff?
Always missing. I know most folks around here hate Microsoft, but, not including MS stuff in "top lists" isn't going to make it go away.
If you click through to the full list of all 55 languages (as discussed in the article), you will find C# sitting comfortably on position 23, between "Processing" and "SAS". Still two places above Fortran.
Re: (Score:2)
imagine getting this bitter and upset over a ranking of languages. (by the way, i can think of few metrics MORE informative or important. hope that upsets you even more)
yeah nah (Score:5, Interesting)
No, I don't know where these people get those results, but no.
In all "TOP #1 BESTEST LANGUAGES" lists, Microsoft stuff is always missing. C# is never mentioned in any of these lists.
And yet, .NET Core is growing faster than anything else now. I don't know anyone who uses Rust but for some reason, Rust seems to squeeze its way into most "best language top 10s".
I honestly don't understand it. C# is used A LOT. Deal with it.
Re:yeah nah (Score:5, Informative)
The IEEE survey is aimed at electrical engineers, and it's not surprising electrical engineers are not interested in C#.
Re: (Score:2)
It's not just that. I suspect their data is badly skewed. For instance, if you customize their list to only include "active github repositories", Dart somehow winds up as the #2 programming language. Julia is #3, and Arduino is #4.
Even accounting for whatever "active" means, there's just no way that can be accurate. There's something seriously wrong with their data. Or at least some subsets of their data - enough to seriously skew the results in some bizarre directions.
Re: (Score:2)
Dart somehow winds up as the #2 programming language.
Google has been pushing Dart (with Flutter) for a couple years now as its newest cross-platform UI toolkit.
Re: (Score:2)
The best way to measure popularity is go to a job site like indeed.com and see just how popular it is.
Re: (Score:3)
Re: (Score:2)
What? Remind me again how Autodesk's Eagle and Fusion 360 have C# integrations (hint: they don't. They have Python integration.)
All the EE people doing EE work at my workplace (Fortune 50) use Matlab and Python. The local university (Big 10 land grant school, 60,000 students) does not use C# in their EE curriculum at all.
Re: (Score:2)
Re: (Score:2)
It would be interesting to see surveys by domain or platform usage percentages. Different languages tend to be used for different things. C# is common for corporate CRUD, but not for mobile devices, for example. Java is used for both, so generally gets a higher score. Here's a rough draft of suggested usage categories I'd like to see in language surveys:
Target Users:
- Business internal or custom
- Business packaged or subscription
- Consumers
- Other
Target end-user device:
- Mobile app (download)
- Web, mostly m
Re: (Score:2)
Re: (Score:3)
Or perhaps c# wasn't event option/category in whatever means the I3E used to gather their data?
It was, it's number 15.
Re: (Score:2)
"Microsoft stuff" will ALWAYS be missing in popularity list top 3 and also top 3 leading employment.
Java, SQL, C++
Deal with it.
which Pyhon? (Score:4, Insightful)
Python is a set of incompatible versions spanning 30 years. While some versions are officially obsolete, they continue to be widely used and are de facto still active. Why? Because some developers resist refactoring or rewriting otherwise working code in order to track the latest and greatest tools.
Re: (Score:2)
Thinking about refactoring Python code, I would also be pretty reluctant to do that even if I needed. Being dynamically typed makes it very easy to break stuff. Compare it to let say swift (or Java, or C#) with its strict type system, Optionals, switch statement exhaustiveness checks etc - it makes me really confident messing around with the code, because I know that compiler would not let screw-ups to pass easily. As a result, refactoring swift code for me is a common routine and with Python that probably
Re: (Score:3)
that probably would not be the case
That's kind of funny in light of the fact that ("formalized") refactoring came out of Smalltalk where it was invented to make smalltalkers really confident messing around with the code.
Do you mean ironic? (Score:2)
Yes, I would agree that it is ironic that someone is casting shade on refactoring on a dynamically typed language when pioneering refactoring tools were developed for this type of language.
But there is too much use of "funny", "laughable", and the egregious lol on the Interwebs. I am also bothered by "sad" for something that used to be described as unfortunate.
Maybe the English language has drifted semantically and I am old and not keeping up, much as I don't see the appeal of Python.
On the other ha
Re:which Pyhon? (Score:5, Insightful)
Its not just the dynamic typing thats the problem - the idiotic whitespace denotes blocks syntax means its not difficult to accidentally delete a tab/spaces from the last line in a block but the interpreter still happily runs it. Doing that in a bracketed language would require deliberately moving the line to the other side of the delimiter bracket which is far less likely to happen accidentaly.
Re: (Score:2)
Makes much cleaner code though and it's easy to see indentation/blocks. How many times have you seen people indenting a block without brackets in a language that uses optional brackets causing only the first line to be in the block? Personally I've never accidentally deleted spaces from a line.
Plus having any sort of IDE makes most of the issues moot
Re: (Score:2)
That's what unit tests are for. If you don't have them, the code was bound to break the next time some idiot gets their hands on it. And that idiot is often the future you.
Re: (Score:2)
If I'm working with a language that needs extra unit tests to catch stuff that a reasonable language wouldn't even suffer from in the first place, then I'm using the wrong language. (I realize that once a person is familiar and comfortable with a language, they can't imagine it not being great. But we have to get past fandom and learn to pick languages for their actual productivity. And writing extra unit tests isn't my idea of being productive.)
Re: (Score:2)
If I'm working with a language that needs extra unit tests to catch stuff that a reasonable language wouldn't even suffer from in the first place, then I'm using the wrong language.
I think the idea was that unless you're into formal verification, unit tests are simultaneously necessary for correctness *and* sufficient for the type of checks that you claim to be missing. Which means that if you have to use them to ensure correctness anyway (because you won't catch program logic errors otherwise), the difference between the languages with these features and languages without them get erased.
Re: (Score:2)
You can use static typing in Python 3 actually. Here's a guide [medium.com].
Re: (Score:2)
2. They must be exhaustive (a few tests here or there wont help much)
Not necessarily. Sometimes you can get a lot of mileage out of a very few tests. If you test composite functionality that involves many modules, you can get reasonable coverage from a small number of high-level tests. Strictly speaking that's not unit testing, even if you do use a unit testing framework for it, but it works, so who cares what it's called.
Even if you have lots of tests and they are well maintained and correct, it still pretty much guaranteed that not all edge cases would be covered
Edge case errors are rarely type errors. The way to catch edge case errors is by having unit tests, regardless of language. And of course, by writing
Re: (Score:2)
And the "latest and greatest tools" can't be bothered to maintain compatibility, unlike other, more serious, programming tools. The problem is not "some developers", just like the continued use of Cobol isn't because of "some developers".
Re: (Score:3)
Oh thats FUD nonsense. Theres a notable incompatibility break between the 2.x and 3.x series which mostly involves sticking brackets around print statements and tracking a few changes to the standard library. This is largely a historical problem however as almost all the major libraries and frameworks have moved to 3.x and new projects started on 2.7 are rare indeed.
Other than that Python has actually been remarkably satable in terms of language and API stability. I certainly can't think of any other langua
Re: (Score:2)
If we had the ability to know exactly how much Python 2 code is still running out there in terms of unique LoC, I think we'd see it's actually orders of magnitude more than Python 3. It's only recently that enough underlying libraries supported Python 3 and I could start coding in it. I still have tons of Python 2 scripts written anywhere between a decade ago and last year that I have not had time to update.
Re: (Score:2)
No native array type? (Score:2)
My gripe with Python, especially from the standpoint of numerical software important to engineering, is the lack of a primitive array type. It appears that the fundamental data structure in Python is a "dictionary", which I guess is implemented as a hash list?
Matlab has a primitive array type. Java has such a thing. Yes, even the Julia programming language has it. Yeah, yeah, and I guess yeah, Python has NumPy, which is grafted on to the language as an external library? Last time I looked into Pytho
Re: (Score:2)
But yeah, it is a general purpose language. If you want to do something more specialized with numbers you bring in something like numpy, kinda like how in C/C++ you would bring in a bignum library.
There is no third planet; Python has an array type (Score:3)
"Don't you think I know that. There was, but not anymore!"
Yes, Python has always had an array type, but it is not a primitive array type benefiting from the widely used machine architecture where incrementing an address register steps through elements of the data structure. Even Matlab has such a thing, especially Matlab because it was originally meant as a higher-level language than FORTRAN for engineers to access numerical routines.
One can get all computer sciency-y and say that it is a parochial c
Re: (Score:2)
Re: (Score:2)
*Scripting* languages. To be precise. (Score:5, Interesting)
Let's be honest, it is a scripting language.
Dynamic typing, simple, interpreted / JITed / VMed, high-level ... It is made for scripting.
Don't get me wrong. It is a nice little language. I prefer it for scripting and small things. :)
But I'd still not put it in one box with C++, Haskell, Pascal, or even Java.
It goes in the VIP lounge in the box with JS, PHP, BASIC, etc.
Re: (Score:2)
Let's be honest, it is a scripting language.
Yes. A shit one.
Re: (Score:2)
And which languages would you rather be scripting in?
Ruby, Perl, Raku, Tcl?
Re: (Score:2)
Perl is better for a lot of things, especially if you don't need objects. Ruby obviously is better if you need objects.
Perl particularly stands head and shoulders above Python as not being "version of the week". I have four versions of Python installed here; I have no idea which ones are important to my system, they just get dragged . There'll be another version along soon enough. I can not be arsed with tracking the differences between 3.2, 3.4, 3.6, 3.7, 3.8 and bloody 3.9. It's the new PHP.
Example: 3.5 d
Re: (Score:2)
Perl particularly stands head and shoulders above Python as not being "version of the week".
That's only because the Perl developers drove off into the weeds 20 years ago and never found their way out, leaving behind their last mainstream version as a mostly static artifact.
Re: (Score:3)
Whether it's interpreted is irrelevant to the question of whether it's a programming language. If it's a scripting language, and it has control of the flow of execution, it's a programming language too.
Re: (Score:3)
These distinctions are n00b distinctions.
If it isn't statically typed and doesn't make a native code exe, it is not a "real" language - is a n00b opinion.
This is a language that currently dominates the latest and greatest AI research.
You can write "scripts" in Haskell etc. You can write serious code in Python that is all but impractical in Pascal.
Python is simple, by default. But it can be a complex, highly configurable language with its metaclasses. It is closer to Lisp. You can JIT it like Java.
It's an ec
Re: (Score:2)
You're absolutely correct about the parent comment being a "noob opinion".
Re: (Score:2)
Re: (Score:2)
This is an IEEE study, no one gives a shit about Java, Pascal or anything else you strange programmers want to do with programming languages.
It helps to not be ignorant about the article you're reading.
Screwdriver is better than a hammer (Score:5, Insightful)
Re:Screwdriver is better than a hammer (Score:5, Funny)
Re: (Score:3)
But it's easier to pound a screw with a hammer than to screw a nail with a screwdriver.
Re:Screwdriver is better than a hammer (Score:5, Funny)
Re: (Score:3)
You screw-heads are screwed, finally admit it and face the facts!
#ItsHammerTime
Re: (Score:2)
Don't force it. Use a bigger hammer!
Re: (Score:2)
Re: (Score:2)
also, the people doing the survey, and likely the survey subjects, are likely the very people who view the screwdriver and hammer in exactly these terms.
Re: (Score:2)
...only true since "too legit to quit", MC Hammer... quit. Before then, Hammer was far more popular than screwdriver. And Jimmy Nail.
C libraries (Score:3)
Honestly my users hate compilers and can barely stand the command line. The "code" they are using is still written in C, but their interface to it is thru a Python API, like a huge % of useful Python modules
Re: (Score:2)
All that code is still single threaded because the environment that ultimately executes it is terrible.
Re: (Score:2)
It would be awesome to get rid of the GIL, but for now you can SWIG a multithreaded C library if you really need it. Or call out to a separate program to do the heavy lifting.
pragmatic approach to our definition (Score:4, Insightful)
Sorry, but it's not a "pragmatic approach" to categorize a programming language by what ignorant people search for. C code is still C code even when non-programmers don't realize it. Even worse, they know they are wrong so they instead cast people who would call them out as "purists". It is not "purist" to insist that results not be deliberately cooked by manipulating definitions and then lying about it.
Arduino is not a language, not to purists and not to anyone else.
Then, of course, there's the two "counterarguments". Counterarguments to what? Students are people too!?!? This is a counterargument to what exactly?
IEEE Spectrum == The Verge
Diabolical Plan to make Forth most popular (Score:2)
Python is just more flexible (Score:2)
Which GUI library? (Score:2)
Which GUI library would you use?
Wh... what? (Score:2)
I have to wonder just how they're measuring this, that matlab and arduino are showing as more common than, say, Javascript, or Cobol