Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Python Programming Stats

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... "
This discussion has been archived. No new comments can be posted.

Python 'Dominates' IEEE Spectrum's 2020 List of Top Programming Languages

Comments Filter:
  • Knock me over with a feather! Glad I was sitting down when I read that...

    • by sg_oneill ( 159032 ) on Monday July 27, 2020 @12:06AM (#60334973)

      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.

      • by K. S. Kyosuke ( 729550 ) on Monday July 27, 2020 @03:11AM (#60335219)

        any number of functional languages

        The functional languages in widespread use, namely Haskell, ML, Erlang and such, are as old or older than Python.

        • by HiThere ( 15173 )

          Erlang, well maybe. But Haskell? ML? Widespread use? I think even LISP is more widespread, and certainly Scheme.

          • Apparently ML and Haskell are quite popular at financial institutions nowadays. You could probably find Scheme in some Cisco gear, but I'm not sure how many of their products actually contain it. And if by "LISP" you mean Common Lisp, that's not really a functional language, hence me not having mentioned it.
            • And if by "LISP" you mean Common Lisp, that's not really a functional language

              I'm not sure what else you'd call a language whose primary encoding is functions and primary datatype is functions.

          • 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.

        • 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

      • " 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.

        • That's probably partly because it used to be smaller back then.
        • 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.

        • 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.

          • 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

        • 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

          • 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.

            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)

        by dfghjk ( 711126 )

        "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

      • by jythie ( 914043 )
        Conservative and planned?

        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)

      by peppepz ( 1311345 )
      I so much love languages in which every typo becomes an error that goes undetected until it crashes the program at runtime.
      • Google "pylint".

        • by peppepz ( 1311345 ) on Monday July 27, 2020 @02:46AM (#60335185)
          And an IDE certainly helps too. But we're talking about the language here, the tools required to fix its defects are out of band wrt this discussion.
          • Even then the statement "every typo becomes an error that goes undetected until it crashes the program at runtime" is demonstrably wrong. Many typos that affect the syntactic structure of the program will be detected during parsing.
            • 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, 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?

    • 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

  • by yassa2020 ( 6703044 ) on Sunday July 26, 2020 @11:14PM (#60334869)
    All of these "top languages" lists are incredibly dumb and pointless. The methodology is always dubious and even if it wasn't there is nothing useful to gain from making such a list/ranking.
    Might as well be ranking tribes on categories like "coolest" and "best dressed" and other vapid nonsense.
    Not news. Definitely not nerdy. Just stop.
    • 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.

    • by hjf ( 703092 )

      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.

      • 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.

    • by pezpunk ( 205653 )

      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)

    by hjf ( 703092 ) on Sunday July 26, 2020 @11:23PM (#60334889) Homepage

    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)

      by phantomfive ( 622387 ) on Sunday July 26, 2020 @11:59PM (#60334961) Journal
      Tiobe puts C# at number 5 [tiobe.com]. It seems to have a third the popularity of Java. There, you can stop complaining now.

      The IEEE survey is aimed at electrical engineers, and it's not surprising electrical engineers are not interested in C#.
      • 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.

        • 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.

        • by cowdung ( 702933 )

          The best way to measure popularity is go to a job site like indeed.com and see just how popular it is.

      • They probably checked Python because it was the only word they recognized, bless their hearts.
      • by Tablizer ( 95088 )

        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

    • "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)

    by OrangeTide ( 124937 ) on Sunday July 26, 2020 @11:35PM (#60334911) Homepage Journal

    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.

    • by augo ( 6575028 )

      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

      • 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.

        • 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)

        by Viol8 ( 599362 ) on Monday July 27, 2020 @03:44AM (#60335267) Homepage

        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.

        • by Ksevio ( 865461 )

          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

      • by djinn6 ( 1868030 )

        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.

        • 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.)

          • 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.

    • by dfghjk ( 711126 )

      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".

    • 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

      • by djinn6 ( 1868030 )

        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.

      • by jythie ( 914043 )
        I would not really call if 'FUD', but instead YMMV. The project I work on started with Python 2.3 and has been updated all the way to 3.8. To this day we still run into bugs caused by the 2.3->2.6 update, and the 3.8 one has been a continuous nightmare due string being broken up into 'string' and 'bytes', with the unpredictable mess of various APIs now consuming or returning one or the other.
    • 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

      • by jythie ( 914043 )
        Ahm.. kinda sounds like you did not work with Python enough to find its array type.

        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.
        • "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

      • Technically any language with a decent FFI allows creation of primitive arrays using foreign arrays. Of course it depends on the FFI implementation how fast this approach is. In some cases, notably LuaJIT, it's very fast.
      • By "work" did you mean that you once typed up a "Hello World" app? Python has both a primitive array type, with more powerful features that virtually any other languages array type, and a separate concept called a "tuple" which is like an ordered set, but which can also function as a very primitive array type in some use cases.
  • by BAReFO0t ( 6240524 ) on Sunday July 26, 2020 @11:43PM (#60334927)

    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. :)

    • by nagora ( 177841 )

      Let's be honest, it is a scripting language.

      Yes. A shit one.

      • by jma05 ( 897351 )

        And which languages would you rather be scripting in?
        Ruby, Perl, Raku, Tcl?

        • by nagora ( 177841 )

          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

          • 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.

    • 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.

    • by jma05 ( 897351 )

      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

      • by leptons ( 891340 )
        I've created statically typed desktop ".exe" applications in Javascript (JScript.NET to be exact), as well as .DLLs. Javascript does blur the lines of "scripting language" sometimes.

        You're absolutely correct about the parent comment being a "noob opinion".
    • by jythie ( 914043 )
      HEh. While I am sitting on a multi-million line python application suite that was switched off Java because it handled thing better. Python is interpreted, but so is Java.
    • 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.

  • by battingly ( 5065477 ) on Monday July 27, 2020 @12:30AM (#60335007)
    Screwdriver is more popular than hammer. Discuss why this makes a screwdriver better than a hammer.
  • by Dr. Tom ( 23206 ) <tomh@nih.gov> on Monday July 27, 2020 @01:42AM (#60335083) Homepage
    I'm not sure about GPL inheritance and whatnot, but does it count if I've wrapped all my old C libraries in Python?
    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
    • by dfghjk ( 711126 )

      All that code is still single threaded because the environment that ultimately executes it is terrible.

      • by djinn6 ( 1868030 )

        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.

  • by dfghjk ( 711126 ) on Monday July 27, 2020 @05:49AM (#60335431)

    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

  • I'm going to fork Forth [wikipedia.org], rename it Corona and win the internet. Never had a change to seriously program in Forth, but always wanted to until spare stack pointer got dropped from the architectures. I may also fork BarinFuck and rename it Covid-19 and win twitter too.
  • I can be up and running with a fully reactive GUI-based application with Python in a couple days. C++ would take roughly twice as long, as would any change I want to make to it. Sure it's not 'really' multiprocessing but it can send several long-running web requests at a time just fine.
  • I have to wonder just how they're measuring this, that matlab and arduino are showing as more common than, say, Javascript, or Cobol

Keep up the good work! But please don't ask me to help.

Working...