Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming Java Python

Most Popular Programming Languages: C++ Knocks Python Out of Top Three in New Study (techrepublic.com) 161

C++ has knocked machine-learning favorite Python out of the top 3 in the TIOBE Index of popular programming languages. From a report: It marks a reversal of fortune for C++, which, after years of occupying third place in the index, was pushed down to fourth place by Python in September last year. First and second place in the list remain unchanged, with Java in pole position and C at number two. The TIOBE Index attempts to estimate the popularity of languages worldwide based on results from major search engines. The index is sometimes criticized for being a rather blunt measure, likely to be influenced by a range of factors beyond a language's popularity, but its rankings are broadly in line with others, with a similar mix of languages albeit arranged in a different order.

In an analysis alongside the latest figures, TIOBE attributes the comeback of C++ to a surge in its popularity, rather than a fall in the use of Python. "This is certainly not because Python is in decline: Python is scoring all time highs almost every month. It is just that C++ is also getting more and more popular," it writes. The report credits this growing interest in C++ to C++11, the version of the language released in 2011 that TIOBE said made C++ "much simpler, safer and more expressive."

This discussion has been archived. No new comments can be posted.

Most Popular Programming Languages: C++ Knocks Python Out of Top Three in New Study

Comments Filter:
  • by Latent Heat ( 558884 ) on Monday April 08, 2019 @04:10PM (#58406182)
    Pick any two.
    • The "good/cheap/fast---pick any two" paradigm doesn't apply here. It's not a fixed project or product. Rather it's an evolving standard benefiting from the efforts of many, the expenditure of many resources, over long time periods. After all, they are working on c++20!. So, this is not apt.

      • by Anonymous Coward

        That's because C++ only has two left to pick from. Stroustrup discarded "simpler" way back in 1997 with the introduction of template metaprogramming.

        • by Anonymous Coward
          Which is funny from the guy who said macros/#defines were bad...
        • That's because C++ only has two left to pick from. Stroustrup discarded "simpler" way back in 1997 with the introduction of template metaprogramming.

          THIS^

          Lord I wish I had mod points for you... :(

    • I don't care how simpler C++ thinks it is.

      I can write a bigger, slower program in Java, in less time, any day of the week.
    • Safer, simpler, more expressive

      ...something like Scheme, then?

    • by ceoyoyo ( 59147 )

      In my experience, the expressiveness of C++ has always made it non-simple. So maybe pick one?

    • #4: slower. Python wins by a mile.

    • by Anonymous Coward

      Career advice: Ignore the drip drip of new rising star languages and the drivel of proponent's blog entries.

      There are jobs out there for general purpose languages only occupying a niche of the total number of programming jobs. Becoming an expert in one of those narrowly used in paid jobs languages is a hobby and not a career move.

      Case in point: Search for jobs where Ruby is the main programming language versus Cobol jobs. Cobol's been on the skids since the middle 1980s and has more jobs than many of the

    • by AHuxley ( 892839 )
      Learn to code Ada.
      • Ada certainly looks like a nice language. Unfortunately very few civilian companies seem to use it. A quick search on Indeed.com suggests there are 20x more Python developer jobs than Ada developer jobs listed today. That without controlling for namespace collision with ADA regulations.

        Any thoughts on why Ada is so uncommon in private industry?

    • Safer, simpler and more expressive are all relative measures and depends on what the language was like before the changes. C++11 made it easier to write safer, simpler and more expressive code. You don't have to, but it is easier to do it now. Just the addition of shared_ptr is enough to claim all three improvements.

      • by vyvepe ( 809573 )

        Just the addition of shared_ptr is enough to claim all three improvements.

        shared_ptr was in boost long before C++11. There are more important additions like type inference, lambda functions, strongly typed enums, rvalue reference, variadict templates .... just to name a few more relevant.

  • Make C++ simpler ?!? (Score:5, Interesting)

    by dargaud ( 518470 ) <slashdot2@nOSpaM.gdargaud.net> on Monday April 08, 2019 @04:11PM (#58406190) Homepage
    You would have to remove things from it, not just keep adding every paradigm from every other language. That thing has everything and the kitchen thing: you can do pure C with it. Or (almost) pure Java. Or only macros and templates. Anyway one programmer's C++ program might as well be an alien language to another C++ programmer.

    Besides that, their whole methodology is crap, as has been noted many times over: if there are plenty of messages asking for help on stackoverflow, maybe it's because users are struggling with a language, not because it's 'popular'. A language that is very easy to learn on your own wouldn't have any messages now would it ?

    • That thing (C++) has everything and the kitchen thing: ...

      C++ is probably implemented using Emacs LISP ... :-)

      [ Emacs' original/old logo was, literally, an overflowing kitchen sink [teuton.org]. ]

    • Re: (Score:3, Interesting)

      by Pseudonym ( 62607 )

      You would have to remove things from it, not just keep adding every paradigm from every other language.

      Things are being removed from C++, but that's not the point here. You don't have to remove large slabs of the language, you just have to choose not to use them. The craziness that is C++ locales, for example, need not concern you because you won't use it.

      Modern C++ is mostly about not using implementation inheritance, which is the one thing that bitter experience has shown makes C++ software brittle. But you can't remove it from the language because all of that 1990s era hierarchical tarpit code wouldn't wo

      • by ranton ( 36917 ) on Monday April 08, 2019 @04:38PM (#58406308)

        You don't have to remove large slabs of the language, you just have to choose not to use them. The craziness that is C++ locales, for example, need not concern you because you won't use it.

        This is only true if you are either working alone or have control over the development practices of your product team. And hopefully you never move companies or acquire a company that develops differently than you do.

        Otherwise every feature in your language of choice is something you may need to use if you are supporting work done by other developers who use that feature.

        • by Anonymous Coward

          Bingo! As you add coders to a project -- now or in the past who have added to the legacy code base -- you dramatically increase the probability of running into crap features and crap coding practices.

          When I did a lot of consulting and custom coding, I ran into this constantly, especially when any of the C family languages were involved.

        • by ceoyoyo ( 59147 ) on Monday April 08, 2019 @05:18PM (#58406554)

          It's also only true if you ever only look at your own code. One of the most irritating things about C++ is that in order to understand someone else's code you have to first essentially learn a new language by going through the project's style guide. If they have one. And it's any good.

          Hey, I found this great open source project, I just need to add/tweak this little feature... OMG, KILL IT WITH FIRE.

          • And of course, the cure to having to learn new stuff in a language is to learn a completely different language every time. That'll teach 'em.
          • by AmiMoJo ( 196126 )

            C++ is the ultimate career armour. Pick an exotic C++, use it extensively in your business critical app, and you have a job for life because no-one else will touch it with a barge pole.

            Works particularly well for contractors.

          • It's also only true if you ever only look at your own code.

            Clearly you haven't seen my pre-ANSI-era C++ code. It's... probably for the best.

            Having said that, I strongly disagree that C++ is especially prone to this. Yes, Qt is essentially a different language from C++ (say). By the same measure, Spring is essentially a different language from Java and every JavaScript framework is its own thing.

            The main difference is that C++ is both old and powerful. Like any piece of aging infrastructure, it needs a lot of maintenance (hence the busy C++ standards committee), but

      • by tlhIngan ( 30335 )

        Things are being removed from C++, but that's not the point here. You don't have to remove large slabs of the language, you just have to choose not to use them. The craziness that is C++ locales, for example, need not concern you because you won't use it.

        Modern C++ is mostly about not using implementation inheritance, which is the one thing that bitter experience has shown makes C++ software brittle. But you can't remove it from the language because all of that 1990s era hierarchical tarpit code wouldn't wo

      • The craziness that is C++ locales, for example, need not concern you because you won't use it.

        Are you sure? I have a version of libc++ that works in the FreeBSD kernel, but I needed to do some quite drastic surgery to remove all of the locale stuff (which I really don't want in the kernel - anything that needs localisation should be done in userspace). A lot of the standard library depends on it indirectly and so I needed a lot of stubs to even let the standard library build.

        The C++ standard library could really benefit from some better modularity and layering. The core ADTs, the threading lib

        • Unfortunately, the C++ standards committee is philosophically opposed to subsetting,

          Not when it comes to the library they're not. There's currently non hosted (no library) and hosted (with the library). There are proposals making their way through to make the non hosted one have some useful libraries.

        • I am unclear on what problem is best solved by using libc++ in the FreeBSD kernel. Or most of libc, for that matter.

    • The truth about C++

      Interview with Bjarne Stroustrup [artlung.com]

    • by OzPeter ( 195038 ) on Monday April 08, 2019 @05:00PM (#58406446)

      You would have to remove things from it, not just keep adding every paradigm from every other language. That thing has everything and the kitchen thing: you can do pure C with it. Or (almost) pure Java. Or only macros and templates. Anyway one programmer's C++ program might as well be an alien language to another C++ programmer.

      I can't remember who said it, but they said that C++ is actually 4 distinct languages under one banner (from memory): Procedural, OOP, C-style Macros, and Templates.

      Each of them have different attributes and gotcha's.

      I used to know C++ fairly well in the late 90's, but when I look at the current state of it I tend to shake any head in wonder as to what it has become. Not only have there been so many new additions to it, there have also been completely new paradigms in how to approach it.

      • by AmiMoJo ( 196126 )

        C++ is a Swiss army knife where half the tools are various calibre foot guns.

      • I used to know C++ fairly well in the late 90's, but when I look at the current state of it I tend to shake any head in wonder as to what it has become. Not only have there been so many new additions to it, there have also been completely new paradigms in how to approach it.

        Same here. I used to program C++ with my eyes closed and get things done rather well and safely. But the language has moved beyond the realm of what I feel inclined to catch up. I do like some of the improvements in C++11, but wow, so many ways to blow your own foot now (as it if wasn't bad enough 20 years ago.)

    • "You would have to remove things from it, not just keep adding every paradigm from every other language."

      That's not the problem, in my opinion. It's good to have all the possibilities, even if they are rarely useful.

      One of the problems with C++ is that NONE of the rarely useful features are documented well. The rarely useful features should be documented with warnings about the messes that are created when they are used in a way not intended.

      I have never seen excellent documentation of ANY featu
      • by vyvepe ( 809573 )
        Get a draft C++ specification. The final versions are ISO standards and not available for free. But drafts are good enough.
        • FAQs: [isocpp.org]

          "Q: Why is the standard hard to read? I'm having trouble learning C++ from reading it.

          "The standard is not intended to teach how to use C++. Rather, it is an international treaty -- a formal, legal, and sometimes mind-numbingly detailed technical document intended primarily for people writing C++ compilers and standard library implementations.

          "Fortunately, there are lots of good books that do teach how to use C++! See these recommendations [isocpp.org] as a starting point for high-quality tutorial and referenc

          • The C++ standard is UTTER GARBAGE, says ISO CPP

            You're a fuckwit says you.

            I mean that statement has about as much logic as your post.

            • Quoting from ISO CPP: "... sometimes mind-numbingly detailed technical document..." I translated "mind-numbingly" to "utter garbage", an exaggeration, I agree.

              Poor technology documentation is a HUGE problem. "Mind-numbingly" is just one of the problems with poor documentation. Bad documentation discourages people from entering a technical field. Poor documentation sometimes makes fixing coding errors FAR more difficult.

              Also, personal attacks are unhealthy for the attacker.
              • I translated "mind-numbingly" to "utter garbage", an exaggeration, I agree.

                So you translated one thing to something completely different. It would make sense if the ISO's job was to entertain. But it's not. Boring/exciting is not within the remit of the ISO and frankly is not an issue for standards.

                Poor technology documentation is a HUGE problem. "Mind-numbingly" is just one of the problems with poor documentation.

                Lack of precision for for a standard is a bigger problem then being boring. Much bigger.

                You'r

    • You would have to remove things from it, not just keep adding every paradigm from every other language.

      You're addressing inherent simplicity: simplicity that inheres in the object itself. Inherent simplicity is overrated.

      Not so simple: maintaining your own fork of a major development language, because a recent major release— in pursuit of round-fingered, bent-legged enlightenment—gored your ox on a multi-million-line code base.

      Our quest for simplicity is quite primal. It's often just a power mo

      • by hawk ( 1151 )

        >, and you go into the worst battles with the best people, and mostly you come back out alive

        All in all, I think I'll choose a programming language that lacks an intrinsic ability to *kill me*!!!!

        *shudder*

        hawk, who has never even *worried* about dying while programming before . .

    • Besides that, their whole methodology is crap, as has been noted many times over: if there are plenty of messages asking for help on stackoverflow, maybe it's because users are struggling with a language, not because it's 'popular'. A language that is very easy to learn on your own wouldn't have any messages now would it ?

      No mod points today, so here's a "virtual +1 Insightful" for you.

      I also wish people would stop making such false correlations, it's almost as stupid as these ones [twentytwowords.com].

  • by fahrbot-bot ( 874524 ) on Monday April 08, 2019 @04:11PM (#58406192)

    Anyone know what programming language (or other tool) is used to process the data and generate the TIOBE Index?

    • Re: (Score:2, Funny)

      by Anonymous Coward

      Most likely Node.js with 300 dependencies - one for each function call.

      • by Anonymous Coward

        LOL right in the vas deferens

  • Assembly (Score:5, Interesting)

    by Ramley ( 1168049 ) on Monday April 08, 2019 @04:27PM (#58406272)
    I was surprised to see Assembly in the top 10. Perhaps I shouldn't be, as I'm not in the world which uses Assembly, and I haven't even played with it since college back in the day.

    Forgive my ignorance here, but why the popularity of Assembly? It's impressive to say the least, but I'm unfamiliar with the world that lives in that language.

    Happy Monday!
    • I was curious if it was just x86 assembly, or all assembly across all processors (like ARM)?

      Some curious changes on that list...

      • by Anonymous Coward

        It only makes sense if it's all assembly across all processors. I'd guess ARM has a lot to do with it precisely because optimizing code for phones is actually a thing. Really there's no reasonable basis to avoid assembly language, and I doubt there ever will be. The closest you'll ever get is specific C code that tries desperately hard to qualify as C code and not butchered assembly. There's also the space of dynamic recompilers which can be written in C but often parts are still written in assembly at

      • "... all assembly across all processors..."

        Sometimes Assembly language is the simplest, most easily understood way of coding something.
    • by sconeu ( 64226 )

      My guess is embedded and things like 8-bit microcontrollers.

    • Maybe it's a side effect on how TIOBE measures "popularity" by looking at frequency in search engines - surely, that correlates with popularity, but also (IMHO) with complexity, which may have brought our friendly neighbourhood (Assembly) into the spotlight :-D

    • I was surprised to see Assembly in the top 10.

      I'm wondering if it's growth in WebAssembly?

    • All code has to be written in assembly at some point. If you're making your compiler implement C++14 move semantics, for example, you may need to write portions of that code in assembly. If you create a new microcontroller, you'll also have to implement a compiler to assembly somewhere. Assembly is also hard thus lots of people are trying to find an answer and probably don't find the right answer the first time.

    • Re:Assembly (Score:4, Informative)

      by Heir Of The Mess ( 939658 ) on Monday April 08, 2019 @06:45PM (#58407014)

      I wouldn't put too much faith in the TIOBE index, for example it shows VB.NET at number 5, above C# at number 6 which can't be right.

      I think you'll find PYPL [github.io] to be a better indicator of language popularity which has VBA and VB in its proper place at #13 and #17 respectively.

    • I use it at least once a week. To fix things that should have been fixed, by date or by contract. Either way, the code going to my CPU is my call to make.

      SoftIce anyone?

    • by antdude ( 79039 )

      I am surprised to see old languages listed like C++, ASM, etc. that I used back in college during the mid 90s.

  • ...and you oughtn't be anywhere near the top. Just my absolutely accurate and precise opinion.
    • by hazem ( 472289 ) on Tuesday April 09, 2019 @12:21AM (#58408118) Journal

      You're getting marked as flame-bait, but I agree. Try reading (and typing in) code from a book with C (or practically any other language), and you'll have no problems. Try the same with a book with Python code that spans a page-break, and you'll have to break out a ruler to figure out the correct number of syntactic spaces.

      It's a fine scripting language, but it's hard to take seriously with limitations like that.

      • Did the second sentence make the difference? If so, that were inept on my part as I was trying for self-mockery.
      • by ebvwfbw ( 864834 )

        Sounds like you don't know python. I'm an old time C guy. Over 35 years. It's great for certain things. I still code in it. However for a lot of things I can whip out a program in python that is right in an afternoon and I don't have to ever touch it. C - it'll take me far longer to do the same thing. I'm fairly good at getting it right the first time, however I still end up having to change things later. Method is the same for me. All the steps are in my mind, then I type it right in.

        Python is a very serio

        • I'm sorry but that sounds exactly like what you would use a scripting language for - quick hack-together solutions to immediate problems.

          I know Python can be used for far more than just scripting, but it definitely feels like you supported his point more than argued against it, as seems to be your intention.

          • by ebvwfbw ( 864834 )

            I could see how you would think that. Sometimes I write quick stuff to solve something, though it could be in perl, or even awk. In fact if it is something quick I wouldn't use python because it really has to line up properly, so we're talking about a file. I don't want to bother with a stinkin' file.

            By whipping out something in an afternoon I had more in mind something like taking stock market data and running it through tensorflow. Recently I ran wifi data from a kismet session through to find something s

  • Namespaces in C (Score:5, Interesting)

    by darthsilun ( 3993753 ) on Monday April 08, 2019 @05:27PM (#58406598)
    Could we just have namespaces in C? Maybe reference types?
    Or pushing the envelope, how about a simple single-inheritance class model? It seems like every project I've ever worked on has jumped through hoops creating a simplistic "object" model.
    I've already been down this road once (or twice). We used C++ with no boost and limited to a very small set of features (well documented). But then along came someone who just wanted to use one little thing in boost. Or some other thing no on the list.
    And then the long slide down the slippery slope began.
    • I hear you!

      Or pushing the envelope, how about a simple single-inheritance class model?

      I have this. I wrote a parser that reads in class definitions and spits out structs. Fields that are inherited from parents and marked as public are placed into the struct directly, and getters/setters are generated automatically for each field.

      It turned out less useful than I thought - for a feature to be useful it has to be part of the standard, not an add-on, else other programmers won't want to use it.

    • Could we just have namespaces in C? Maybe reference types?

      Or pushing the envelope, how about a simple single-inheritance class model? It seems like every project I've ever worked on has jumped through hoops creating a simplistic "object" model.

      I've already been down this road once (or twice). We used C++ with no boost and limited to a very small set of features (well documented). But then along came someone who just wanted to use one little thing in boost. Or some other thing no on the list.

      And then the long slide down the slippery slope began.

      Libraries like boost all seem to be a balancing act between reinventing the wheel and having to deal with a library that does mostly what you want, but not quite the way you want.

  • CLICKBAIT VIDEO SPAM (Score:4, Informative)

    by michaelcole ( 704646 ) on Monday April 08, 2019 @05:27PM (#58406602)
    This article is a video rehash of a 6-month-old yearly survey.

    What you're looking for is here: https://www.tiobe.com/tiobe-in... [tiobe.com]
  • VB.NET? (Score:5, Informative)

    by NerdENerd ( 660369 ) on Monday April 08, 2019 @05:30PM (#58406620)
    As a 15 year .NET veteran I call bullshit on VB.NET being so popular. Nobody uses VB.NET and .NET developers laugh at you if you do.
    • I happen to know that the US military uses VB.NET, though frankly, the whole .NET community can burn for all I care. The Javascript community is crazy, but at least they don't glorify ignorance the way the .NET community does.
      • I happen to know that the US military uses VB.NET

        Well, that certainly explains how they spend more money on military than the entire world put together, but are still effectively useless.

    • by Anonymous Coward

      I wrote in VB.NET between 2006 and 2012 or so... it's fine. I did eventually move to C# as I got more into javascript, since the syntaxes were similar.

      The real evil of .NET is the default components/controls - with the exception of linkbutton and placeholder they're all terrible and worthless.

  • by Tough Love ( 215404 ) on Monday April 08, 2019 @05:50PM (#58406756)

    What TIOBE measures: how puzzling a language is to how many Stackoverflow members. So C++ can win, even if it used by fewer Stackoverflow members, because it is more puzzling.

    Of course, in order to have any users at all, a language must make itself useful, which C++ does by a variety of metrics, but most notably efficiency. If you care about getting the most bang for your buck out of your expensive, power hungry data center, then you hire more expensive developers and do the job in C++. If you care about lowest possible latency in a financial trading platform, again you do the job in C++. Go ahead, try it in Python. You can do it, it has been done, but you will get eaten alive in the trading jungle.

  • LOL, C++11 has made said made C++ "much simpler, safer and more expressive." That's got to be one of the most bizarre statements I've ever read.

    More like template meta-programming has increased the language complexity by several orders of magnitude. At least you could step through pre-templatized C++ and understand control flow. With these template meta-programming, the language is completely and utterly incomprehensible, they've truly made it a "write only" language. Case in point, take a look at Eigen.

    No, C++ just needs to die, the standards committee just can't seem to figure out how to simply the language, and please the meta programming language geeks. C++ needs to die and get replaced by something like Go or Rust.
  • by skinlayers ( 621258 ) on Monday April 08, 2019 @07:20PM (#58407126)

    C++'s days are numbered.

    https://en.wikipedia.org/wiki/... [wikipedia.org]

    "The designers were primarily motivated by their shared dislike of C++."

    References:
    "Dr. Dobb's: Interview with Ken Thompson": http://www.drdobbs.com/open-so... [drdobbs.com]

    "Less is exponentially more": http://commandcenter.blogspot.... [blogspot.mx]

    ""The Evolution of Go": https://talks.golang.org/2015/... [golang.org]

    And I'm not the only one who agrees.

    "Why ESR Hates C++, Respects Java, and Thinks Go (But Not Rust) Will Replace C"
    https://slashdot.org/story/334... [slashdot.org]

    • C++'s days are numbered.

      Techincally everything's days are numbered.

      "The designers were primarily motivated by their shared dislike of C++."

      Euch. You could insert "irrational" or "misinformed" into that sentnce. I use C++ a lot. I could give you a long list of complaints about it. A very long list. There are things I'd love to see fixed, or a "better" language replace it.

      That language isn't golang.

      In fact that article you posted:

      "Less is exponentially more": http://commandcenter.blogspot.... [commandcen...ogspot....]

      Basically dege

    • Comment removed based on user account deletion
    • The language Go is not going anywhere. I don't know how to verbalize what I am seeing in my mind, but the summary is that Go is, ultimately, a dead language.

      Here is a best effort (very bad results):
      You need to be able to address all aspects of reality for a programming language to be generically useful. Go limits the ways that you can address reality; therefore, it can never replace C or Assembler.

      It is impossible to create a powerful tool that is NOT dangerous in the wrong hands. Go is like handing a soldi

C'est magnifique, mais ce n'est pas l'Informatique. -- Bosquet [on seeing the IBM 4341]

Working...