Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Java Programming Python

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

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

C Top Programming Language For 2016, Finds IEEE's Study

Comments Filter:
  • As a C programmer (Score:5, Informative)

    by OrangeTide ( 124937 ) on Wednesday July 27, 2016 @03:01PM (#52593363) Homepage Journal

    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.

    • Maybe you're dealing with the wrong people? Or they're used to dealing with simple tasks.
      • by beelsebob ( 529313 ) on Wednesday July 27, 2016 @04:43PM (#52594479)

        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.

        • by Anonymous Coward on Wednesday July 27, 2016 @05:03PM (#52594643)

          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.

          • by Anonymous Coward on Wednesday July 27, 2016 @05:21PM (#52594815)

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

          • by warm_warmer ( 3029441 ) on Wednesday July 27, 2016 @09:07PM (#52596085)
            Personally, I like Ruby [twitter.com].

            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.
          • by Dutch Gun ( 899105 ) on Wednesday July 27, 2016 @10:11PM (#52596359)

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

        • And the reason for that is that too many so-called "programmers" are shit because they haven't cut their teeth on a real programming language. They need something that holds their hands at every step, isolates them as much as possible from the underlying hardware and OS, and really don't have a clue as to how computers work.

          Reading a few O'Reilly books might cut it for web monkeys, but then again, anything you can learn from an O'Reilly book can also be learned just as well by someone in India or eastern E

        • by mysidia ( 191772 )

          "Implement memmov"? WTH would you do that? There's a reason that memmov() is a Library call.

          It's rough to implement such subroutines accurately; even if you know what you are doing.

          You don't need to be capable of doing low-level coding on a whim to be a competent C programmer.

          Sounds like you're expecting the average C programmer to be a low-levell 3-Star or 4-Star pointers expert, and your standards may be unreasonably high, there.

          • You would need to implement memmove because, believe it or not, there are people out there who implement the libraries that memmove is implemented in. There are also people out there who implement libraries that need to know how to at *very* least do basic pointer operations, and how to work with raw memory.

            As I said - it's very hard to find genuinely good C programmers - most ignore how very very simple functions are implemented.

            For reference, a naïve (acceptable in an interview) implementation of me

    • Re:As a C programmer (Score:5, Informative)

      by al0ha ( 1262684 ) on Wednesday July 27, 2016 @03:09PM (#52593477) Journal
      Nowhere in TFA does it say best - is says Most Popular, and that is not subjective.
      • Re:As a C programmer (Score:5, Informative)

        by OrangeTide ( 124937 ) on Wednesday July 27, 2016 @03:28PM (#52593669) Homepage Journal

        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.

    • by gmack ( 197796 ) <gmackNO@SPAMinnerfire.net> on Wednesday July 27, 2016 @03:09PM (#52593485) Homepage Journal
      People struggle with pretty much every language, it's just that the bugs are different in each.
      • Re: (Score:3, Interesting)

        by w1z7ard ( 227376 )

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

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

        They're not "bugs" but features. Like languages, some are more popular than others. :-)

      • Re:As a C programmer (Score:5, Interesting)

        by gweihir ( 88907 ) on Wednesday July 27, 2016 @04:07PM (#52594097)

        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.

    • by w1z7ard ( 227376 ) on Wednesday July 27, 2016 @03:22PM (#52593613) Homepage
      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).
      • by phantomfive ( 622387 ) on Wednesday July 27, 2016 @03:27PM (#52593655) Journal
        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.
        • Re: (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 defin

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

            When was the last time you saw someone do that?

      • I guess it depends on what you consider to be portable. Is it write one and run anywhere, or does it count if you can modify the program to suit the environment you are porting to?

      • C in terms of its primitives are portable. However if you are making a Phone App, you are not going to have a lot of luck with making a cross compiled app with a UI that will work well with iOS and Android. Because a lot of the code requires calling libraries and OS particular functions. Sure you can do it with bunch of #ifdef
        but it is nearly like writing a program over again for each system. You would be better off with a good source control.

      • by goose-incarnated ( 1145029 ) on Wednesday July 27, 2016 @03:59PM (#52594027) Journal

        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?

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

          Or you could write your library in C++ but put it behind a C interface. Then you can use all of the expressive power of C++ internally, and provide an API that can be called from any language. And it will still be very close to as portable as if it were written in plain C, because we now have decent C++ compilers on very nearly every platform.

        • by arth1 ( 260657 )

          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.

          Well, personally, I find the fortran written fast fourier tranform (fft) libraries rather useful...
          To call from C, even :)

          I'm sure there's way to create good C versions too, but the librarary sources might need a lot of macros, and leave a lot more to the mercy of compiler optimizations.

      • (ok, C++ does too but C is where you get all the amazing well written, optimized libraries you'd want on most devices).

        You have clearly never had to support on very many third-party C libraries. The standard open source ones that have been around for decades (e.g. zlib, Berkeley DB) are indeed well-written and high-quality, but they are not the common case.

    • by jellomizer ( 103300 ) on Wednesday July 27, 2016 @03:26PM (#52593651)

      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.

      • Re:As a C programmer (Score:5, Interesting)

        by goose-incarnated ( 1145029 ) on Wednesday July 27, 2016 @04:07PM (#52594101) Journal

        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.

        • Re:As a C programmer (Score:4, Informative)

          by phantomfive ( 622387 ) on Wednesday July 27, 2016 @04:36PM (#52594421) Journal

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

        • You are confusing the language and the OS feature. That libzip.so will need to be recompiled for every OS once compiled it isn't c code it is a compiled library. I could make a library in any other compiled language say FORTRAN.

          If distribution your c code and the new system doesn't have the library then you get into dependacy hell.

          Now C is considered portable because you can compile it on a different system. But that Python program I make I can run on Linux or Windows without any changes. Just as long

        • Re:As a C programmer (Score:4, Informative)

          by Xyrus ( 755017 ) on Wednesday July 27, 2016 @07:51PM (#52595711) Journal

          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.

          • 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

            You missed the point - if your library is in C, it can be used from just about every language. Your java code is reusable only from Java, or will you now claim that those libraries from over a decade ago are useful to you when you move to another language?

    • Re: (Score:2, Troll)

      by JustNiz ( 692889 )

      I don't think they even teach actual programming skills in CS degrees any more.
      As far as I can see Its now all web-based everything, and they what they are creating skilled is package/module integrators and project managers.

    • by gweihir ( 88907 )

      Well, C is "best" in the sense that it does not stand in your way. If you know what you are doing, that is very nice.
      It does not help you much either, and for the semi-competent and incompetent masses of "programmers", that is a real problem.

      Personally, I went back to C as main language a while ago after trying a number of alternatives. The only change is that I use Python as glue-code these days and withe the core-workers as C-implemented Python classes.

      Looks like I have to have a go at R some time these d

    • Personally, I am chuffed to finally be ahead of the curve! Time to grow my hipster Unix beard.

  • C is a small language, certainly compared to the others in the top of the list (Java and Python libraries are just huge). By using postings and general 'chat' about languages to gauge interest, i'm a little worried that people attempting to get their head around the larger language libraries will be taken as equivalent to what will most likely be more targeted chat about C. To me this would suggest that C is probably underscored, whilst larger languages will be overscored if using this sort of approach (not

  • by matthelm007 ( 1392603 ) on Wednesday July 27, 2016 @03:20PM (#52593599)
    I don't think 2016 is over yet, is it? Looks like someones pointer overflowed!
  • No jobs for C (Score:5, Informative)

    by Shompol ( 1690084 ) on Wednesday July 27, 2016 @03:23PM (#52593621)
    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.

    • I've mainly found only jobs for C. Because I look for Linux kernel and RTOS jobs.

      • I've mainly found only jobs for C. Because I look for Linux kernel and RTOS jobs.

        This. I simply call bullshit on the upper-OP claim that nobody hires for C anymore. I mean shit, were I work, we hire for C (and C++ and Java, depending on the product.) People don't realize how much C is around us. Thermometers, thermostats, controllers. Anything with a PIC or AVR processor most likely runs something written in C.

        Not to mention, as you said, jobs in kernel and RTOS development.

    • Look for embedded programmers, or systems programmers. Sometimes those are something besides C, but a lot of times they are.
      In other jobs I've done C programming, but only part of the time.
  • Embeded (Score:2, Insightful)

    by Anonymous Coward

    Embedded is getting popular right now, especially with IoT. Based on my experience, C is filling the role of Assembly for a lot of businesses. More importantly, this claim that C is the "top" language isn't very relevant to most developers because they won't be doing embedded work at the rate insinuated by this report.

  • by maliqua ( 1316471 ) on Wednesday July 27, 2016 @03:36PM (#52593759)

    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

  • by TheSync ( 5291 ) on Wednesday July 27, 2016 @03:52PM (#52593933) Journal

    Object-oriented is a fad!

    So is IPv6!

  • I'm about to start a project for fun using C and I was wondering what the best version would be C89? C99? C11? It seems that nothing in C99/C11 is all that compelling and I'd like to have solid multi-threaded support (POSIX threads). Any reason to use anything other than C89 features?
    • ANSI
    • I'm about to start a project for fun using C and I was wondering what the best version would be C89? C99? C11? It seems that nothing in C99/C11 is all that compelling and I'd like to have solid multi-threaded support (POSIX threads). Any reason to use anything other than C89 features?

      C99 has some really convenient features:
      - inline functions (note: these work slightly differently than C++ because they fix the problem of guaranteeing symbol generation for linkage concerns)
      - long long
      - _Bool and
      - (uint32_t, int8_t, ...)
      - // comments
      - not requiring all variables to be declared at the top of the scope
      - local scoping for for-loop variables: for(size_t i=0; ival; i++)
      - variadic macros
      - snprintf
      - designated initializers
      - restrict (for the hardcore performance sensitive folks)

      Microsoft draggi

  • by ewhac ( 5844 ) on Wednesday July 27, 2016 @04:31PM (#52594359) Homepage Journal
    The "winning" language was going to be Python, but a buffer overflow error caused C to be output at the top of the list.
  • by CaptnCrud ( 938493 ) on Wednesday July 27, 2016 @05:04PM (#52594659)

    does this mean I can raise my rates? : p

  • As someone who has written substantial code in enough languages that I’ve lost count, I am sortof (but not really) baffled by some people’s attitudes toward programming languages. Some are fiercely loyal to a particular language, willing to spent time bashing other languages, usually in ignorance of what people like about those other languages. Some people know only one language and live in fear for their lives that their one language will go out of style or they’ll have trouble finding

To stay youthful, stay useful.

Working...