Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
Programming Software Advertising Iphone Java Operating Systems Oracle The Almighty Buck Apple Technology

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

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."
This discussion has been archived. No new comments can be posted.

C Programming Language Hits a 15-Year Low On The TIOBE Index

Comments Filter:
  • by Anonymous Coward on Monday August 29, 2016 @09:45PM (#52793539)

    Rust will be the new language everyone uses in 2020.

    • by Anonymous Coward on Monday August 29, 2016 @09:51PM (#52793575)

      Nah.. It'll be jython servlets running inside a lua hypervisor that is written in javascript.

      • by Dunbal ( 464142 ) *
        with 20 lines of assembly code that a) know one knows how they got there b) no one knows what they do and c) cause the program to crash if they're removed or modified in any way.
    • problems, lol (Score:5, Insightful)

      by Anonymous Coward on Monday August 29, 2016 @10:06PM (#52793649)

      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.

      • Re:problems, lol (Score:4, Insightful)

        by Pseudonym ( 62607 ) on Monday August 29, 2016 @10:40PM (#52793823)

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

        • Re:problems, lol (Score:5, Insightful)

          by ShanghaiBill ( 739463 ) on Monday August 29, 2016 @11:10PM (#52793937)

          C doesn't have a corporate sponsor.

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

          • Why is that a bad thing?

            You may have missed this, but I gave one example in the very next sentence.

          • Re:problems, lol (Score:4, Insightful)

            by jandersen ( 462034 ) on Tuesday August 30, 2016 @06:07AM (#52794879)

            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.

            • Re:problems, lol (Score:4, Insightful)

              by Feral Nerd ( 3929873 ) on Tuesday August 30, 2016 @07:31AM (#52795059)

              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.

              • Re: (Score:3, Interesting)

                by jrbrtsn ( 103896 )

                Exceptions are possible in C. See the documentation for setjmp() and longjmp().

                That said, exceptions are just "kicking the can down the road" for error handling. If a function call can fail, then you should check the return code. If you don't want to write with proper error reporting/recovery code immediately, there is always the assert() macro, e.g.:

                if(func_which_might_fail() == ERROR_OCCURRED) assert(0);

                If assert(0) gets called the program will stop immediately, and you can inspect the problem in detail

                • Re:problems, lol (Score:4, Informative)

                  by Christian Smith ( 3497 ) on Tuesday August 30, 2016 @11:48AM (#52796597) Homepage

                  Exceptions are possible in C. See the documentation for setjmp() and longjmp().

                  That said, exceptions are just "kicking the can down the road" for error handling. If a function call can fail, then you should check the return code. If you don't want to write with proper error reporting/recovery code immediately, there is always the assert() macro, e.g.:

                  if(func_which_might_fail() == ERROR_OCCURRED) assert(0);

                  If assert(0) gets called the program will stop immediately, and you can inspect the problem in detail with a debugger. Easy peasy.

                  Urgh, no. Never, ever do this. assert() usually becomes a no-op when compiling stuff without debug flags, so binaries shipped to the field will mysteriously ignore errors in ways that can't be reproduced in a debugger.

                  One thing that shouldn't change between debug and production code is error detection and handling. In this sense, exceptions are ideal, as handling only needs to happen as and when errors occur, and the common case of no errors incurs little (setjmp/longjmp) to no (exception tables) overhead.

                  Plus exceptions are less laborious to handle. You can have a single try/catch for a whole block of code, instead of testing and handling each and every function that could fail. If you write exception safe code, then that's all you need to do, and you can clean up failed operations in the exception handlers.

        • Re: (Score:2, Funny)

          by rtb61 ( 674572 )

          All current programming languages have major problems. They are not direct extrapolation of normal language or maths or physics languages. They use sounds like or it'll do based upon the idiosyncrasies of their programmers and they are all quite logically awful beyond their own idiosyncratic internal logic.

          We need a new programming language from scratch, properly extrapolated from English, maths and physics and likely a few new custom programming specific characters which should be added to keyboards (mu

        • Re: problems, lol (Score:2, Insightful)

          by Anonymous Coward

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

        • Anyone who knows C should be able to rattle off some problems.

          The operator precedence is screwy. Switch statement case fallthrough is a pitfall. The fact that = is an operator, not part of a statement, makes errors easier. There's a lot of undefined behavior for which no diagnostics are required, and which doesn't look dodgy. The string library is awkward and somewhat inconsistent (check out what strncpy() actually does). Memory management and pointer arithmetic are necessary in far too many context

      • Re:problems, lol (Score:5, Insightful)

        by ShanghaiBill ( 739463 ) on Monday August 29, 2016 @11:09PM (#52793933)

        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.

        • by perpenso ( 1613749 ) on Tuesday August 30, 2016 @12:37AM (#52794239)

          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.

          We use neither google nor stack overflow, we have K&R on PDF.

          • Even if you did, it strikes me that this is an absurd metric. Since a lot of C development goes on within communities; either closed source shops, or open source projects, where it's likely only a portion of the mailing list archives, if any of them at all, are archived. The majority of the BSD and Linux kernels are written in C, along with a significant percentage of the toolsets, so clearly there's one helluva lot of C coding going on. Whether search engines index that activity or not is irrelevant.

            A bett

        • Re:problems, lol (Score:4, Insightful)

          by CrashNBrn ( 1143981 ) on Tuesday August 30, 2016 @03:00AM (#52794505)
          No. We use our books by Dennis Ritchie and Ken Thompson.
        • Re:problems, lol (Score:4, Insightful)

          by Xest ( 935314 ) on Tuesday August 30, 2016 @03:57AM (#52794645)

          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.

        • by AmiMoJo ( 196126 )

          C is a very compact language, you can learn and remember all of it without a reference guide. Hence there is less need to google stuff.

      • Re:problems, lol (Score:4, Insightful)

        by roca ( 43122 ) on Monday August 29, 2016 @11:20PM (#52793985) Homepage

        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.

        • Re:problems, lol (Score:5, Informative)

          by TheRaven64 ( 641858 ) on Tuesday August 30, 2016 @06:23AM (#52794907) Journal
          The real problem with C is that WG14 sat on its fingers between 1999 and 2011. C11 gave us:

          _Generic - Useful for a few things (mostly tgmath.h, which I've rarely seen used in real code because C's type promotion rules make it very dangerous, but it was quite embarrassing that, for 12 years, the C standard mandated a header that could not be implemented in standard C). Existing compilers have all provided a mechanism for doing the same thing (they had to, or they couldn't implement tgmath.h), but it was rarely used in real code. Oh, and the lack of type promotion in _Generic makes it annoyingly verbose: int won't be silently cast to const int, for example, so if you want to handle both then you need to provide int and const int cases, even though it's always safe to use const int where an int is given as the argument.

          _Static_assert - useful, but most people had already implemented a similar macro along the lines of:

          #define _Static_assert(x) static int _assert_failed_ ## __COUNTER__ [x ? 1 : -1];

          This gives a 1 or -1 element array, depending on whether x is true. If x is true, the array is optimised away, if x is false then you get a compile-time failure. _Static_assert in the compiler gives better error diagnostic, but doesn't actually increase the power of the language.

          And then we get on to the big contributions: threads and atomics. The threading APIs were bogged down in politics. Microsoft wanted a thin wrapper over what win32 provided, everyone else a thin wrapper over what pthreads provided. Instead, we got an API based on a small company that no one had ever heard of's library, which contains a clusterfuck of bad design. For example, the timeouts assume that the real-time clock is monotonic. Other threading libraries fixed this in the '90s and provide timeouts expressed relative to a monotonic clock.

          The atomics were lifted from a draft version of the C++11 spec (and, amusingly, meant that C11 had to issue errata for things that were fixed in the final version of C++11). They were also not very well thought through. For example, it's completely permitted in C11 to write _Atomic(struct foo) x, for any size of struct foo, but the performance characteristics will be wildly different depending on that size. It's also possible to write _Atomic(double) x, and any operation on x must save and restore the floating point environment (something that no compiler actually does, because hardly anyone fully implements the Fortran-envy parts of even C99).

          In contrast, let's look at what WG21 gave us in the same time:

          Lambdas. C with the blocks extension (from Apple, supported by clang on all platforms that clang supports now) actually gives us more powerful closures, and even that part of blocks that doesn't require a runtime library (purely downward funargs) would have been a useful addition to C. Closures are really just a little bit of syntactic sugar on a struct with a function pointer as a field, if you ignore the memory management issues (which C++ did, requiring you to use smart pointers if you want them to persist longer than the function in which they're created). C++14 made them even nicer, by allowing auto as a parameter type, so you can use a generic lambda called from within the function to replace small copied and pasted fragments.

          Atomics, which were provided by the library and not the language in C++11. Efficient implementations use compiler builtins, but it's entirely possible to implement them with inline assembly (or out-of-line assembly) and they can be implemented entirely in terms of a one-bit lock primitive if required for microcontroller applications, all within the library. They scale down to small targets a lot better than the C versions (which require invasive changes to the compiler if you want to do anything different to conventional implementations).

          Threads: Unlike the C11 mess, C++11 threads provide useful high-level abstractions. Threads that can be started fro

          • Re:problems, lol (Score:4, Insightful)

            by Aighearach ( 97333 ) on Tuesday August 30, 2016 @05:21PM (#52799119) Homepage

            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.

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

        I did, and that's why I'm using Python. I'm capable of writing web services in C, but who the hell's got time for that craziness? Also consider Amdahl's Law [wikipedia.org]: in most of stuff I write, the "running code to process data" bit is a teensy portion of wall clock time. Much more is spent in socket handshaking or waiting for database queries to finish. Out of a 50ms request lifecycle, perhaps 1ms is spent inside a box that I have complete control of. Even if I rewrote it in assembler (C is for high-level pansies) t

        • Re: (Score:3, Insightful)

          by Anonymous Coward

          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

          • by tomhath ( 637240 )

            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!

            Your Python program compiled too. If you didn't test every path through the program written in C or python you probably did miss some bugs. Don't blame the language.

            Studies consistently show that the number of bugs per thousand lines of code is roughly the same across different languages. For the same functionality, a verbose language like Java will have more bugs than a concise language like Python. Go ahead and write websites in C if you want.

          • I write web services for remote clients to send information to. 50 msec includes the time to establish a TCP connection to the nginx frontend (written in C!), then to run a little bit of Python code to massage the request and either store it in a database (probably written in C, or maybe Java) or fetch data from one, then to return the results to the remote client. At a previous employer, my code did that about 80,000 times per second, averaged 24/7. At the shop before that, we load tested to 500,000 reques

      • The most valuable resource is my time. I wouldn't use most languages for heavy number crunching (C, or well-written C++), but I wouldn't use C for something that needs to run every night and generate a report. Who cares if it takes 2 seconds as opposed to 1?

        Heck, I remember when hand-optimizing the generated asm from a c compiler was a required profession. Of course, optimizing writing code is going to happen really freuently - those who can fix the problem have a strong incentive to do so.

      • We have learned a lot since C was invented. Everything has weaknesses including C. Technical problems with C include but are not limited to:

        * lack of memory safety and the resulting security issues
        * null pointers, Tony Hoare's billion dollar mistake
        * lack of import mechanism, and the resultant mess of includes

        The main strengths of C are its maturity and ubiquity.

        The most obvious competitor to C is Rust. That's currently less mature and less ubiquitous, of course. No tool is perfect.

      • by mwvdlee ( 775178 )

        Pointer math is a problem.
        And if pointer math isn't a problem for you; you have a problem.

        Seriously though; pretty much any language is nicer to work with than c. c is still here because none of those language can do everything that c can do nor do it quite as well. It's no good having a language that can do 99% of the work better and 1% of the work not at all.

      • by DrXym ( 126579 )
        C/C++ has plenty of problems - buffer overflows, stack overflows, leaks, dangling pointers, etc. etc. It turns out that for many if not most real world applications, stability, development ease, time to market and a bunch of other considerations are far more important than raw speed. This is why higher level languages are so popular. Languages like Java, C#, Ruby, Python and newcomers like Go & Swift.

        C/C++ is finding itself relegated to systems programming and certain niches like games where speed is

    • Yeah, 'cause Rust never sleeps...
  • by Anonymous Coward on Monday August 29, 2016 @09:50PM (#52793563)

    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.

    • by Anonymous Coward on Monday August 29, 2016 @09:53PM (#52793585)
      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.
    • by Dutch Gun ( 899105 ) on Monday August 29, 2016 @11:01PM (#52793905)

      if I want something to run on most Linux distributions, as well as the BSDs with minor modifications, C is the obvious choice

      Well, C++ could make that same claim, as well as many other languages. In fact, some are arguably much *better* at cross-platform functionality.

      I think where C shines is that it's sort of a "common denominator" language. Just about every language (C++ included) can make use of a C library, or with minimal effort can create hooks into it, like with C#, Objective-C, Lua, or dozens of other languages that rely on low-level code for lots of their functionality. It's also a reasonably simple language, rather easy to wrap your head around (if written well), and is straightforward to learn, with power enough to get close to the metal when needed. So, if you write some code in C, just about anyone else can use it, even if they have to write a bit of "glue" first.

      That makes it a hell of a pragmatic choice for many projects, even considering C's more problematic aspects.

      • That's a good reason for providing a C interface, but there's no reason not to use C++ (or Objective-C) inside your library. That said, if you provide a C++ interface that uses smart pointers and conveys explicit ownership semantics, then it's much easier to machine generate interfaces for other languages (even for C) that care about memory management.
  • So what! (Score:5, Insightful)

    by no-body ( 127863 ) on Monday August 29, 2016 @10:28PM (#52793765)

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

  • by hoofie ( 201045 ) <<moc.mikdnaemearg> <ta> <emearg>> on Monday August 29, 2016 @10:35PM (#52793793)
    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.
    • Yep. Most people don't know about the semantic advantages Fortran has over C or that its syntax allows for compact expression of complex calculations. C is no more a Fortran replacement than Fortran is a C replacement.
    • by lgw ( 121541 ) on Monday August 29, 2016 @10:45PM (#52793847) Journal

      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.

      • by roca ( 43122 )

        Java is the new COBOL. Given we need a language for that role, I actually think Java's pretty good.

        • by lgw ( 121541 )

          FortyCharacterCobolNamesLikeThisForExample and all.

        • by perpenso ( 1613749 ) on Tuesday August 30, 2016 @12:52AM (#52794283)

          Java is the new COBOL. Given we need a language for that role, I actually think Java's pretty good.

          As one of my professors once argued, its usually the accompanying libraries that make or break a language in more recent years. Java's advantage is simply a "more capable" "standard library".

          Also we went recently through a phase in computer science education where people were really only taught java. Its the only tool in their toolbox.

          • by ShakaUVM ( 157947 ) on Tuesday August 30, 2016 @03:21AM (#52794535) Homepage Journal

            > Also we went recently through a phase in computer science education where people were really only taught java. Its the only tool in their toolbox.

            Yep. I went through the curriculum of the top 10 computer science universities in the country, and all of them teach either Java or Python in their introductory programming classes.

            Only a single one (Stanford) even offered C++ as an alternative.

            Which is why I'm working on a tool that will hopefully make C++ more appealing to educators, by replacing the traditionally horrendous error messages with an easy to read paragraph targeted at newbie programmers. I'll be presenting it at CppCon next month.

            • In the days before Cray started his own company, CDC computers used to run one Fortran compiler for debugging (cos you could understand the error messages) and another to produce the working code (cos it ran massive faster).
          • Just make your own library. If the language won't let you make a suitable run time library from scratch then it's deficient.

        • by Anne Thwacks ( 531696 ) on Tuesday August 30, 2016 @03:50AM (#52794619)
          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.

          • And people forget what COBOL means - common business oriented language. COBOL is all about data in and data/reports out. It is not about pretty, new shiny.

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

            That's true, in theory. I've also seen COBOL code that's nearly as unreadable as the worst Perl crap I've seen, and I'm pretty sure the reason the original author died is suicide after the boss wanted him to make changes to the damn thing.

      • Smart cards with JCOP running Java on top of an 8051, existing today. Slow as hell though.

      • Java isn't a bad language. It's a constrained language, but in general it's constrained in a good way. It may make it difficult to write the best solution, but it makes it impossible to write the ten worst solutions and easiest to write a not-too-bad solution to any given problem. It also strongly encourages modularity and provides tools for reducing privilege for parts of a program so that you don't need to trust all programmers in your address space equally. It's certainly not the best tool for all jo
    • As far as I know, JPL is still using a program written in the late '70s or early '80s by Dan Alderson [wikipedia.org] in FORTRAN for spacecraft navigation and maneuvering. The language it was written in may not be popular now, but the program Just Works, so there's no reason to re-invent that particular wheel.
      • BLAS and LINPACK are used everywhere in Engineering tools. Numpy, Scipy, Matlab, Mathematica, et al are all just pretty wrappers on top of the FORTRAN that does the heavy lifting. It's why compiling from source also requires a Fortran compiler.

        They've been vetted, tested, vetted more, and been running Engineering applications since the 70s.

      • Old FORTRAN code lives on behind the GUI or web interface. I once ported some old mainframe computational chemistry code for a very large international corporation. They wanted their legacy code moved from mainframes to MS Windows. At startup their legacy FORTAN code interactively queried for six parameters. I created a Windows front end in C that had a dialog box with six entry fields. After the user pressed the OK button and the six parameters passed verification in the C code they were plugged into the e
        • Having something that 'just works' is not really the prime consideration. Any rewrite has the potential to introduce unknown errors - whether from language constructs, compilation or hitting some odd use case not reached before. Older Fortran (it like that now) and COBOL are extremely well understood programs. The risk/reward of replacement in the new shiny is just not there.

          Also, most people (read those not using it) don't know that Fortran has progressed from FOTRAN IV or 77. The current Fortran has j

    • If C doesn't have it's own Facebook page, then how can Kanye give it his blessing?

  • C's problem? (Score:4, Insightful)

    by ugen ( 93902 ) on Monday August 29, 2016 @10:53PM (#52793867)

    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?

    • Re: (Score:2, Insightful)

      by Anonymous Coward

      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.

    • C does have technical problems including lack of memory safety and null pointers. The state of the art has moved on.

      Not that TIOBE has anything to do with that. But if you think C's only problems are PR, think again.

  • End of coding (Score:4, Insightful)

    by OrangeTide ( 124937 ) on Monday August 29, 2016 @11:07PM (#52793923) Homepage Journal

    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.

  • by GrumpySteen ( 1250194 ) on Monday August 29, 2016 @11:14PM (#52793953)

    Basically the calculation comes down to counting hits for the search query "language programming" [tiobe.com]

    It doesn't matter if those results are positive or negative. All that matters is the number. If you make a language and get ten billion people to post on indexed sites about how badly your language sucks, your language would take the top spot on the TIOBE Index.

    So... yeah. This is about as lame of an index as you could possibly come up with.

    • And I doubt it is very accurate. When people talk about frameworks they often don't even mention the language. Javascript are dominated by frameworks and probably extremely underrepresented using that methodology. At the last conference nearly half the sessions had to do with javascript and there were only a couple C sessions.
  • Yeah, it sucks, but, then, C not an easy programming environment.

    Pointer arithmetic aside, I remember the days when you had to run a preprocessor to be able have a C program to query a database. As bad as the code we wrote had looked for consumption by the preprocessor, the code coming out the other end of it was barely readable and nearly impossible to debug and profile.

    So we had to write stubs that return baked database data structures during development to keep our sanity and be able to even debug the t

    • Re: (Score:2, Insightful)

      by Anonymous Coward

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

  • Not everything needs to be written in C, of course. But being fluent in C before starting other projects in less demanding languages (memory management, pointers, ....) like Java offers some guarantees regarding the developer competences.
  • It's not like C is going away anytime soon, but if there are fewer new C programmers coming online, maybe I don't have to worry about being put out to pasture?

  • by l3v1 ( 787564 )
    "The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system."

    While I think TIOBE is interesting, I'd never advise anyone to either take it too seriously, or base any of the above quoted decisions on it. Deciding on used languages based on search engine results - if you do that, I'd bet you don't advertise it during your interviews.
  • by Ambassador Kosh ( 18352 ) on Tuesday August 30, 2016 @05:24AM (#52794801)

    The IEEE seems to have a much better methodology and ways to look at the data based on web, mobile, enterprise and embedded markets.

    http://spectrum.ieee.org/stati... [ieee.org]

    It just seems that the TIOBE results are much easier to bias by things like universities using a language as a teaching language. There are far more online courses on things like java and languages commonly used for web work but that does not make them more commonly used just more common to have webpages written about them.

  • If you asked Richie back in the early 70s whether he thought it would be a major language in 40 years time, I wonder what he'd say?

  • Not worth much since I'm new to programming but when I began researching which language to start with it seems almost every language refers back to C or a variant of C. It just made sense to me to start with C and that it would be a valuable skill.
  • by LichtSpektren ( 4201985 ) on Tuesday August 30, 2016 @09:16AM (#52795497)
    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!
  • by KeithH ( 15061 ) on Tuesday August 30, 2016 @09:29AM (#52795567)

    This TIOBE index relies [tiobe.com] 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.

  • by HeckRuler ( 1369601 ) on Tuesday August 30, 2016 @01:05PM (#52797281)

    It's still #2. And twice the index score of #3.

    mobile app development. ... The constraint that C object code should remain small and fast doesn't help here.

    Huh? That seems like exactly the sort of area where small and fast would help immensely.

    I still find it infuriating when I want to have half a second for this clunky program on my phone to do it's thing.

    Moreover the C programming language doesn't evolve like the other big languages such as Java, C++ and C#. There is a "new" C11 standard available but this contains only minor changes.

    The language being stable is a good thing. A shining feature. Unless you enjoy all your skills turning to dust as you have to adapt to an ever changing platform. Who likes to build a house on shifting sand?

    Yet another reason why C is getting into trouble is that there is no big company promoting the language. Oracle supports Java, Microsoft supports C++, C# and TypeScript, Google supports Java, Python, Go, Dart and JavaScript, Apple promotes Swift and Objective-C, etc. but none of them supports C publicly.

    Also kind of a good thing. Because it's "Oracle, where tech goes to die". And Microsoft, where they keep bloody changing everything because some minor boss somewhere gets a bonus if he can convince 9% of the MS developer base to register with SilverLight tools, or how Sharepoint is "the next big thing". And frankly, I was surprised that every Go project wasn't mandated to direct their users to go sign up for google+.

    C is punk. Fuck corporate.

    It's portable as all fucking get-out. Low enough that you can make it smokin' fast. And it doesn't play any games with magical crap you can't see. The code is truth in advertising (unless you fuck around with macros like an idiot), and that makes it easier to debug. And everything as C APIs, so if there's a library out there you want you can typically go hook into it. Every bloody language has weird quirks and nuances you just have to be aware of. The tools that help you use the language are where it's at. MVS, while run by Satan, is actually pretty decent. But the classic C tools of makefiles, gcc or clang, and vim are powerhouses of usability that have been refined for decades. It's not the best if you want to talk to browsers. Javascript is the defacto standard there. And it's not the best if you just want to make yet another GUI button clicker for clueless suit. And Bash or whatever script of choice glues together the solutions of yesterday. But C is what you whip out for the hard cases for real meaningful programming. And certainly for anything critical like life support, satellites, weapon platforms, or kernels.

Each new user of a new system uncovers a new class of bugs. -- Kernighan

Working...