Slashdot Mirror


IEEE Spectrum Declares Python The #1 Programming Language (ieee.org)

An anonymous reader quotes IEEE Spectrum's annual report on the top programming languages: As with all attempts to rank the usage of different languages, we have to rely on various proxies for popularity. In our case, this means having data journalist Nick Diakopoulos mine and combine 12 metrics from 10 carefully chosen online sources to rank 48 languages. But where we really differ from other rankings is that our interactive allows you choose how those metrics are weighted when they are combined, letting you personalize the rankings to your needs. We have a few preset weightings -- a default setting that's designed with the typical Spectrum reader in mind, as well as settings that emphasize emerging languages, what employers are looking for, and what's hot in open source...

Python has continued its upward trajectory from last year and jumped two places to the No. 1 slot, though the top four -- Python, C, Java, and C++ -- all remain very close in popularity. Indeed, in Diakopoulos's analysis of what the underlying metrics have to say about the languages currently in demand by recruiting companies, C comes out ahead of Python by a good margin... Ruby has fallen all the way down to 12th position, but in doing so it has given Apple's Swift the chance to join Google's Go in the Top Ten... Outside the Top Ten, Apple's Objective-C mirrors the ascent of Swift, dropping down to 26th place. However, for the second year in a row, no new languages have entered the rankings. We seem to have entered a period of consolidation in coding as programmers digest the tools created to cater to the explosion of cloud, mobile, and big data applications.

"Speaking of stabilized programming tools and languages," the article concludes, "it's worth noting Fortran's continued presence right in the middle of the rankings (sitting still in 28th place), along with Lisp in 35th place and Cobol hanging in at 40th."

37 of 372 comments (clear)

  1. Re:I tried Python by Herkum01 · · Score: 5, Insightful

    After using it, it is eh, not a big deal. You indent the same amount for everything in the block, which you are probably doing most of the time anyways. It is their little cheat around not having block delimiters.

    If you need to a pick a reason to not like Python, this is not it.

  2. Lingua Franca by 0100010001010011 · · Score: 4, Insightful

    Python has hit critical mass in both popularity and tools available. C, C++, Java, Perl and anything else the average /.er is going to complain about going anywhere just like FORTRAN and COLBOL haven't.

    XKCD hit the nail on the head. It's something easy enough for middle schoolers to grock and powerful enough to use with TensorFlow. It's our office's go-to language for "I need this task done". It's basically BASIC where you can import math (numpy), plotting (matplotlib), neuralnetwork (TensorFlow) and other packages.

    Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.".

    You can knock out something in 30 minutes in Python that would take longer in anything else and the performance difference isn't worth doing it in something else.

    1. Re: Lingua Franca by corychristison · · Score: 4, Insightful

      You can knock out something in 30 minutes in Python that would take longer in anything else and the performance difference isn't worth doing it in something else.

      In reality this could be said of most scripting languages, including PHP, JavaScript, Bash, etc.

    2. Re: Lingua Franca by 0100010001010011 · · Score: 3, Interesting

      And until I hopped over to Python I did use PHP as that when I wanted something a bit better than Bash.

      But PHP, JavaScript and Bash aren't as easy to install on Windows. They certainly don't have the number of packages available.

      "How to ____ in Python" will turn up results for almost anything. I would be interested in seeing a CUDA backed neural network in Bash.

    3. Re: Lingua Franca by h33t+l4x0r · · Score: 2

      I remember a few years ago when npm was a real pain in the ass on windows and the community seemed hostile to people posting windows issues. These days it's much better and I rarely have any issues.

  3. Re:Ugh. by 0100010001010011 · · Score: 3, Insightful

    * It's a scripting language.

    And Michaelangelo just had a brush.

    Lets compete to complete the average task in most offices. You do it in Assembly, I'll do it in Python and we'll see who is done first and gets the most work done in a year.

    It's a massive leg up from VBA and just Excel equations while being as easy as BASIC to learn.

  4. Re:I tried Python by Anonymous Coward · · Score: 2, Insightful

    But it causes confusion when cut and pasting. You cannot audo-indent like you can in a { } bounded language, because there is no semantic information from the syntax, only from the spacing.

  5. Relevance? by Anonymous Coward · · Score: 2

    Python is a nice language. So are C,C++,C#,Swift,PHP,Powershell,Java,JavaScript,Typescript, etc... heck I even like COBOL. But what is the relevance of rating what the most used language?

    I think programming methodology is more interesting. Is purely functional, MVVM, object oriented, structural, etc... the best.

  6. What are they? by Gravis+Zero · · Score: 3, Insightful

    combine 12 metrics from 10 carefully chosen online sources to rank 48 languages

    What metrics are they and which online sources were used? If you're going to make such an assertion then why not explain or link to the details?

    To me, it sure sounds like a list of the most problematic languages combined with the number of people who use them.

    --
    Anons need not reply. Questions end with a question mark.
  7. Re:What is the interpreter written in? by 0100010001010011 · · Score: 2

    Why use what is essentially a giant abstraction layer for another language?

    Eric Raymond’s 17 Unix Rules covers this:

    Rule of Generation
    Developers should avoid writing code by hand and instead write abstract high-level programs that generate code. This rule aims to reduce human errors and save time.

    Rule of Economy
    Developers should value developer time over machine time, because machine cycles today are relatively inexpensive compared to prices in the 1970s. This rule aims to reduce development costs of projects.

    Rule of Optimization
    Developers should prototype software before polishing it. This rule aims to prevent developers from spending too much time for marginal gains.

    Python beats C in all 3.

  8. Perl by hattable · · Score: 4, Insightful

    How I miss thee.

    --
    OMG facts!
  9. Re:What is the interpreter written in? by steveha · · Score: 4, Informative

    There are no Python to machine code compilers out there.

    Interestingly, you are incorrect. There is one: PyPy. It's Python written in Python. And it's fast!

    http://pypy.org/

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
  10. Understood by Snotnose · · Score: 3, Insightful

    Python rocks. I love it. I've written 2-3 major apps in it over the last 15 years. That said, using spaces for block definition is brain dead. Seriously. I know I'm gonna get flamed for this but, whatever.

    tldr; Python is a great language with one huge fucking hole. When tabs vs spaces change the way a program runs, something is wrong. Yeah, I know you can tell your editor to change tabs to some random spaces, but still.

    When I find code for SomethingIReallyWouldLike, and it Doesn'tFuckingWork, and I find out FuckwitUsed2CharacterTabs, then something is broken. Broken hard. Broken bad.

    1. Re: Understood by Zero__Kelvin · · Score: 2

      Yes .... The idiot who used tabs is broken. Python allows tabs, it doesn't encourage it. Competent programmers don't use tabs unless they are writing a makefile.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    2. Re: Understood by serviscope_minor · · Score: 2

      Yes .... The idiot who used tabs is broken. Python allows tabs, it doesn't encourage it. Competent programmers don't use tabs unless they are writing a makefile.

      I disagree. If one action in a language is always idiotic then it is not the idiot who is at fault, but the language. C lets you run over the end of an array which is awful, but the counterpoint is that it's faster to not do the checks so it ultimately allows a very skilled programmer to write more efficient code. There's a tradeoff .

      What's the tradeoff with Python in this case?

      The only reason to not use tabs for indenting in fact is because that's the method the python community chose. In other languages, tabs are a much better choice since one tab means semantically one level of indent. The programmer can then choose their optimum viewing conditions by selecting the tab stops they prefer. Tabs are a much better choice, but it's programs like EMACS which ruined he world this way by using the mindlessly crazy two space, 4space, 6 space, tab indent scheme. WTF.

      --
      SJW n. One who posts facts.
    3. Re: Understood by Zero__Kelvin · · Score: 2

      There is no excuse for using tabs in any language, as I said. Python supports it because Guido knew there are hordes of idiots that can't understand why. You blaming emacs for tabs being the wrong choice is absurd. Tabs have always meant "some user defined distance", and spaces have always meant distance 1. Uniformity is king, and so tabs are stupid. Period.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    4. Re: Understood by Zero__Kelvin · · Score: 2

      As I said. You are incompetent. Nobody writes code in environments where every byte counts in 2017. It's called cross compiling. You should get a basic understanding of how to develop software some day.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  11. MathWorks should be concerned by 93+Escort+Wagon · · Score: 2

    I know a few EE faculty who have moved from using Matlab to using Python. Some of the grad students think the department should take a more active role in encouraging students to do the same - or to eliminate Matlab from courses entirely.

    --
    #DeleteChrome
    1. Re:MathWorks should be concerned by 0100010001010011 · · Score: 2

      Simulink Embedded Coder. (There's a reason they won't put it on the cheap home use license).

      Mathworks is going to be fine.

  12. Re:I tried Python by BarbaraHudson · · Score: 2, Interesting
    These surveys are strictly for idiots. For example (to use one of the data sources in the article), information drawn from what recruiting companies say they are looking for are complete garbage, as anyone who has spent much time here knows. Some recruiters are just trolling for new applicants to add to their slushpile, some are adding stuff that's totally irrelevant to the underlying job so that their candidate will look more well-rounded, some are bogus posts to supply HR with practice interviews, some are just posted as a way to be able to say "we looked for expertise in x and y before we hired an H1B (who doesn't know x or y, but it's rarely investigated) ".10 years experience in Java 9 or Windows 10? 5 years experience with Red Hat linux 7.3? We've all seen these shit listings, the same as we've seen the same job suddenly pop up from a dozen different recruiters. It doesn't mean they're looking for 12 people with that experience.

    GIGO still applies.

    --
    "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
  13. Re:What does this do that Java does not? by Gojira+Shipi-Taro · · Score: 4, Insightful

    Not be owned by Oracle.

    --
    "Oh my God. This is terrible. This is the end of my Presidency. I'm fucked."; ~ Donald J. Trump
  14. Re:I tried Python by Billly+Gates · · Score: 3, Insightful

    These surveys are strictly for idiots. For example (to use one of the data sources in the article), information drawn from what recruiting companies say they are looking for are complete garbage, as anyone who has spent much time here knows. Some recruiters are just trolling for new applicants to add to their slushpile, some are adding stuff that's totally irrelevant to the underlying job so that their candidate will look more well-rounded, some are bogus posts to supply HR with practice interviews, some are just posted as a way to be able to say "we looked for expertise in x and y before we hired an H1B (who doesn't know x or y, but it's rarely investigated) ".10 years experience in Java 9 or Windows 10? 5 years experience with Red Hat linux 7.3? We've all seen these shit listings, the same as we've seen the same job suddenly pop up from a dozen different recruiters. It doesn't mean they're looking for 12 people with that experience.

    GIGO still applies.

    It still is relevant. As much as WE HATE HR they are the gatekeepers. Actually they are nto the gatekeepers. Taleo is the gatekeeper and SEO in LinkedIn and abunch of software programs are. They do the work so companies can be lazy and not have to do their job.

    If you do not have that experience you will not be interviewed. That is a fact as your score will be below X and the application will be rejected and HR won't even know you applied.

    Part of the problem isn't that they are bogus. It just that HR is incompetent and fall for the salespeople in Taleo who tell them software picks candidates for YOU, not it is there to assist you. Scenario one you need a SAP jr financial analyst assistant who can run reports?

      They ask the IT manager and finance manager. IT manager says yeah it uses SQL Server on the backend etc ... BOOM 5 years of SQL Server administration is now required. HR wants to make sure you know office ... BOOM 5 years Excel macro programming experience required. Now add a shitty HR filter app like Taleo and it generates a job description:
    -5 years SQL Server administration experience
    -3 to 5 years of Excel financial analysis programming in VBA
    - 3 to 5 years of actually doing SAP reports (part of the job that is important)
    - Mentions $15/hr because that is net worth of a college kid in accounting as it is a JR. level assistant.

    Taleo reports none are q ualified. CEO lobbies senator. They important an Indian H1B1 visa who meets these requirements as no American can do the job and whines how could this happen? etc.

    So my guess is some positions do prototyping in python. The HR software now requires 5 years of python coding and you get filtered out if you do not have it even if the position is really a java developer etc.

    Anyway done with rant :-)

  15. Re:Ugh. by phantomfive · · Score: 2

    If I can access the libraries from assembly, and am provided with a decent set of macros, I will beat you if you use Python.

    It's not the language, it's the coder.

    I am reminded that Wozniak used to hand-assemble his assembly code. And he would still have coded circles around you.

    --
    "First they came for the slanderers and i said nothing."
  16. Re:I tried Python by Luke+has+no+name · · Score: 2

    I love Python. It's this generation's perl: Ubiquitous installation on nix systems, and plenty of libraries, and even easier to learn.

    BUT whitespace significance does cause issues with reformatting code, or managing long lines (I know you can) and in general, I kind of (kind of) wish it had a scope delimiter.

  17. Re:I tried Python by Billly+Gates · · Score: 2

    What does any of that have to do with the fact that the survey is based on bullshit data because recruiters lie?

    It's not that recruiters lie Barbara. I believe what it is that Python is used heavily for prototyping and scripting even if it is not part of the main job. When they hear a term that means "+5 years experience" as a requirement. Many are very serious about a lack of qualified applicants and are not making it up for fake job postings.

    So if let's say one job requires Python then it is counted. Then another job required java but also some prototyping in python then the survey counts it twice. For sysadmins it is counted 3 times, and financial anaylsts use Python for financial reporting so it is counted again etc.

    This adds to inflation to the relative number of real python specific jobs vs someone who MAY use python like a financial guru.

  18. Re:What is the interpreter written in? by steveha · · Score: 4, Informative

    Even the Python folks tell you to write your high performance code in C or C++.

    True, but one of the smartest things Guido van Rossum did early on was to make it easy to interface C and C++ code to Python. It's why SciPy is winning so big in the sciences; it's the convenience of Python with the performance of Fortran. The libraries that do the work for SciPy are old numerical libraries that are very well optimized, very well debugged, very well understood, and very very useful. So, you can work in Fortran... or you can work in Python, enjoying the much friendlier interpreted language, and barely give up any performance vs. the pure Fortran. The hard work is done in Fortran, and the overhead of using Python to set up your calculations is trivial compared to the work of the calculations themselves.

    https://www.scipy.org/

    Python also provides a "lab notebook" environment through the Jupyter project. Nobody is going to try to use Fortran or C directly in the notebook.

    http://jupyter.org/
    https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook

    And pretty much every library you might want to use has already been glued into Python by someone. Computer vision? Running code on a GPU? Signal processing? Solving equations? Whatever you need to do, you can do it conveniently in Python and it will be fast.

    So yeah, if you write your own matrix multiply in pure Python it will be roughly 50x slower than compiled C. But nobody does that, and in the real world Python is fast enough to do real work.

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
  19. Re: Ugh. by pthisis · · Score: 2

    Scripting languages are:
    1. Interpreted

    "Interpreted" is not a language feature, it's an implementation detail. There are C interpreters like EiC (and even assembly interpreters used in things like Bochs) and Python JIT compilers like PyPy.

    2. Run directly from source

    Even CPython compiles to bytecode, which is a tad more efficient that running directly from source.

    --
    rage, rage against the dying of the light
  20. Re:What is the interpreter written in? by LightningBolt! · · Score: 2

    > the interpreter (or a large amount of the support libraries) are inevitably written in C or C++.

    Whether a language bootstraps itself is super important when choosing a language for a project. /s

    "Well, gee boss. I realize you want us to build a web API for this internal data, and yeah we have this team of node developers, but JAVASCRIPT ISN'T SELF-BOOTSTRAPPING!!!! We must do it in C."

    > essentially a giant abstraction layer for another language?

    All computer languages are giant abstraction layers for machine language. Even your beloved C.

    --
    Old people fall. Young people spring. Rich people summer and winter.
  21. Re:What does this do that Java does not? by angel'o'sphere · · Score: 2

    What does Python do for you that Java does not do better?
    Obviously all the things Java does not have:
    o dynamic typing
    o modules/functions
    o string template expansion with dictionaries

    Should I go on?

    statically-typed bondage-and-discipline language like Pascal? No, Java has Reflection
    What is that supposed to mean? Reflection has nothing to do with static typed or not ....

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  22. Re:I tried Python by jimtheowl · · Score: 2

    What kindergarten kids find intuitive is irrelevant.

    Even for educated adults, intuition is does not necessarily correspond to anything useful.

    A body in motion at a constant velocity will remain in motion in a straight line unless acted upon by an outside force is not intuitive to most people. Yet it is an undeniable fact and man would not have gone to the moon ignoring it.

  23. Re:What does this do that Java does not? by serviscope_minor · · Score: 3, Insightful

    He is talking about junk languages like C++, which can only handle crude reference counting.

    Nope. There have been "proper" GC solutions for C++ for ages, like the Bohem collector which do work. You can also write GC in C++: I watch a talk (Herb Sutter?) on writing a GC smart pointer type. So if you really really need GC, you can have it.

    OTHO it's rarely necessary because C++ produces very little garbage. About the only situation poorly handled by smart pointers is mutable general graphs. I've never actually had cause to use one of those.

    --
    SJW n. One who posts facts.
  24. Never! by aglider · · Score: 2

    My religion asks me to use C.

    When I'll reach the enlightenment, then I'll move to assembler.

    --
    Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
  25. Re:I tried Python by TheRaven64 · · Score: 5, Informative

    Semantic whitespace isn't a terrible idea, but like almost everything in Python it's let down by the implementation. Tabs are a variable-width character, spaces are not. Mixing the two in an environment that treats the amount of whitespace as having semantic importance is a recipe for disaster. Python treats a tab as a fixed number of spaces and so the indent that your editor displays is not necessarily the same as what the interpreter picks (I've had to fix a bug in someone else's Python resulting from this[1]). The only sane thing to do is for the interpreter to reject any inputs that mix tabs and spaces at the start of a line as invalid input. I believe that Python now has an option to do that, but it took 20 years to add and it's still an option. This pretty much sums up Python: the obviously sane thing takes 20 years to add to the language and is then optional.

    That said, it doesn't bother me nearly as much as a language claiming to support functional programming but not doing tail-call optimisation (1000 recursive calls and your program dies) or else clauses on while loops (another bug in someone else's code that I had to fix was caused by the fact that there are two plausibly sane meanings for this. Python chose the third and the developer assumed they chose one of the others).

    [1] My irrational hatred of Python is largely caused by the fact that every time I am given the release version of a Python program I end up finding a bug that I have to fix before I can use it for its intended purpose. No other language manages to be quite this reliable in allowing people to ship completely broken crap that they believe to be working.

    --
    I am TheRaven on Soylent News
  26. Re:I tried Python by TheRaven64 · · Score: 4, Informative

    There are a couple of reasons 0-based indexing makes sense. The first only really matters in low-level languages: the indexes represent the offset from the array. The address of array X and index 0 into array X are the same. The second relates to concatenating arrays. The place that you insert into the first array is the length of the array. This idiom crops up sufficiently often that zero-based indexing saves a surprising number of +1 calculations in a program - it's very common for programmers to accidentally clobber the last element in an array in languages that index from 1. Mathematics understands that cardinals and ordinals are different, but programmers often forget...

    --
    I am TheRaven on Soylent News
  27. #1 in POPULARITY by cjonslashdot · · Score: 3, Insightful

    "Popular" != "Best"

    Also, one should choose the right language for the task. The right language for a small office task is not usually the right language for a scalable microservice. E.g., Google discovered long ago that if an app written in Ruby or Python requires 100 servers to meet demand, but the same app written in C++ or Go requires only ten servers, then there is a substantial cost difference. (Although Go is quite terrible for maintainability - do a Google search for "Go gotchas".)

    Ignore popularity. Make your own choices.

  28. Re:I tried Python by LesFerg · · Score: 2

    With a good code editor you can configure display of whitespace characters. I usually have tab characters visible, tho only a slight shade lighter than the background color, even when using C#, as it shows the outline of the code blocks that way.
    Personally I don't recall having problems using tabs in my code, when copying and pasting etc, and it is a few years now since I last coded in Python, but I didn't have much of a problem with it then.

    --
    If I had a DeLorean... I would probably only drive it from time to time.
  29. Re: I tried Python by toddestan · · Score: 2

    It's basically DLL hell all over again, where some application/script needs a certain version of a library, which requires a certain version of Python, and you have another application/script that needs a newer version of Python which that library won't work with, and needs a certain version of some other library, which breaks some of application/script, and so on. If you're on Windows then you may also run into 32bit/64bit issues (like for example, if you want to use Python in Matlab, then you need 64-bit, but something else still only works with 32-bit... luckily this seems to be mostly a Windows issue). Then there's the whole Python 2.x/3.x divide, which is a gigantic clusterfuck.

    Because of this, most places seem to standardize on a certain version and set of libraries and versions. These tend to be old already, and since new code is being written against them it only makes it harder to move from them. Huge amounts of code is still being written for Python 2.x despite Python 3.x coming out in 2008 and Python 2.x's EOL coming up in a few years.

    The solution seems to be virtualenv, where you can set up multiple versions of Python, complete with different libraries, and switch between these environments easily. Which actually isn't that different from how Microsoft solved the DLL hell issue.