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.
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
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 that i've dug properly into their methodology!).
I don't think 2016 is over yet, is it? Looks like someones pointer overflowed!
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.
>C and assembly are all you need to know.
Neither will do for designing digital logic.
We use HDLs to create the logic that makes the instructions. Instructions are way too high in the stack.
Verilog sucks and System Verilog makes amends, but neither is worthy of VHDL.
VHDL's syntax sucks because it's based on ADA. But the execution model makes sense, unlike Verilog.
C will fail to help you make a chip. System C exists, but seriously, don't go there.
MyHDL is a python HDL which should be awesome, but it isn't.
But C is most certainly not all I need to know.
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
The summary makes it clear that they differentiate between C and C++
Sounds to me like more people have started to program for microcontrollers with integrated memory.
Assembly and C are pretty much the only viable languages for them. Possibly a subset of C++ can be used.
Until after all that work getting it done you realize it needs to move to a different processor and/or operating system.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
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).
Mimetics Inc. Twitter
I have seen most code written in mostly C and compiled in a C++ compiler. (They often will use those nice C++ extras)
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
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.
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
puhlease
That's what the Lisp folks usually say: it can be any paradigm you want, even one you made up.
(Which can back-fire when you use it to model how your head works, leave the company, and the new guy discovers you are insane by his/her standards.)
Table-ized A.I.
C is actually quite portable. But documenting it correctly so that someone else (or you a few years later) can understand what's going on it a beast.
C is more portable than either assembler or C++ (to bracket it with similar languages). It's not the most portable, for that you need either an interpreted language or one that runs on a virtual machine. Like Java, Python, Smalltalk, Ruby, etc., but it's probably the most portable language that compiles to native code.
I think we've pushed this "anyone can grow up to be president" thing too far.
Object-oriented is a fad!
So is IPv6!
javascript is a good language since it runs in the most trusted sandbox, your browser.
C is just a glorified macro assembler. Real programmers use butterflies anyways.
Nice. 'course, there's an Emacs command to do that: C-x M-c M-butterfly
[I actually have that comic taped to my door.]
It must have been something you assimilated. . . .
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?
wtf is R
The "winning" language was going to be Python, but a buffer overflow error caused C to be output at the top of the list.
Editor, A1-AAA AmeriCaptions
does this mean I can raise my rates? : p
Who cares? Are you implying those controllers should be written in assembly? I'm not sure where your post is going.
C fucking rules. Interpreted drools!
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 work in that language. In early 2012, I didn’t know Java at all. When I found out that the language I needed to learn for a particular project was Java, I just learned it over about a month, although I did spend the next few months learning the finer points, more APIs, etc.
The reason I’m not really that baffled is that I’m this way when it comes to video games. About the only one I would ever play was Age of Empires (all versions). Recently, I’ve picked up Minecraft, but I don’t want to get completely sucked in because I have other things in my life I have to do. That being said, I’m not fiercely loyal to AoE. I just like it and played it enough to get good at. And as a life-long Lego fanatic, Minecraft appeals to me. I don’t live in fear that I won’t be able to play my favorite games.
What if you need to talk to hardware (as system engineers typically do)?
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?
Table-ized A.I.
I've used and modified C programs that took SPICE output to optimize IC circuit speed, and interfaced with part of Verilog to calculate gate loading and speed. C was essential to our process of chipmaking.
Contribute to civilization: ari.aynrand.org/donate
Never heard of SystemC?
Of course I have. I mentioned in the post.. "C will fail to help you make a chip. System C exists, but seriously, don't go there."
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
Then, sure, use C. I'm not saying C is a bad language, only that there is a very good reason to use javascript, namely, if some shady person told you that they have an awesome app written in C, Flash, or javascript. I'd go with javascript, as I'm not about to build a VM to test a single app.
What if you need to talk to hardware (as system engineers typically do)?
There's espruino, javascript for microcontrollers, which supports peek()/poke()/usr() and similar.
But really, the overhead is enormous, so unless cycles and bytes don't matter, it's not the way to go.
Lots and lots of embedded work being done in the US. Anyone who makes devices. Internet of Things, smart phones, dumb phones, automotive ignition, microwaves, toys, medical devices, anything anywhere that uses Linux, the traffic light at the corner, the security checkpoint at the airport, etc. Oh wait, encryption too, it's usually a mix of hardware, assembler, and C in many products. And the implementation of most scripting languages and their runtime code... All of that is happening within the US. And it's happening in other countries too of course, C isn't bigoted.
Where the devices are manufactured does not tell you anything about where the devices are designed and programmed. Sure, there may not be "growth" in C in the US, but growth comes and goes which means that the hordes of programmers in a fashionable language this year may be out of work in five years (after having to train their cheap replacements).
It's usually easier and cheaper to co's for them to be close.
Table-ized A.I.
I would hire mysidia over you any day. The whole point of common library functions is someone writes something once, and make it perfect, and then re-use it until the end of time. A good programmer can re-invent the wheel. A great programmer knows where all the wheel stores are, and the pros and cons of each one. This isn't 1988 anymore where you have to write all your own header files from scratch in isolation.
HA! I just wasted some of your bandwidth with a frivolous sig!
You design in location A, and you can manufacture *anywhere*. It helps if manufacturing is closer to location A during design, because you're more interested in quick turnarounds than in lowest possible cost. Once you're building in bulk it's not that important. And countries that are currently big on manufacturing cheaply are not very good at designing well. And the big design places are still the US, Europe, Korea, Japan. Those are where the big headquarters are, but not necessarily where the stuff gets put together.
Until after all that work getting it done you realize it needs to move to a different processor and/or operating system.
Yeah, look how poorly that turned out for Linux when they wanted to port it to something other than x86/32...
I'm a minority race. Save your vitriol for white people.
No, as a pretty experienced C programmer too, it's *really* hard to find people who are even vaguely competent C programmers.
Big deal. Try finding vaguely competent PHP programmers or LAMP Webstack programmers in general - that's a real drag.
Finding competent C programmers is probably compareatively easy, because whoever picked up C probably knows what he/her got him/herself into. At least after a week or so. So whoever voluntarily programms in C usually knows what problems they'll be facing.
We suffer more in our imagination than in reality. - Seneca
Underrated.
There's nothing "unsafe" about pointers. Compromises of safety occur as a result of using pointers *wrong*.
There's plenty unsafe about programmers who don't understand what they're doing, and/or are careless, and/or assume that libraries that are black boxes beyond the API level to them are inherently safe.
Unfortunately, the typical metric for hiring programmers is "do you have a degree" rather than "do you know what you're doing."
I've fallen off your lawn, and I can't get up.
I'm sure the sudden resurgence of C (don't call it a comeback, it was here all along) is because of the sudden Internet of Things craze. I work in embedded systems and there is a lot of interest in "smart" devices right now. All those micro controllers going into those "smart" devices are going to use C, and that's often your only option. So, it's no surprise to me that C is back on top.
I also like to point out that my favorite programming language is (quite often) the one your favorite language is written in ;)
For complicated products like photo-copier software, perhaps, but I'm thinking more of simpler gizmos, like the fan and toilet seat described earlier. That's where I see an increase computerization. The complicated things had chips for decades, but crock-pots, Barbies, etc. are getting them too now.
Table-ized A.I.
It's a case of critical needs....
C -- memory mgmt/direct access (rigid -- ok, lots of freedom but you can get hurt quick)
Java -- Object oriented (OOA/D) (semi rigid)
Pyhton -- lose the type safety for ease of development (loose)
C++ -- utmost flexibility (looser)
And if you're "struggling" with "moderately complex" programs, perhaps what you learned about programming wasn't adequate. Maybe you're trying to make it be java.
Of course, I'm old school, and when I work on a moderately complex program, I flow chart it... and I can code directly from that.
mark
Look at LLVM as an instructive example. It's a large complex beast written in heavy C++, but there are bindings for every language you'd ever want to seriously write a compiler in.
Not a great counterexample - The LLVM C bindings are maintained by hand and all of the other bindings are machine-generated from the C bindings.
IIRC, you're involved with LLVM in some way, shape or form. How the heck do you regression test that hand-hacked stuff? I've come to realize lately that even the most trivial of refactorings can be dangerous. I suspect that the reason that the most trivial code changes are so dangerous is because when something seems trivial, we (or more accurately, I) lose perspective sometimes of the big picture and how far out things can be very loosely coupled. I'd be curious to know how you manage that kind of stuff on something that's so difficult to debug when it goes wrong and yet requires hand manipulation of certain things. Surely most of the LLVM guys are smarter than I am and I'm sure it would be automated if there weren't a darn good technical reason to have it that way.
If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.
I've used and modified C programs that took SPICE output to optimize IC circuit speed, and interfaced with part of Verilog to calculate gate loading and speed. C was essential to our process of chipmaking.
Fair enough. I was really aiming at HDLs for digital logic, but I didn't write with sufficient precision.
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
I am working on http://c.happycodings.com/begi... to make c examples. I think C is the BEST