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

16 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: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. 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.
  5. Perl by hattable · · Score: 4, Insightful

    How I miss thee.

    --
    OMG facts!
  6. 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
  7. 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.

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

  10. 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
  11. 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.
  12. 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
  13. 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
  14. #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.