Slashdot Mirror


C Programming Language Hits a 15-Year Low On The TIOBE Index (businessinsider.com)

Gamoid writes: The venerable C programming language hit a 15-year low on the TIOBE Index, perhaps because more mobile- and web-friendly languages like Swift and Go are starting to eat its lunch. "The C programming language has a score of 11.303%, which is its lowest score ever since we started the TIOBE index back in 2001," writes Paul Jansen, manager of TIOBE Index. With that said, C is still the second most popular programming language in the world, behind only Java. Also worth noting as mentioned by Matt Weinberger via Business Insider, "C doesn't currently have a major corporate sponsor; Oracle makes a lot of money from Java; Apple pushes both Swift and Objective-C for building iPhone apps. But no big tech company is getting on stage and pushing C as the future of development. So C's problems could be marketing as much as anything."

25 of 232 comments (clear)

  1. It's not a popularity contest by Anonymous Coward · · Score: 5, Insightful

    I don't need a corporate sponsor or a sexy advertising campaign to figure out that if I want something to run on most Linux distributions, as well as the BSDs with minor modifications, C is the obvious choice. Most of the languages being heavily promoted are garbage, that's why companies have to spend money to get anyone to use them. Robust languages don't need a marketing team.

    1. Re:It's not a popularity contest by Anonymous Coward · · Score: 5, Insightful

      Most of the languages being heavily promoted will be dead 10 years from now. Anything serious and written to stand the test of time is done in C. Everything else is transient.

  2. problems, lol by Anonymous Coward · · Score: 5, Insightful

    From TFS, "c's problems": c doesn't have "problems"; programmers who don't use c have problems. Such as their code is slow, overweight, wasteful of resources, and uses only a fraction of the potential available at the low level.

    But you keep holding that warm, safe hand. Momma will lead you right to the rubber room. :)

    Or, you know. You could actually learn how to write good code at the most powerful level. That's a radical thought.

    1. Re:problems, lol by Pseudonym · · Score: 3, Insightful

      c doesn't have "problems"

      Sure it does. As TFS notes, C doesn't have a corporate sponsor. That's why (to pick one example) there is no native compliant C compiler for Windows.

      (Yes, you can build Clang if you want to. You know what I meant.)

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    2. Re:problems, lol by ShanghaiBill · · Score: 4, Insightful

      From TFS, "c's problems": c doesn't have "problems"; programmers who don't use c have problems.

      That is actually what TIOBE measures. It counts Google searches. C programmers are smart enough that they don't need to search for answers on Google, or they use a better website, such as Stackoverflow. A high TIOBE index can mean a language is popular, or it can mean that language has dumb programmers.

    3. Re:problems, lol by ShanghaiBill · · Score: 4, Insightful

      C doesn't have a corporate sponsor.

      Why is that a bad thing? Is Java better because Oracle owns it?

    4. Re:problems, lol by roca · · Score: 3, Insightful

      The reality is that programmers make lots of mistakes, no matter how smart they are, how educated they are, or how hard they try.

      Another reality is that even if the really brilliant programmers never made mistakes, there aren't enough of them to create all the software that the world needs.

      Fortunately, in the 44 years since C was created, we've learned how to design languages that are easier to use and prevent or detect many of the worst kinds of mistakes. Recently we've even learned how to do that without giving up the power C programmers need.

    5. Re: problems, lol by Anonymous Coward · · Score: 2, Insightful

      Of course Windows has more than one native compliant C compiler. Microsoft doesn't make one but why should anyone care?

    6. Re:problems, lol by Anonymous Coward · · Score: 3, Insightful

      If your request takes 50ms to process, you're screwed. That's the PYTHON and Perl world that some people live in.

      I spent lots of time working on software where 50 us (1/1000th of 50 ms) was considered too long. Think trading protocols. Even real time audio needs to have full processing in less than 20 ms to prevent lip flap. Gaming has similar requirements (FPS gaming, RTS is admittedly a bit more tolerate of latency.)

      50 msec is a scalability concern. If it takes you 50 msec to service a request, that means you can only service a maximum of 20 requests per second! (Maybe you can parallelize per core -- but do you want to burn an entire core to get to just 200 ops/sec? Modern transaction systems can process 1 *million* or more transactions per second. Guess what... those are *NOT* written in Python.

      Another example -- the entire reason that SSDs are so hot (well almost the entire reason) is that hard disk seek times are too damned slow at about 4ms. (In other words, hard disks peak at around 250 random ops / sec *max theroetical*.) That is *SLOW*. We need to build systems that are faster, that can process data in microseconds, or even hundreds of nanoseconds. (This is what SSDs do.) And the painful seek times of HDDs are still about an order of magnitude faster than the time that you propose is "good enough".

      Guess what -- all those systems -- whether your hard disk firmware (or SSD firmware), your device drivers, your kernel, or your filesystem, are all written in a "low level language" (usually C, sometimes, to great misfortune, C++) -- using *SOFTWARE*. Nobody writes that stuff in Python. They'd be fired if they tried!

      Tools like Python and Node exist to serve a need to support programmer efficiency over all other considerations. Typically this is for administrative operations where the parallelism is very low, and the performance requirements are almost non-existent. (Is it any wonder that the admin interfaces for the vast majority of products are all steaming piles of crap?)

      Python is great for building stuff quickly, and for facilitating "development" by people coming from an IT administration background. Its far less great at building production worthy products -- those ease of use futures like monkey patching, dynamic typing, and an untyped, interpreted language, ultimately cause serious problems for large scale projects. (I've built products in Python. Sadly, I'm pretty sure I have shipped code with Python syntax errors in error handling paths. My C or Go might have been buggy, but at least it friggin' compiled!)

      You kids and your fancy damned languages have no idea how the stuff you depend on is really built. But you keep going writing this crappy web sites in NodeJS and Python. Eventually maybe Moore's Law will make your stuff seem to suck a little less. In the meantime, go back to your playgrounds, and let the rest of us get back to building the systems that the rest of the world relies upon.

    7. Re:problems, lol by CrashNBrn · · Score: 3, Insightful

      No. We use our books by Dennis Ritchie and Ken Thompson.

    8. Re:problems, lol by Xest · · Score: 3, Insightful

      TIOBEs index is fundamentally flawed, I've posted here analysing why on numerous occasions and in great detail, and whilst my posts on the topic have always been modded to +5 Slashdot still regularly posts drivel based upon it, and people still seem to debate those stories even though they have exactly no merit whatsoever due to the fact the data behind the story is fundamentally broken.

      I still have literally no idea why Slashdot posts stories based on TIOBE, and why anyone bothers to debate those stories as if the premise they're dragging from the index has any merit whatsoever. I can only assume TIOBE pays Slashdot for Slashvertisments at this point.

      I'll give TIOBE credit, it has in the last year or so updated it's methodology to be slightly less than worthless rather than just completely worthless, but it's still ultimately just a shade of worthless in it's methodology. It looks like they're now using someone who passed high school statistics, rather than someone that failed it. They really need at absolute minimum a statistics graduate though if their index is to be of any value.

      I've long said that if they want to drastically increase the value and worth of their index, then rather than counting how many results they get for "C Language" on YouTube, Amazon, Baidu, and Wikipedia which tells us pretty much nothing about it's usage, that they at least switch to using results from Jobsites, and open source project sites. That way they can start to measure what's actually being used, rather than what a bunch of unrelated search engines are confusing their search for.

      Consider this, C++ is a (relatively) old language, but one that has been updated, by searching Amazon for "C++ Language" you may therefore get more books on it than any other language, but that tells us absolutely nothing about how much it's being used, as many people who read the early books may have long retired and the books may be entirely irrelevant now, but Amazon still lists them whilst newer C++ developers are buying the newer books it's possible that usage has stayed relatively static for example - the increase in books does not necessarily correlate to an increase in developers. The same problem rings true in other ways for all their other search results.

      By using job sites it may still not tell us anything about retirement, but it does at least tell us the trend. Using open source repositorites can be a good indicator of actual usage, though it misses out the entirety of the corporate closed source world which may or may not use a completely different set of technologies.

      So whilst TIOBE currently tells us nothing of value, it could be changed to tell us what companies are hiring for and hence using or intending to use, which is helpful, or it could tell us what open source projects are using, which is useful information as it gives you an idea of what open source developers are choosnig to use even if it's not necessarily representative of the whole market.

      Short version: TIOBE needs to change it's methology to be meaningful, or Slashdot needs to stop posting stories based on it that are almost certanily incorrect, or at least aren't verifiable by anything from TIOBE.

    9. Re:problems, lol by jandersen · · Score: 3, Insightful

      C doesn't have a corporate sponsor.

      Why is that a bad thing? Is Java better because Oracle owns it?

      It probably isn't, come to that. C has many obvious advantages - it is easy to learn, it is low-level, so programs tend to be fast, the system calls of most OSes are directly accessible from C. The downside is that because it is so easy to learn, it also invites the inexperienced programmer to commit dangerous errors, that can sometimes be hard to pin down. Many of the better class of new languages try to address these problems, although I am not convinced that the solutions are always worth the cost. The best, new feature, in my view, is the introduction of exception handling in Java, C++, Python and other languages.

      It is hard to compare C to Java, I think; although they are syntactically similar, they address different classes of problems. Where C is a free-styling sort of "assembler++" (I mean that in a good way), Java has moved to the other end of the spectrum: the compiled byte-code run in a VM on any platform for which a JVM has been implemented, and Java probably has more industrial standards associated with it than any other language; this makes it rather hard to learn to work with, but it also means that there is well-designed, standard way of doing almost every important thing you might want to do with software, and it makes it much likely that your programs are going to be compatible with other Java programs.

    10. Re:problems, lol by Feral+Nerd · · Score: 3, Insightful

      C doesn't have a corporate sponsor.

      Why is that a bad thing? Is Java better because Oracle owns it?

      It probably isn't, come to that. C has many obvious advantages - it is easy to learn, it is low-level, so programs tend to be fast, the system calls of most OSes are directly accessible from C. The downside is that because it is so easy to learn, it also invites the inexperienced programmer to commit dangerous errors, that can sometimes be hard to pin down. Many of the better class of new languages try to address these problems, although I am not convinced that the solutions are always worth the cost. The best, new feature, in my view, is the introduction of exception handling in Java, C++, Python and other languages.

      Exceptions or something like them would be nice to have in C (I'm sure that's not possible for some extremely good technical reason but a guy can dream). However, the thing about C that annoys me the most is the fact that I have two re-invent the wheel all the time, that, introduce libraries to the project or write my own utility libraries. The thing I think C is missing the most is a major extension of it's standard library. C++ for example is full of utility libraries with functions to do small mundane tasks like check strings. Things that can be finished off by one call to a utility function that is part of the standard library in C++ can only be solved in C by either writing several lines of code or including an external dependency that may or may not compile when you move to some other platform and even if it does the behaviour may not be the same. Headaches with different Lex/Yacc implementations spring to mind and even with the same Lex/Yacc implementation behaving differently on, say Linux and AIX or Solaris, the list of headaches connected to external dependencies is long. Also there is a lot of things that can be solved in a single assignment in C++ that can only be done in a much more clunky way in C.

    11. Re: problems, lol by Anonymous Coward · · Score: 3, Insightful

      There have been no big changes, other than the introduction of these newer languages. The idea of corporate backing is a red herring. Java is backed by Oracle, but just barely.

      (Oracle's plan to make money from Java mostly centers around suing Google. Otherwise, it's clear they have no intention of doing anything interesting with Java. I'm kind of hoping Oracle "OpenOffices" Java and just gives it to some organization like the ASF.)

      What you are seeing is entirely natural and should surprise nobody. The dominating cost of producing and maintaining software is in the human programmers who produce and maintain that software.

      It's not about low-level versus high-level, bare-metal versus elegant abstractions. It's about that magical word that C-suites love to consider: productivity.

      Languages (and environments... that's the real kicker. C would be fine if it has e.g. the rich ecosystem of easily-available libraries that Java does) that allow programmers to solve problems faster are the ones that will get used the most. Write a single-threaded web server? Java: 5 minutes. C: more. There is just more code to write. Yes, you could cheat and use a library (just like Java does!) in C but most people have no clue how to locate that library, build that library, deploy that library, etc. In Java, you just look at the java doc for the standard libra and you are off to the races.

      GUIs? Same. Accessing a database? Same.

      I'm not saying it can't be done: it certainly can. But it takes more time. And it takes more expensive programmers. Why would most companies pay for that when they can get more bang for their buck elsewhere? The answer is that they won't.

      When does C get used? When it has to be used. Operating systems. Real-time devices. Embedded devices (though this is becoming less and less necessary as the difference between what most of us would classify as "embedded" blurs significantly... Raspberry Pis have giga of RAM now... Sheesh). Exotic hardware where talking to the bare metal without any interstitial layers fouling everything up.

      Oh, and it also gets used at shops where the existing programmers are C experts and insist that C is the best language for everything. Those companies are probably wasting their money, in general.

      C will always have a place, and a good one at that. But it's never going to be dominant again. There are just far more projects out there where another language/environment choice are going to yield faster results, and thus cost less money.

    12. Re:problems, lol by Aighearach · · Score: 3, Insightful

      The real problem with C is that...

      People keep trying to push that, forgetting that people who agreed already switched to C++, or at least are using GCC extensions.

      While I don't doubt that there are people who avoided C99 who will love C11, most of the people using C are using C99 and won't be willing to consider adopting whatever was added in `11 until 2020 or later.

      I think it is safe to say that the vast majority of people still using C do not want language innovation, they want feature stability.

  3. So what! by no-body · · Score: 4, Insightful

    C is great - love it and if somebody shits on it, even more so!

  4. Moronic Subject for an Article by hoofie · · Score: 5, Insightful

    This really is a moronic article. Programming language choice is not about "popular" or "cool" - it's whatever tool gets the job done. The article also takes a whack at COBOL and Fortran. They might be old but they have been around a long time and are still in heavy use in many areas. The article also ignores things like microcontrollers, arduinos etc whose development tooling invariably uses C. The whole thing reads like it was written by a newly minted graduate.

    1. Re:Moronic Subject for an Article by lgw · · Score: 4, Insightful

      This really is a moronic article. Programming language choice is not about "popular" or "cool" - it's whatever tool gets the job done.

      For a hobby? Sure. Otherwise it's about whatever tool gets the paycheck done. Java sucks today and isn't the best tool for any job, yet it dominates the job market. It was a bad tool 15 years ago, and it will be a bad tool 15 years from now, when it will still dominate the job market. And by then, sadly, $10 computers will run Java easily.

      C will always be the kernel guy's tool, and those jobs pay nicely, but there will never be very many of them. C++ has faded (despite being a darn good language with the latest standard, too many burned bridges). C# will go down with the Microsoft ship. Will one of the new fad languages have staying power? Maybe. Likely 1 of them will, if not a current one. But fucking Java just refuses to die.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    2. Re:Moronic Subject for an Article by Anne+Thwacks · · Score: 3, Insightful
      Java is the new COBOL

      So your CFO and auditor can read it?

      I don't think you understand the point of COBOL, which is "while it is very long-winded and a struggle to write, it is possible for lay people to read, and (at least the evidence suggests) maintain 50 year old code after the original author has died".

      If you write COBOL, you probably spend two days reading the background info and requirements docs for every ten minutes you spend writing code anyway.

      Good luck getting an accountant to understand 50 year old Java.

      --
      Sent from my ASR33 using ASCII
  5. C's problem? by ugen · · Score: 3, Insightful

    C has what problem? Lack of social media popularity with hipster morons? It's a programming language, not a popularity contest. This kind of shit lately on slashdot really starts getting old. Who runs this place?

    1. Re:C's problem? by Anonymous Coward · · Score: 2, Insightful

      To some extent it IS a popularity contest. C is no longer taught in many universities so the next gen of programmers won't have any experience with it, which means they'll avoid it for doing projects in their careers. Languages CAN die. Well, not 100% - there are weird things still in use - but in practice they can, if their user base becomes too small. C isn't close to that point at the current time. But if the vector is the wrong way, that isn't a good sign at all.

  6. End of coding by OrangeTide · · Score: 4, Insightful

    Us C programmers have already written everything there is to write.

    Feel free to reinvent the wheel in various toy languages if that is what makes you happy, I soon will retire and won't care.

    --
    “Common sense is not so common.” — Voltaire
  7. Re:Yeah, it sucks, but, then, C not an easy langua by Anonymous Coward · · Score: 2, Insightful

    The problem is not C's fault.

    Some macro packages are indeed horrid. That's not C's fault. Its absolutely possible to beautiful APIs in C. The UNIX file descriptor API is probably one of the first examples of object oriented programming and polymorphism, yet nobody ever gives it credit.

    You do have to be able to manage pointers and memory in C, and if you use threads you have to be able to deal with currency. This is not rocket science, but it requires diligence.

    I am particularly fond of Golang's C "flavor", while freeing the programmer from worrying about those things. If you have to solve a problem that Python or Perl would be your tool of choice for, I'd reach for Go instead.

    If you have to be in a kernel, or performance critical code, then C is your choice.

    And if you think your code isn't performance critical, you should double check your assumptions. Outside of administrative UIs, almost all code (IMO) is performance sensitive and critical. Programmer inability to understand this is responsible for a lot of the carelessness and bloat that has resulted in UIs that struggle to run in gigabytes of memory, when we had perfectly functional programs in the past that ran in tiny fractions of that. (Yes, there is a cost to features, but I still see a *lot* of pointless bloat and programmer carelessness...)

  8. In other exciting news by LichtSpektren · · Score: 5, Insightful

    The hammer just passed the screwdriver again on the Household Tools Popularity List. Is it because the hammer has the venerable backing of large companies like Lowe's and Home Depot while the lowly screwdriver is still seen to be a hobbyist's tool unfit for enterprise adoption?

    Stay tuned for next month's exciting random statistical variations and the inane commentary from bloggers desperate for clicks!

  9. C programmers don't need to consult the web by KeithH · · Score: 4, Insightful

    This TIOBE index relies on web queries for each programming language. Frankly, C programmers don't need to ask questions about the language itself since it is so simple.

    I'm not questioning the popularity of the various languages but it seems to me that this metric favours the more complex languages.

    Finally, in the embedded real-time space, there is still no real substitute for C.