Slashdot Mirror


Python Displaces C++ In TIOBE Index Top 3 (infoworld.com)

InfoWorld described the move as a "breakthrough": As expected, Python has climbed into the Top 3 of the Tiobe index of language popularity, achieving that milestone for the first time ever in the September 2018 edition of the index. With a rating of 7.653 percent, Python placed third behind first-place Java, which had a rating of 17.436 percent, and second-place C, rated at 15.447. Python displaced C++, which finished third last month and took fourth place this month, with a rating of 7.394 percent...

Python also has been scoring high in two other language rankings:

- The PyPL Popularity of Programming Language index, where it ranked No. 1 this month, as it has done before, and has had the most growth in the past five years.

- The RedMonk Programming Language Rankings, where Python again placed third.

Tiobe notes that Python's arrival in the top 3 "really took a long time," since it first entered their chart at the beginning of the 1990s. But today, "It is already the first choice at universities (for all kinds of subjects for which programming is demanded) and is now also conquering the industrial world." In February Tiobe also added a new programming language to their index: SQL. (Since "SQL appears to be Turing complete.")

"Other interesting moves this month are: Rust jumps from #36 to #31, Groovy from #44 to #34 and Julia from #50 to #39."

19 of 154 comments (clear)

  1. If Java is the first... by mi · · Score: 4, Insightful

    behind first-place Java

    Whatever the list, if Java is in the first place, there is no honor in being anywhere near the top.

    --
    In Soviet Washington the swamp drains you.
    1. Re: If Java is the first... by jd · · Score: 3, Insightful

      The list is compiled from a restricted pool and lists popularity.

      That may mean a vendor throwing out ten individually packaged Python scripts counts as ten sources with one C program of equalling counts as one. If that's the case, Python would be ten times as popular in the stats whilst being equally popular in practice.

      So if Python needed ten times as many modules to be as versatile, it would seem popular whilst only being frustrating.

      The fact is, we don't know their methodology. We don't know if they're weighting results in any way to factor in workarounds and hacks due to language deficiency that might show up as extra use.

      We do know they don't factor in defect density, complexity or anything else like that as they do say that much. So are ten published attempts at a working program worth ten times one attempt in a language that makes it easy first time? We will never know.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    2. Re:If Java is the first... by Tough+Love · · Score: 2

      Tiobe is utter crap. Javascript (barf) is by far the most popular programming language today and Tiobe puts it in 8th place, behind Visual Basic.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
  2. Re: Warrior by jd · · Score: 2, Insightful

    Static typing isn't just about clarity to the programmer. In strict typing languages, the rule is to use the type that matches the range that actually applies. This is to help testing (something coders should not ignore), automated validation, compilation (a compiler can choose sensible values, optimise the code, etc etc etc) and maintainers (a clear variable name won't tell anyone if a variable's range can be extended without impacting the compiled code).

    Besides, I've looked at Python code. I'm not convinced their idea of a good variable name is in any way related to mine.

    I have no problem with Python, it's ideal for many cases, but dismissing obviously poorly understood reasons is not a valid reason for using it. Either understand the reasons and give a valid counter, or accept that different languages suit different needs.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  3. Losing backwards compatibility with point releases by raymorris · · Score: 4, Interesting

    Never mind Python 2 vs 3; one major reason I shy away from Python is the incompatibility in point releases. I'd see "requires Python 2.6â and see that I have Python 2.7 so it should be fine, right? Nope, code written for 2.6 won't run under Python 2.7. It needs to be EXACTLY 2.6.

      It's at this point that some Python fanboi gets really upset and starts screaming about how that's now problem, with Python you set up separate virtual environments for each script, so that each one can have exactly the version of Python it is written for, with exactly the version of each library. When there is some bug or security issue you then hope that there is a patch for each, and deal with all that. (As opposed to every other peice of software in the world, which you simply upgrade to the latest version to get all the latest fixes). Yes, you CAN deal with that problem, it's possible, in most cases. You shouldn't have to. Every other language does some simple things to maintain backward compatibility in point releases (and mostly in major releases too).

    Also the fact that most languages use every day and have used for decades use braces for blocks means my eyes and mind are very much trained for that. Braces aren't necessarily BETTER than just using indentation, but it's kinda like building a car which uses the pedals to steer and a hand stick for the gas. It's not necessarily inherently better or worse, but it would be almost undriveable for an experienced driver with decades of muscle memory in normal cars. Python's seemingly random choices on these things make it feel like using your feet to steer a car. There should be compelling reasons before you break long-established conventions and Python seems to prefer to break conventions just to be different. It seems the Python team is a bit like Berstein in that way. It's really annoying.

  4. Love Python by El+Cubano · · Score: 2

    Tiobe notes that Python's arrival in the top 3 "really took a long time," since it first entered their chart at the beginning of the 1990s. But today, "It is already the first choice at universities (for all kinds of subjects for which programming is demanded)

    Undergraduate was all C/C++ for me then I ended up at a graduate school where everything was Java. I disliked it so much that I decided to find an alternative and teach myself. I found Python and loved it. I still love it. You can't find anything better for both heavy duty programming and quick and dirty scripting. It's versatility makes It like the Linux of programming languages.

    1. Re:Love Python by Tough+Love · · Score: 3, Insightful

      I found Python and loved it. I still love it. You can't find anything better for both heavy duty programming...

      What? Python is hopelessly inefficient for heavy duty programming, unless you happen to be doing something that is mainly handled by a Python library, written in C. Python's interface to C disgusting, so if you have a lot of small operations handled by a C library, you will get pathetic performance.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    2. Re:Love Python by Tough+Love · · Score: 2

      It really isn't.

      It really is and you blathering about what you don't know does not change that fact. (Python 14 minutes vs C++ 8..24 seconds for N-Body simulation.)

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    3. Re:Love Python by Tough+Love · · Score: 2

      5x+ penalty just for writing the code in Python, you call it not terribly bad? So this is how Python fans think.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
  5. Re:Losing backwards compatibility with point relea by slack_justyb · · Score: 4, Informative

    Python 2.7. It needs to be EXACTLY 2.6

    Yeah, just FYI Python 2.7 is in a way its own thing. Different from the 2.x and different from the 3.x series. 2.6 is a no holds barred pure 2.x whereas 2.7 is a mixture of 2.x and 3.x features. So if you want to compare point releases, best to try that with the 3.x series. Also, if you're using something that requires the 2.x series, you shouldn't use that unless it is absolutely critical with zero replacements.

    You shouldn't have to. Every other language does some simple things to maintain backward compatibility in point releases (and mostly in major releases too).

    Again see argument about 3.x, but yeah not every language does this. Java 8/9 transition breaks things. ASP.Net to ASP.Net core breaks things along the way. I'm interested in what languages you have in mind, because I know quite a few languages that do maintain backwards compatibility (ish). For example, C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that, so it depends on what you mean by breaking. Does it count if the compiler by default breaks, but providing flags fixes it? Because if your definition means including flags break compatibility, then oooh boy are there a a shit ton of broken languages.

    Also the fact that most languages use every day and have used for decades use braces for blocks means my eyes and mind are very much trained for that

    Yeah, it's clear that you've never used a positional programming language. I guess it'll be a sign of my age, but buddy, program COBOL or RPG on punch cards and let me know about that curly brace issue you're having. Positional and indentation has been used way, way, way, longer than curly braces. That's not me knocking on the curly braces, I love my C/C++ folks out there! But I hate to tell you C and C-style is pretty recent in the timeline of all things computer.

  6. Re: python interpreter by CQDX · · Score: 2

    And a majority of scientist write terrible code.

    Python just lowered the barrier for mediocre coders.

  7. Depends on the results / message, actually by raymorris · · Score: 2, Insightful

    > C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that, so it depends on what you mean by breaking. Does it count if the compiler by default breaks, but providing flags fixes it?

    If it results in weird runtime errors, that's definitely a problem.
    If the compiler I'm using gives the message "incompatible use of fstream, try '-fstreamcompat' flag", that's no big deal.

  8. python3 for full application development. wtf? by cats-paw · · Score: 2, Interesting

    Can someone explain to me why using a dynamically typed language is a good idea for "big" applications ?

    Python is subject to all sorts of really horrendous bugs that would not happen in a compiled, type-checked language.

    For example if you are accessing an undefined variable in the else branch of an if statement, you won't know it's undefined unless that branch is taken. which means if it's something like a rarely occurring error condition it's kind of annoying. yes you can figure it out by writing enough test code, but really.

    I love Python, but i think using for multi-thousand line application seems like a bad idea.

    Is there something I'm missing here ?

    enlighten me...

    --
    Absolute statements are never true
    1. Re:python3 for full application development. wtf? by munch117 · · Score: 3, Interesting

      Using an undefined variable in Python triggers an exception, and you get a traceback. In a larger program you will normally have a system for capturing and storing such tracebacks for analysis, and with the traceback in hand, it's typically a very simple fix.

      In C++ you get an incorrect value created by default-initialisation (or maybe undefined behaviour): the program hobbles along as best it can, and you may never find the problem. You just see your program behaving strangely sometimes, and as the program gets larger, those strange behaviours accumulate.

      Python is subject to all sorts of really horrendous bugs that would not happen in a compiled, type-checked language.

      Horrendous is not the right word. Bugs that come with tracebacks are simple bugs. Zen#10: "Errors should never pass silently" is exactly what you want in large-scale programming.

  9. Re:Losing backwards compatibility with point relea by sjames · · Score: 2

    That must be an odd package. I have literally NEVER seen that with anything I have wanted to use, including my own pre-2.7.x software.

  10. Hello Machine Learning by SuperKendall · · Score: 4, Interesting

    I think what has really propelled Python into a higher rank is machine learning, where it is simply the de-facto language of choice by quite a margin.

    I have to admit I am impressed with the progress it has made; of many recent CS grads I've talked to it seemed to be the favorite language...

    I have to admit that over the years I've not really enjoyed Python much myself in the on and off again times I've used it, for me the spaces as indent levels maybe get too close to the meaningful whitespace of Fortran... I guess modern programmers do not have this hangup. :-)

    So good work Python, a well deserved ascent!

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  11. Re: python interpreter by novakyu · · Score: 2

    Egh. Worst Python code written by worst scientist is still streets ahead of the best LabVIEW program written by the best programmer-scientist.

    Yes, Python lowered the barrier—for mediocre coders to write semi-intelligible code.

  12. Re:python interpreter by angel'o'sphere · · Score: 2

    Eve Online is mostly written in Python, client and server.
    It is the MMO game with the most concurrent users online at any time of the day.

    Speed is not their problem.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  13. Re:Losing backwards compatibility with point relea by johannesg · · Score: 2

    For example, C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that

    Dude, that was in 1990, back before there even was a standard C++. And I very much doubt those flags still exist today.

    program COBOL or RPG on punch cards and let me know about that curly brace issue you're having

    You seem to have forgotten how that really worked in your old age though. Punch cards had columns with specific functions assigned to them, so yes, of course you would have to skip certain columns on occasion. That was not indentation, though. You didn't have indentation; moving your holes by one position or one column meant the machine would interpret your instruction as something else entirely.