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."
Go C!
Doesn't a dying star expand into giant before it dies?
“Common sense is not so common.” — Voltaire
Am I the only person seriously wondering how Bash went from position 72 to 20? Bash is in the top 20 programming languages... Something is wrong with the programming universe
That's insane. Exactly what are people writing in C these days???
Java will come back to number 1 in a few years thanks to Android...
Video of some good progressive thrash music
This only makes sense. The sheer flexibility of low-level access is very powerful, especially with limited resources. Same reason older hardware is also C friendly.
If computers were people, I'd be a misanthrope.
thx, bye.
I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
When I first encountered C, back when I was 14 and I preferred assembly language, I could not see the point. But as I moved beyond simple programs I quickly got it and I've been a "native speaker" ever since.
http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm
This is a measure of search popularity of a single term. Hardly a definitive comparison of the state of languages.
Is called PYPL (PopularitY of Programming Languages), and it ranked C# as #1 and C down in #5 based on a different methadology. Honestly, they both sound pretty silly to me.
https://sites.google.com/site/pydatalog/pypl/PyPL-PopularitY-of-Programming-Language
-- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
No, you aren't. I got distracted writing the same comment.
When was the last time that you sat down to do an important project and the consensus of best language choice was "bash?"
Using the TIOBE methodology, I deduce that the following activities are more popular that C Programming:
- Abduction by alien
- Going to prison
- Dying
I can't believe D (http://dlang.org) is still below the top 20, even below Ada or Bash.. I really expected it to rise up.
According to
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
it is number 35.
Is anyone really surprised by this? C is the best overall language, it spans every platform I can think of, it's the most standarized language and above all of that simple to learn and use. C is the language for real programmers, if you can't do it in C then you just can't program.
Seriously, for the last fucking time, can we stop posting on Slashdot random shit picked up from TIOBE? The TIOBE index is so completely and utterly full of fail that I can't believe people are STILL clinging onto it as evidence of anything whatsoever.
It shouldn't be traditional to do anything with TIOBE, except perhaps laugh at it or set it on fire.
So once last time, one final fucking time I'll try and explain to the 'tards who think it has any merit whatsoever why it absolutely does not.
We start here, with the TIOBE index definition, the horses mouth explanation of how they cludge together this table of bollocks they call and "index":
http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm
First, there is their definition of programming language. They require two criteria, these are:
1) That the language have an entry on Wikipedia
2) That the language be Turing complete
This means that if I go and delete the Wikipedia entry on C, right this moment, it is no longer a programming language, and hence no longer beating anything. Apparently.
The next step, is to scroll past the big list of languages, to the ratings section, where we see that they state they take the top 9 sites on Alexa that have a search option, and they execute the search:
+" programming"
Then weight the results as follows:
Google: 30%
Blogger: 30%
Wikipedia: 15%
YouTube: 9%
Baidu: 6%
Yahoo!: 3%
Bing: 3%
Amazon: 3%
The first problem here is with search engines like Google, I run this query against C++ and note the following:
"About 21,500,000 results"
In other words, Google's figure is hardly anything like a reasonable estimate because a) Most these results are fucking bollocks, and b) The number is at best a ballpark - this accounts for 30% of the weighting.
The next problem is that Blogger, Wikipedia, and YouTube account for 54% of the weighting. These are all sites that have user generated content, as such you could literally, right now, pick one of the lowest languages on the list, and go create a bunch of fake accounts, talking about it, and turn it into the fastest growing language of the moment quite trivially.
To cite an example, I just ran their query on English Wikipedia for the PILOT programming language and got one result. A few fake or modified Wikipedia entries later and tada, suddenly PILOT has grown massively in popularity.
The next point is the following:
"Possible false positives for a query are already filtered out in the definition of "hits(PL,SE)". This is done by using a manually determined confidence factor per query."
In other words yes, they apply an utterly arbitrary decision to each language about what does and doesn't count. Or to put it simply, they apply a completely arbitrary factor in which you can have no confidence of being of any actual worth. I say this because further down they have a list of terms they filter out manually, they have a list of the confidence factors they use, and it takes little more than a second to realise massive gaps and failings in these confidence factors.
For example, they have 100% confidence in the language "Scheme" with the exceptions "tv", and "channel" - I mean really? the word Scheme wouldn't possibly used for anything else? Seriously?
So can we finally put to bed the idea that TIOBE tells us anything of any value whatsoever? As I've pointed out before a far better methodology would at least taken into account important programming sites like Stack Overflow, but ideally you'd simply refer to job advert listings on job sites across the globe - these will tell you far more about what languages are sought after, what languages are being used, and what languages are growing in popularity than any of this shit.
Finally I do recall last year stumbling across a competitor to TIOBE that was at least slightly better but still not ap
Clearly C is more popular as more people complain about it sucking.
C sucks -- About 321,000,000 results
bash sucks -- About 7,500,000 results
Java sucks -- About 5,810,000 results
c++ sucks -- About 898,000 results
objective c sucks -- About 293,000 results
Join the Slashcott! Feb 10 thru Feb 17!
The bulk of my recent programming has been in Objective C but once I leave API calls my code quickly becomes pretty classic C with elements of C++. Yes I love the simplicity of a foreach type structure where it is brain dead to iterate through some set/hash/array of objects with little or no thought about bounds but once I start to really hammer the data hard I often find my code "degenerating" into c. Instead of a class I will create a structure. Instead of vectors I use arrays. I find the debugging far simpler and the attitude to what can be done changes. In fairly raw C I start having thoughts like: I'll mathematically process 500,000 structures every time someone moves their mouse and then I literally giggle when it not only works but works smoothly. What you largely have in C is if the machine is theoretically able to do it then you can program it. Good mathematics can often optimize things significantly but sometimes you just have brute manipulations that need to be fast.
.net to Java is that they often make the first 90% of a large project go so very quickly. You seem to jump from prototype to 90% in a flash; but then you hit some roadblocks. The garbage collection is kicking in during animations causing stuttering and the library you are using won't let you entirely stop garbage collection. Or memory isn't being freed quickly enough resulting in the requirement that all the users' machines be upgraded to 16Gb. Then that remaining 10% ends up taking twice as long as the first 90%. Whereas I find with C (or C++) you start slow and end slow but the first 90% actually takes 90% of the final time.
But on a whole other level my claim with most higher level languages ranging from PHP to
But where C is a project killer is the whole weakest link in the chain thing. If you have a large project with many programmers as is typically found in a large business system working on many different modules that basically work on the same data set that a safer language like Java is far far better. I am pretty sure that if the business programmers working on projects that I have seen were to have used C instead of Java that those server systems would crash more than once a minute. You can still program pretty badly in Java but a decent programmer shouldn't blow the system apart. Whereas a decent C programmer might not be good enough for a large project.
So the story is not if C is better than say Java but what is the best language for any given problem set. I find broad systems, like those found in the typical business, with many programmers of various skill levels are idea for Java. But for deep system where you layer more and more difficulty on a single problem such as real-time robotic vision that C or C++ are far superior. A simple way to figure out what is the best language is to not compare strengths and weaknesses generally but how they apply to the problem at hand. In a large business system where horsepower is plentiful then garbage collection is good and pointers are only going to be a liability. But if you are pushing up to the limits of what the machine can do such as a game then a crazy pointer dance might be the only possible solution and thus demand C or even ASM.
Lastly do you want your OS programmed in Java?
One cannot compare C to Javascript because they serve very different purposes. That list should look more like this:
Category A ("heavy duty"):
First place: C and Java, with 25% each. .NET), with 7% each.
Second place: Objective C and C++, with 15% each.
Third place: C# and Visual Basic (incl
Fourth place: Pascal and Delphi, with less than 3% each.
Category B ("light weight"):
First place: PHP and Python, with 35% each.
Second place: Perl, with 15%.
Third place: Javascript and Ruby, with 7% each.
Languages such as Lisp, Matlab, Ada, and Lua are mostly used in specific fields/environments and probably should not be included on this list.
go go!
C and C++ are still the best languages for parallelism, in particular vectorization and shared memory systems.
C is the best overall language, it spans every platform I can think of
I can think of several platforms that C doesn't easily span. Xbox Live Indie Games and Windows Phone 7 only support C#, the Web only supports JavaScript, Flash Player only supports ActionScript and other languages that compile to ActionScript bytecode, and the Java applet environment and MIDP phones only support Java and other languages that compile to JVM bytecode. Or are you counting Emscripten as "C support"?
Write "Hello World" or any other program you desire in C and in C++.
Now look at the executable size.
Run it through a profiler and see execution time.
Now ask yourself, which language would you want to use on a system that has very limited resources without breaking out the assembler?
It should be noted that for most programming languages, it is highly likely that the compiler and other code used for most if not all programming languages are written in C. If you're using Java, you're using C code. If you're using Perl, you're using C code. If you're using Python, you're using C code. And so on.
What would people switch to? Forth, Pascal?
About 25 years ago, working in an embedded product company, I had a friendly little argument with my software colleagues (me design hardware, UGH!) They insisted that there was nothing around that could compete with the C-compiler-that-later-became-Microsoft's for tight compiled code. So we had a little contest: they wrote a chunk of our kind of code in C, and I did it in Modula-2 (Logitech's compiler.) In both cases we were building reusable code with object methods.
Quite enlightening.
How the comparison would go today, given the advances in compiler optimization, I couldn't guess.
Lacking <sarcasm> tags,
C haters: told ya so.
Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
It should have been written in C
Fugue for Aaron Swartz
I find this hard to believe and I cut my teeth on Java. Must be serious problems with their polling methodology.
I swear to God...I swear to God! That is NOT how you treat your human!
Or, perhaps, it's available in environments where the others are not? Or, perhaps, there's substantial legacy products still using C?
Ok, think about the statement. Then tell me how many XBox GAMES are written in C#...
Xbox Live Marketplace has two separate environments. The Arcade environment allows C but is open only to established studios. The XNA environment, called "Indie Games" in the menu, is open to any startup with $99 per year but requires that all applications be compiled to verifiably type-safe, Emit-free, P/Invoke-free CIL, which in effect requires C#.
Oh, right:
The ratings are calculated by counting hits of the most popular search engines. The search query that is used is +"[language] programming"
So they counted desperate queries of unemployed C programmers as "popularity index".
We argue endlessly, but in the end, you can purchase the services of a vb.net, C#, Java, or php programmer cheaply, and languages like this, for all their faults will usually get the job done easily and on budget. Are they elegant? Well designed? Maintainable? No. No. No!
And it doesn't matter at all. Programming is about money or masturbation. Like cheap carpet in a rental unit, easy-to-use languages are more cost effective, even if you have to replace them often. You want art? Take up painting.
Please do not read this sig. Thank you.
CGI works on the Web
Not on the client side, which means everything is a page view or a form submission, not the dynamic DOM modification that web application users expect. How would you expect, say, an online mapping application or a real-time-updating feed to work if JavaScript is turned off?
there is an exposed C API for the xbox
Only for established studios, not startups using the "Xbox Live Indie Games" route to market. Please read my reply to interval1066.
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.)
Thanks to Oracle's slimy legal maneuvers, Java is now considered almost as big a proprietary tie-in risk as C-sharp.
Table-ized A.I.
Interesting to see SAS coming close to the top 20, especially since the corporation continues to claim that it isn't a programming language at all. http://www.bailii.org/ew/cases/EWHC/Ch/2010/1829.html
Moreover the non-search engine support for SAS is extensive and usually the first resort, so the TIOBE methodology is probably biased against SAS.
Yes but which one is number zero?
Have gnu, will travel.
Dr. Who has (at least usually) been recorded in Cardiff Wales, with a mostly-Welsh cast. The Seventh and Tenth Doctors were played by Scottish actors, but the other main-sequence and alternate doctors have almost all been played by Englishmen (some women, one British-Swazi, and a few who Wikipedia doesn't give enough information about.)
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
C programmers have an understanding of the machine they use that Java people will never be able to reach. The only advantage Java programmers have is that they are cheap. Or better, they look cheap to management. In fact they are hugely expensive because most will write code that sucks badly.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
It's the only way you can write a model that is portable to nearly every platform. Sure C# is ok, but its slow and only runs on Windows stuff and Linux (with whatever that portable C# implementation is). But C++ and C can talk to Objective C, which means you can use it as a model (logic layer) on iphone, build around it for your desktop apps, and even re-use it in a web service.
This is my sig.
64k of C#? I don't even think you could get system... well, anything in there. But I know that Action, a lightweight C derivative for Atari, fit nicely in a 16k cartridge and generated compiled code that hauled ass.
This is my sig.
For us musicians, C has been music to our ears all along. As is this news!
I think Stackoverflow is better indicator.
http://stackoverflow.com/tags?tab=popular
All the posters saying that C is just for embedded programming are high.
Node.js's platform layer is written in C.
Perl is written in C.
Python is written in C.
Ruby is written in C.
The non-Erlang parts of Erlang are written in C.
The non-bootstrapped parts of Haskell (GHC) are largely written in C.
Some versions of Google go are written in C.
Python, Ruby, Haskell, Java, Node, Rust, Go, Perl and Erlang all are natively extended via C code (some of these offer additional options, some dont)
Most operating systems include healthy amounts of C code.
The C ABI is the defacto standard for compatibility between compilers and languages.
Your computers wouldn't be the same without modern C software.
I was crazy back when being crazy really meant something. (Charles Manson)
Follow the money.
Doug Crockford has a pretty good talk on why Java is crap. It's online. And he's quite right.
I found the damn thing so annoyingly bad I ended up blackholing java.com just to it never installs itself again. I was tired of deleting it. Funny how those odd freezes and crashes went away since I did this and i turns out I miss nothing. Maybe twice a year something goes "y u no have java?" and I close the window. Good riddance.
Need Mercedes parts ?
Objective-C++ is a COMBINED language with Objective-C and C++ and Objective-C itself is as much C as C++ is also C.
Objective-C is not bridging with some API, module, or library to talk with C code-- it IS C code. C++ and Objective-C both were made to bring OOP to C while KEEPING the C language; but they made different design choices up front. Objective-C was bigger on SmallTalk than C++ which just couldn't let go of obsessions over issues like the cost of runtime binding or making compiler authors suffer for decades... (BTW, a nice read http://yosefk.com/c++fqa )
Personally, I am still a fan of plain old C.
Democracy Now! - uncensored, anti-establishment news
A friend told me to see beyond C. I misheard him and instead rented a DVD of Beyoncé...
So say we all
C#, VB at all compile to some proprietary bytecode which is not only a bit slower than native code, but also requires a _huge_ .net runtime.... which is not even common on Windows systems. Huge systems also tend to break.
On the other hand, there are systems like Lazarus where you have a component library compatible to Delphi made by the same guy who designed the library for C#. You write your program, and you simply compile it for just about any platform. At work we have Linux, MacOSX (Intel) and even Win32. We could just as well compile it for Android or Windows CE, it doesn't matter and you always get native code running on the bare system with native controls which always look like they are supposed to do.
That is normal, write once compile everywhere. And it has been for decades now. (Outside of the Windows Fanboy community of course)
Premature celebration much?
....
Trends show that it's just a random spike in C's index, which is pretty much gone now.
It doesn't look like a "random spike to me" - quite the contrary - the trend graph appears to show that C's popularity has hardly changed in the last decade
I think it's significant that lower powered devices such as Arduinos are starting to become more popular, and C is the natural if not the only choice for a lot of these types of chips.
it all depends on the situation. C++ is kinda singled out by being to complex.
Currently I'd go for this:
bash (or whatever shell you like) for file/text table oriented tasks
Assembler for small embedded systems (i.e. =ARM)
Forth if you can use it instead of C
C for simple network tasks without string processing
node.js for complex network tasks with string processing
Lazarus/Pascal for GUI software
Lisp/Prolog for symbolic computations
All of those are more or less platform independent.
Beware of shops which are standardising on a single language in order to save costs or anything like that. The "perfect language" has not yet been invented and probably will never be. Languages trying that usually fail.
The good thing about C is that it doesn't try to be a high level programming language. It tries to be "comfortable assembler". That's why you will so often find people implementing concepts from other languages in C. For example the Windows window message management (for things like mouse clicks and key presses) is just like Smalltalk. C doesn't try to be a full programming language, it tries to be a blank slate.
*Sigh* do we have to go through this language war crap again?
Not vs. a rootkit driven driver - As it can "penetrate" object protections via its privelege level of operations (ring 0/rpl 0/kernelmode).
* Thus - Even OOP protections of object data & functions FAIL vs. that type of threat!
(It's also why, on the 'flipside', for instance/example, KEYBOARDS WORK ON ALL YOUR PROGRAMS from 1 single polling driver too - it can "peer into" ALL usermode spaces!)
APK
P.S.=> Just some "Food 4 Thought" about a blatant FAILURE of OOP, whereas it is great in usermode/rpl 3/ring 3 against other usermode apps, but FAILS vs. a wide threat out there NOW, & for years/decades now...
... apk
the Web only supports JavaScript [...] and the Java applet environment and MIDP phones only support Java
it is not common but for really complex applications Java (applets or Webstart) do run in your browser
Only in browsers that run on platforms to which the Java applet and Web Start environments are ported. The fastest growing platforms for web browsing (iOS and Android) notably do not support these environments as far as I can tell.
and kick the shit outta Javascript for functionality
A lot of Java APIs that interact with the local machine require applets to have been digitally signed with a code signing certificate. By the time analogous APIs were implemented in the HTML5 DOM for JS to use, developers found secure ways to sandbox them. One example is the File API. To read local files in a Java applet, for example, the developer needs to buy a code signing certificate and digitally sign the applet. To read local files in a web application running in a browser that supports the File API, an application is limited to those files that the user selected using the "open file" dialog or dragged in from the file manager, but no commercial certificate is needed.
performance
Java tends to have an annoying slow start-up time for the first applet that one runs in a particular browsing session, while the JVM reads the entire rt.jar from the disk. JS, on the other hand, is already loaded.
and cross-browser compatibility
Good luck getting a Java applet or a Java Web Start application to run on iOS, Android, Windows RT, or any other tablet operating system.
There have been headlines in other news items that C# is the language of the year, but this is based on a new language index that really doesn't have the history to be authoritative.
So unless some index methodology is old, it is no good. I wonder how people get the motivation to create something better nowadays.
The TIOBE index has a lot of problems, but it has been going for some time and it is reasonable to use it to compare gross trends in language popularity.
So the TIOBE index has a LOT of problems but it's old enough AND the author thinks it's reasonable.
Well, I'm satisfied.
none
Applets may be self-signed, although with a self-signed certificate the user is prompted to accept it
I was under the impression that trying to load an applet signed with an untrusted certificate would produce a big warning intended to scare off home users, just as Firefox does for web sites that use a self-signed SSL cert.
Well, that is a delberate choice of the manufacturers of those platforms to silo themselves from the rest of the computing environment.
That or a deliberate choice to extend battery life or to avoid threats to the integrity of the execution environment. Java, for instance, has ended up exploited fairly often. In fact, the strict W^X architecture of iOS doesn't allow any JIT compilation except in certain iOS components such as the program loader and the Safari JS runtime. A writable page can never be flipped from writable to executable.
So I take it you have the same problems with Java, since it uses an even more inefficient virtual machine, right?
Try again.
Yes, Java is bad in that regard. That does matter less however since Oracle has officially declared Java to be dead a few years ago. They claimed that "Java will not be the next Cobol", saying that it will not reach a stable version you can just run code on for decades.
The problem with that sort of bytecode is that it has no advantages over native code. I mean I can understand Javascript which will now typically be compiled to native code at runtime. What you gain from that is platform independence (it's all text) and the source code.
The problem with that sort of bytecode is that it has no advantages over native code.
This is not entirely true. One advantage bytecode has is that it can be Just In Time compiled into native object code that is optimized for the specific architecture. This is less cumbersome than dealing with architecture specific blobs or recompiling source. Also, .NET assemblies contain pretty much all of the type metadata necessary to decompile them into extremely readable high level languages e.g. C# or VB.NET. Because of this, unless they're obfuscated, .NET assemblies are effectively open source.
Or you could use the PIMPL design approach if you really want to "hide" things as seen here.
Basically, create a pointer to another object and then put the actual private data there. And then, you have the added advantage that you don't have to compile every that includes the .h file every time you add something to the data structure.
It's a bit of indirection, sure, but that's why C++ is so great: some of the stupidest things to do are easy (say calling a destructor explicitly), and the proper things to do are hard (oh, like trying to convert a number to a string. Frameworks make this easier, but this hasn't stopped every single large project I've ever seen from creating their own string class sometime in the distant past, which we keep using.)
-- Political fascism requires a Fuhrer.
hate the code, not the language
Is that system engineers don't like dealing with idiot Java programmers.
Damn it! I had C# in the pool. I KNEW I should have gone FLAT!
--- Say something clever. Pretend it was me. Thanks.
Every programmer should agree in that there's no good computer languages, but some languages are good for some specific software block. I agree with this article since Java has survived almost intact since the Oracle's acquisition, moreover C++ with his new features remains out of the renaissance of the multicore hype.