C Beats Java As Number One Language According To TIOBE Index
mikejuk writes "Every January it is traditional to compare the state of the languages as indicated by the TIOBE index. So what's up and what's down this year? There have been headlines that C# is the language of the year, but this is based on a new language index. What the TIOBE index shows is that Java is no longer number one as it has been beaten by C — yes C not C++ or even Objective C."
More like something is wrong with the measuring system being used.
-- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
Specifically the platforms. The boom in mobile devices all having varied hardware requires C glue for each one to let the managed stuff run. The mobile boom has ironically been a new hardware boom causing an old software boom.
Not really. While I agree that C is a bad language, it has no competition in low-level coding. With embedded systems gaining ground, more and more people will start to use it. Although C++ could take its role and it even fixes many of its shortcomings (e.g. namespaces), it's very easy to misuse, so most project leaders don't trust their collegues with it. What would people switch to? Forth, Pascal?
Exactly. When you are working in a resource constrained environment, and you want to be able to accurately predict what machine instructions will be generated from your source code, you use C. It's faster to code, and more portable than assembly language, with almost all of the control. Typically maybe 5% or less of your application needs to be really, really fast (interrupt handlers, DSP code, special communications or math or encryption libraries). You might code these in assembly, and the rest in C.
But if you're starting new big applications for the PC in C, you're probably insane.
C is a bad language to the extent that it lets do what you want, even if that means shooting yourself in the foot. A language that would marry C's strengths while providing safeguards against buffer overruns and other ills would be an oxymoron.
If you have a section of code that is particularly time critical, you could write it in assembly as many people do. I prefer to actually write it in C but check the assembly output from the compiler, and optimize the C source until I am happy with the result. In all cases I have been able to achieve my objectives this way without actually having to insert a block of assembly (not all compilers let you do that in-line). The resulting code is still very easy to read (for me down the road or anyone else) while being efficient.
C is not the Swiss army knife of software (even though if one language qualified, C would be the closest), but it has its areas of expertise. In the world of small embedded systems, there is simply no alternative worth considering (and few alternatives available.)
For desktop applications, not so great (and I speak of experience.)