Slashdot Mirror


C Top Programming Language For 2016, Finds IEEE's Study (ieee.org)

IEEE Spectrum, a highly regarded magazine edited by the Institute of Electrical and Electronics Engineers, has released its annual programming languages list, sharing with the world how several languages fared against each other. To assess the languages the publication says it worked with a data journalist and looked into 10 online sources -- including social chatter, open-source code production, and job postings. The publication has rated C as the top programming language this year, followed by Java, Python, C++, and R. From their article:After two years in second place, C has finally edged out Java for the top spot. Staying in the top five, Python has swapped places with C++ to take the No. 3 position, and C# has fallen out of the top five to be replaced with R. R is following its momentum from previous years, as part of a positive trend in general for modern big-data languages that Diakopoulos analyses in more detail here. Google and Apple are also making their presence felt, with Google's Go just beating out Apple's Swift for inclusion in the Top Ten. Still, Swift's rise is impressive, as it's jumped five positions to 11th place since last year, when it first entered the rankings. Several other languages also debuted last year, a marked difference from this year, with no new languages entering the rankings.The publication has explained in detail the different metrics it uses to evaluate a language.

29 of 315 comments (clear)

  1. As a C programmer by OrangeTide · · Score: 4, Informative

    I find the results shocking. As most people I deal with struggle to write moderately complex C programs.

    Also the use of the word "best" is highly subjective.

    --
    “Common sense is not so common.” — Voltaire
    1. Re:As a C programmer by al0ha · · Score: 4, Informative

      Nowhere in TFA does it say best - is says Most Popular, and that is not subjective.

      --
      Did you ever wake up in the morning, with a Zombie Woof behind your eyes? -- FZ
    2. Re:As a C programmer by gmack · · Score: 4, Insightful

      People struggle with pretty much every language, it's just that the bugs are different in each.

    3. Re:As a C programmer by w1z7ard · · Score: 3, Interesting

      People struggle with pretty much every language, it's just that the bugs are different in each.

      Sure, but I would argue some languages are dominating strategies over others. There are bugs which simply don't exist in some languages but do in others. Like null pointers or references do not exist in OCaml (instead, you must use the optional type explicitly).

      --

      "Recursive bipartite matching"- try it!

    4. Re:As a C programmer by w1z7ard · · Score: 5, Insightful

      C is still the most portable language in the universe. The only real language that works on all phones, in particuarl (ok, C++ does too but C is where you get all the amazing well written, optimized libraries you'd want on most devices).

      --

      "Recursive bipartite matching"- try it!

    5. Re:As a C programmer by jellomizer · · Score: 4, Insightful

      First this is from the IEEE.

      Many Software Developers are not affiliated with the IEEE as they may have followed the Computer Science discipline vs the Computer Engineering discipline.

      So for the people IEEE would survey would be Engineers and companies with a Engineering discipline.

      Now this Engineering discipline is about a make it once and make it right mentality. Meaning there is a preference towards more lower level coding, allowing detailed and measured controls over each line of code, at the expense of maintainability and programming time. C and Java is good for that type of coding.

      However the Computer Science discipline is about making it maintainable, reusable, and fast deployment. This could cause less reliable programs with harder to calculate measures on performance. So languages such as Python and .NET have more appeal.

      These different disciplines have cause many of flame war, as each other camp looks at the other guys code and says it is pure crap, because they focused so much on X and not on Y where Y is far more important and needed in real life.

      The problem with C isn't that it is a hard language. It is a very simple language. But because it does things at a lower level there is often a lot of extra work (Memory Management and Pointers) that makes it difficult to get up to speed because it requires a lot more attention to detail on how each part works. While these other language you focus more on the problem being solved, even though your solution while solves the problem could be done so much better.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    6. Re:As a C programmer by phantomfive · · Score: 4, Insightful

      Also worth mentioning that not only does C run on the most different processors, C is the most portable between languages.....that is, if you write a library in C, it can be used in basically every other language.

      --
      "First they came for the slanderers and i said nothing."
    7. Re:As a C programmer by OrangeTide · · Score: 4, Informative

      The title of the post was "C Best Programming Language For 2016, Finds IEEE's Study", but it has been edited to "C Top Programming Language For 2016, Finds IEEE's Study"

      such is life getting first post.

      --
      “Common sense is not so common.” — Voltaire
    8. Re:As a C programmer by goose-incarnated · · Score: 5, Insightful

      C is still the most portable language in the universe. The only real language that works on all phones, in particuarl (ok, C++ does too but C is where you get all the amazing well written, optimized libraries you'd want on most devices).

      It's not only the portability that matters, it's the software reuse. You write your nifty image recognition library in Java and that's pretty much the only language that can use it. Same for Python, C++, etc. Do a locate \.so | wc -l on your system - chances are that the libraries *not* written in C are a rounding error. Pick just about anything remotely useful - chances are it'd more more useful if written in C, because at the very least you can open the executable using dlopen/dlsym and invoke main() with the correct arguments.

      If you stick to a C-only subset of C++ you can write your library in C++, but at that point why bother with C++ anyway?

      --
      I'm a minority race. Save your vitriol for white people.
    9. Re:As a C programmer by gweihir · · Score: 4, Interesting

      You are certainly right about that. The nice thing about C is that the really incompetent will not get their code to run at all and weed themselves out that way. In contrast, a bad Java coder (for example) will usually get things to work, but very badly so.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    10. Re:As a C programmer by goose-incarnated · · Score: 5, Interesting

      Meaning there is a preference towards more lower level coding, allowing detailed and measured controls over each line of code, at the expense of maintainability and programming time.

      I sorta agree with the rest, but this statement is dead wrong - if you want it reusable you write it in C. Anything written in Python/.Net/etc is only usable from a miniscule subset of languages, while the libzip.so on your system is reusable from everything. This is why the practical/engineering types write it in C - if they chose Python they'll have to rewrite it should they ever decide to use some other language. When they write it in C it need never be rewritten.

      The problem with the software engineering/programming people is that they don't care about reusability, and it shows; once the project is done they move on to the next one. The people producing C libraries (like myself) are happily reusing the libraries we wrote two decades ago without having to rewrite them to use in another language. The people producing Python or C++ libraries abandon those libraries when they move to a new language - they don't have a choice.

      --
      I'm a minority race. Save your vitriol for white people.
    11. Re:As a C programmer by phantomfive · · Score: 3, Informative

      software engineering/programming people is that they don't care about reusability, and it shows; once the project is done they move on to the next one. The people producing C libraries (like myself) are happily reusing the libraries we wrote two decades ago without having to rewrite them to use in another language.

      That's quite a statement! And maybe true....

      --
      "First they came for the slanderers and i said nothing."
    12. Re:As a C programmer by beelsebob · · Score: 5, Insightful

      No, as a pretty experienced C programmer too, it's *really* hard to find people who are even vaguely competent C programmers. You only need to set most people a completely trivial problem with vague exposure to pointers/memory management and they'll trip themselves up. "Implement memmov" usually is enough to catch out 95% of people.

    13. Re: As a C programmer by Anonymous Coward · · Score: 5, Insightful

      Yep. What this article tells me is that
      good programmers have always known
      that c (and maybe c++) is where
      real work gets accomplished,
      and those that got addicted to
      interpreted crap are starting to
      realize they were wasting their
      time on hard to solve problems
      that they 'discovered' were
      actually difficult to solve with
      an interpreted language.

      Then again, I may be completely
      full of crap as I have only
      have 40+ years of experience.

    14. Re: As a C programmer by Anonymous Coward · · Score: 5, Funny

      And clearly still use a 40 character wide terminal for everything.

    15. Re:As a C programmer by Xyrus · · Score: 3, Informative

      The problem with the software engineering/programming people is that they don't care about reusability, and it shows; once the project is done they move on to the next one.

      That's a bullshit statement and you know it. The people who maintain projects like Spring, Hadoop, etc. don't give a shit about re-usability? Yeah, ok.

      The people producing C libraries (like myself) are happily reusing the libraries we wrote two decades ago without having to rewrite them to use in another language.

      And I still happily reuse Java libraries I wrote from over a decade ago without having to worry about what particular machine they're going to be run on, what OS changes have been made, etc. I haven't been doing much python programming lately, but I'm pretty sure I can run the same scripts I wrote 10 years ago and still have them work just fine today.

      In addition, there is absolutely nothing special about C. C is a language, nothing more. The compiler can produce binary lib files that can be linked in to other code, but that isn't limited in any way to just C.

      Use the appropriate tool for the job, and avoid treating everything like nail just because you only know how to use a hammer.

      --
      ~X~
    16. Re:As a C programmer by Curate · · Score: 5, Informative

      Firstly, you can't safely cast pointers to unsigned long. Unsigned long isn't guaranteed to be big enough to hold a pointer value. Secondly, (dst - src >= len) is not even close to the correct condition for testing that the buffers overlap. Thirdly, the reason for not using a backward copy in all cases is that it corrupts the output buffer in 1 of the 2 overlapping cases. Those three huge errors aside, you make some good points.

    17. Re: As a C programmer by warm_warmer · · Score: 4, Insightful

      Personally, I like Ruby.

      In all seriousness, arguments along the lines of "very few people are competent C programmers" in my experience can be generalized to "very few people are competent <insert any programming language here> programmers". Yes, C is a more challenging language because it requires very strict discipline to do well, but 8+ years in the industry has shown me that good coders are the exception.

    18. Re:As a C programmer by warm_warmer · · Score: 3, Informative

      Also worth mentioning that not only does C run on the most different processors, C is the most portable between languages.....that is, if you write a library in C, it can be used in basically every other language.

      There can actually be surprising gotchas regarding portability. Good examples:

      • - dereferencing pointers to multi-byte values can cause errors on some processors when the pointer address isn't word-aligned, but will work just fine on others
      • - you can't make any assumptions around native word sizes without risking portability issues. This means being very explicit with your types (including <stdint.h> and being super careful about explicitly casting while bit shifting
      • - ... you get the point

      That's definitely not to say that you *can't* write portable code, just that C libraries may not be as plug-and-play as you'd like, often in surprising and dangerous ways.

    19. Re: As a C programmer by Dutch+Gun · · Score: 5, Insightful

      I'd say that "good programmers" can and do learn a variety of languages, and will use the most appropriate one for the task at hand. There's nothing wrong with getting down to the metal when requirements call for it, but doing so is foolish for many types of projects where top performance isn't a requirement. I'm a game developer, so I live and breathe C++ of course. But I write my tools in C#, and our game's scripting language is in Lua.

      Why C# for tools? Because it has reflection, and a fantastic library for all sorts of serialization, networking, and UI support.

      Why Lua for game scripts? Because then we can recompile and reload our game scripts on the fly, without even stopping the game.

      Which programming language is "best"? It's a stupid question to start with, because the only reasonable answer is "it depends on what you're looking for in a language".

      --
      Irony: Agile development has too much intertia to be abandoned now.
    20. Re: As a C programmer by RavenLrD20k · · Score: 3, Interesting

      Yeah, he really needs to get up with the times.  80 Character punch cards are wh
      ere real programmers get jobs done. Hell, I'd write this post in COBOL but Slash
      dot would block it saying that I'm yelling.

  2. 5 month too early??? by matthelm007 · · Score: 5, Funny

    I don't think 2016 is over yet, is it? Looks like someones pointer overflowed!

  3. No jobs for C by Shompol · · Score: 4, Informative
    I spent some time looking for a position that required C a while back. Nobody hires for C anymore. Even shops that actually use C are too ashamed to admit it and advertise their positions as C++. So, looking at TFA:

    We measured the demand for different programming languages on the CareerBuilder job site....Because some of the languages we track could be ambiguous in plain text—such as D, Go, J, Processing, and R—we use strict matching of the form “X programming” for these languages.

    So off to CareerBuilder and i typed in "C programming", with quotes. Result: electrical engineering positions, other non-developer positions and false-positives. Conclusion: C is used but seldom by developers.

  4. "syntactic sugar" except for OOP by mykepredko · · Score: 4, Interesting

    I would agree with you except for the fact that Java, C++, C#, Objective C and even Javascript all have Object Orientated Programming aspects to them which is much more than "syntactic sugar" (which is a great term).

    Unfortunately for some, C saddles the user with the dreaded pointer. I'm not sure how pointers are taught today, but "back in the day" when I was taught pointers in university, the approach taken was pretty sadistic with the goal of instructors to demonstrate their intellectual superiority over their students by showing (and testing) the most bizarre and unlikely combinations of * and &. I suspect that this is reason for the fear of C and pointers (when all you really need to know about pointers is how to pass data to and from methods and how pointers can be used with strings).

  5. Cant say i'm surprised by maliqua · · Score: 3, Insightful

    Given the popularity of arduino and similar embedded devices that favor C I'm not really surprised at all to find C is still incredibly wide spread and popular

  6. Re:Object-oriented is a fad by phantomfive · · Score: 3, Insightful

    Object-oriented is a fad!

    I wouldn't have believed you 10 years ago, but now OOP is out and uncool. The new hip people all program in functional style (and OOP is messing everything up). I'm waiting for someone to discover the new imperative programming paradigm.

    --
    "First they came for the slanderers and i said nothing."
  7. Not a Surprise by ewhac · · Score: 5, Funny

    The "winning" language was going to be Python, but a buffer overflow error caused C to be output at the top of the list.

  8. As a perl developer... by CaptnCrud · · Score: 4, Funny

    does this mean I can raise my rates? : p

  9. Re:Country? [Re:As a C programmer] by Tablizer · · Score: 3, Informative

    No. Let me try to rephrase it.

    The increase and/or popularity of C may be a result of embedded programmers working for manufacturing companies, who are mostly NOT in the USA or Europe. (At least manufacturing is not growing in here.)

    Thus, if you live in the USA or Europe, you probably should NOT take these numbers (popularity) as a sign that C is a good employment opportunity. The growth is not where you live.

    Being Slashdot content is written in English, I assumed mostly USA or UK readers. Perhaps I should have stated that. At least that's who my target audience for the location warning.

    Clear now?