Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
TIOBE : C overtakes Java as the No.1 programming language (pixelstech.net)
94 points by sonic0002 on April 9, 2012 | hide | past | favorite | 65 comments


So Scala ranks behind the Lego Mindstorms language and Visual FoxPro in terms of community popularity? Sure thing. I know that valid results don't always conform to expectations, anecdotal evidence and intuition; there's a believability limit, though, which is being crossed here. TIOBE may be measuring its thing correctly, but in that case it's measuring the wrong thing.


The TIOBE index is measuring the hits these languages get on Google, Blogger, Wikipedia, YouTube and other search engines.

See: http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_d...

It's easy to see how this measures the wrong thing. A better metric for me is the popularity of languages in open-source software, which could be measured by (say) the number of popular/active projects.

For instance take a look at: https://github.com/languages ... but this also has flaws, because GitHub is favored in the Javascript/Ruby communities and open-source C#/.NET projects end up mostly on CodePlex, a lot of Java projects are hosted by Apache, a lot of Python projects are on BitBucket and so on.

So a better metric would be to aggregate the projects from all popular project hosting services and count them, with some kind of weight attached. So for instance it would be unfair to count the lines of code in the Linux kernel, but it would also be unfair for the Linux kernel to have the same weight as some random project on GitHub that's being watched by 5 people. I would make this weight proportional to the number of active contributers, such that when a project is left unmaintained its weight will eventually drop to zero.


I would expect open source projects to have a bias toward languages inside the open source ecosystem. Specifically, languages that are open source themselves, or are historically popular within open source operating systems. I would not expect a survey of languages on the proprietary side to match very well.

That said, you wrote "a better metric" and I agree.


>So a better metric would be to aggregate the projects from

> all popular project hosting services and count them, with

> some kind of weight attached.

Great idea. Do you think you might run with this idea? I like it as a corrective to TIOBE.

On another topic: I know that TIOBE sometimes lumps several related languages together. Does anyone know if they are doing that with "Lisp"? What does "Lisp" measure? Common Lisp? Scheme? Emacs lisp? Does it measure Clojure?


Someone can and has run with it:

http://langpop.com

"Unfortunately", that someone now has a house, two kids, and more work than he can handle, and is thus looking to exit the fun and flame filled world of language popularity.

Based on Instagram's valuation, I guess I'd settle for a million for it;-)


Hi, David. I am stupid. I've checked out your site before and had totally forgotten about it.

Can you email me at lawrence @ krubner . com? I'd like to know how much you want to sell langpop for.


amount of open source code written in a particular language ≠ that language's popularity


Take a look at http://www.ohloh.net/languages - you can sort by lines or commits.


There are lots of kids programming in Lego Mindstorm. http://www.alaskapublic.org/2012/01/20/statewide-lego-roboti... "For the past four months, over 1,000 students across Alaska have been building robots – LEGO robots..."

I imagine based on the fairly few (if enthusiastic) posts about Scala on HN that Lego Mindstorm programming far outstrips Scala programming in the US.



It would strongly violate my expectations for Scala to be more popular than LabVIEW (which is NOT just "the Lego Mindstorms language") or Visual FoxPro.

The "community" they're measuring is not the HN community, which is not even close to a representative sample of engineers worldwide.


  > It would strongly violate my expectations for Scala to be
  > more popular than LabVIEW (which is NOT just "the Lego
  > Mindstorms language")
I'm not talking about LabView; it's literally the Lego Mindstorms language [1] that outranks Erlang, MATLAB, ActionScript, Scheme, Groovy, R, Scala, and so Forth. LabView appears in the "Can't compare that meaningfully" category. So consider your expectations violated.

  > The "community" they're measuring is not the HN
  > community, which is not even close to a representative
  > sample of engineers worldwide.
I understand the potential bubble effects at work. I'm not arguing that Scala or Clojure or whatever's hip should come out on top. What I'm contesting is their notion of popularity. The measurements may be reliable (I don't think they are), but they're sure as hell not measuring anything worthwhile. NXT-G may be more "popular" in the sense of being Googled more often, but that's utterly irrelevant for 99% of all cases where you'd be interested in language popularity.

[1] http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT#NXT-G


> it's literally the Lego Mindstorms language [1] that outranks Erlang, MATLAB, ActionScript, Scheme, Groovy, R, Scala, and so Forth.

I'm not sure why you're so surprised. I can see that it's quite likely that Lego Mindstorms is more popular and has more users than many of those languages. I don't yet have a Mindstorms set, but I've been considering it for a while -- I can't say the same for Clojure, Groovy, Scheme, or R.


Tiobe can easily be gamed. Look at OReilly's book sales to see a truer ranking of language popularity at http://radar.oreilly.com/2012/04/computer-book-market-2011-p...

The treemap is especially interesting. The square size shows market size, while the background color shows percentage change from previous year. E.g. both Scala and Clojure have green "increasing share" squares, while nearby Groovy and Labview have smaller, red "decreasing share" squares.

Because people need to pay OReilly for the book, it's much more difficult to cheat than Tiobe, which only takes some "Project Manager" to spend half their day creating websites, generating cycles of links, producing online verbiage, submitting pages to search engines, blah blah blah


The problem with Scala (and Haskell, too) is that the search phrase TIOBE uses doesn't take different naming schemes into account.

For many functional languages "Programming in X" is a lot more common than "X programming"

Compare "Scala programming" and "Haskell programming" with "Programming in Scala" and "Programming in Haskell."

TIOBE is fully aware of the issue, but I guess the confusion and discussion creates just more clicks than an accurate representation.


Yes, and in other news:

While Aquarius is in the Seventh House of the Principal Equinox and Jupiter is aligned with Mercury and Thor is napping in the Trunk of a Ford Pinto, Java shall tremble at the Sight of the Blood running down the walls of Fear, for Clojure shall overcome Mindstorms when the Adjudicated Maximus crosses the Greater Chaotic Plane, and BOFH's everywhere shall rejoice! Ia, Ia!!! Chtulu Fthagn!!

(IOW, no, I don't put much stock in the Tiobe index.)


Right on. We all know C has always been the big one :)


Please, please, stop with this TIOBE nonsense. This index is a joke - can't someone with a burning desire for a weekend project create an open-sourced index website and engage with other hackers to incrementally improve it?


The Transparent Language Popularity Index is an opensource alternative: http://lang-index.sourceforge.net/


People are still using Eiffeil and Overon? All the other results I believe (Even clipper and module-2), but that is a bridge too far.


It's used to teach CS undergrads programming basics at ETH Zürich. At least a few years ago ...


Not surprised since Overon was invented there...


It's called Oberon!


Thanks!


LangPop.com is a lot better than TIOBE, but I'm not sure about open sourcing it... I'd kind of like to sell it for a bit of money and get out of running it (which I haven't actually been doing much of lately).

The one thing I can't stand about TIOBE is not the index itself - it is what it is - but the breathless announcements about so and so overtaking this or that, like it's a horse race.


But why bother to improve it?

Why is the question of "What programming language is most popular" one that needs an answer?


Their methodology is suspect as hell:

"TIOBE Programming Community Index is an indicator of the programming language trends. It is updated monthly, this list is based on the number of experienced programmers,courses and third-party vendors on the Internet. It uses the well-known search engines (such as Google, MSN, Yahoo) as well as Wikipedia and YouTube to calculate the ranking."

Frankly that doesn't sound like a proper method to determine a ranking of anything, let alone programming languages.


It is meant to be nothing but a trend indicator. Taken as such, and knowing that the methodology they use is flawed but mostly constant, then it actually works OK.


But a trend of what? I don't see how anyone can conclude "X is used more (for whatever 'more' means) than Y" simply because there are more documents on the web about X than Y.


From the TIOBE website: http://www.tiobe.com/index.php/content/paperinfo/tpci/index....

    The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

    The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system. The definition of the TIOBE index can be found here.
That last line points to the definition here: http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_d...


Assuming that we trust these numbers, what does it say about mobile development that Obj-C continues to shoot up, while Java has lost momentum (though still high on the list)? There are more Android devices out there than iOS, but the development market seems skewed in favour of the latter.


You mean, despite that fact that Android is not actually Java(tm) and a lot of job offerings etc. may mention "Android Development" but not "Java Development", because they are in fact not the same, except for the syntax. As mentioned everywhere in the thread, the TIOBE index may not be optimal..


A bit of the ole Ralph Nadar effect going on here, I presume. Java's share is being cannibalized by Groovy, Scala, Clojure, etc. They should start making a JVM ranking to start consolidating all those languages.


As Javascript's is cannibalized by node, jquery, ember, etc., etc., etc.


None of those are languages. CoffeeScript does come to mind though.


Yes, I understand those are frameworks not languages. The point was that since TIOBE indexes against the word 'javascript' and not 'node,' etc. I think it's possible that JavaScript's relative usage is obscured.

This is purely anecdotal on my part but it seem to me I see many posts or articles talking about 'writing an app in node.js' or 'the UI was written in jQuery' rather than 'written in JavaScript.' This seems to me a phenomena more or less unique to JavaScript.


The bigger news is that Objective-C went from 8th place to 4th.


The title of the article is wrong. A correct title would be "The number of documents on the web about C is now larger than the number of documents on the web about Java."

There is no reason to believe, and no facts are given to support the notion, that there is ANY correlation between popularity of a programming language and the number of web documents related to that language.

TIOBE just leaves it to us to draw that conclusion ourselves, and then we commence arguing over it.


I think that there is no need to check popularity of C and compare it to other ones. Even if C isn't most often used programming language anymore, it is and will be programming language number 1. Most popular languages are not realy different from C. Python, Ruby, PHP, Perl, Lisp - ok. those languages are different, OK. But C++, C# and Java are just C made bit more convienient tool for object oriented programming. Morover, if it isn't enough so much currently used software is written in C. Yeah, no doubt that C is programming language number 1.


PHP is very much akin to C. I wouldn't categorize it w/Ruby or Lisp.


Sure it's not not as different from C like Lisp is, but there are many differences. First of all: everything outside "<?php ?>" is treated as argument for print. Second, PHP is dynamicaly typed and support many functional language stuff like closures. In my opinion it's much more difference between C and PHP and between C and C#/Java.


I'm curious to know what has happened in the VB.Net community that has encouraged such a huge shift upwards.

Has Windows 8 dropping on the scene encouraged this?


TIOBE's methodology is skunky, but there's an underlying truth to the results. C really is that good.


fuck yeah


Excuse my apparent ignorance, but people are still programming in C?

Why? On which fields? Is there something C can do better than Java or C#?


Embedded, low power, real-time, drivers, high performance computing, low-level kernel, legacy, and so on...

The alternatives you give are not really the best examples either. C# is only a viable development platform for serious/professional work if you're targeting Windows, and if there is one language that doesn't do anything better than the many alternatives that compare favorably to it, it would be Java.


Off the top of my head, big important projects written in C, which are still actively developed:

* Linux

* GNU

* Apache

* Ruby

* Python

* nginx

* mysql

* posgresql

* Redis

* VMWare

* OpenSSL

* Almost everything "embedded"

Because C allows extreme control and performance. Anecdotally, a lot of people write in higher level languages, then rewrite critical bits in C for that speed boost. In many cases they just start at C if they know it requires certain levels of performance, for instance code on massive super computers or super low latency communications packages.


As a side note a lot of codes ported to C for running on HPC clusters will end up re-implemented in Fortran (I'm talking about Fortran 95/2003/2008 ... ).


I'm aware of almost all of that, but my point wasn't about things already written in C, I'm talking about why keep writing in C. Extreme control and performance are unique traits of C? Being a relic of the past, it lacks greats thing modern languages take for default (like, I don't now, memory management, for example). That's where my point was heading. Can't new languages in the multicore age address this issue in a more elegant, modern and less "protocolary" way?


When every bit of speed and space management actually counts, C (or it's derivatives like C++ or objective C) are still king. Half of those above projects were written when JVM, .Net and python/ruby/etc were mature widely used solutions.

Think about what a gc pause would do to an OS - it could kill performance for every single process on the system, cause issues with input buffers overflowing, and other related issues. A microsecond here and there in call latency may not matter most of the time, but in thousands of syscalls or in low level network processing have large cumulative effects.

Don't get me wrong, I love my high level languages and modern GC runtimes, but there are days and places when microseconds and bytes still matter, and for those, I still grab C. Just like the nailgun hasn't fully replaced the hammer, or the vacuum hasn't fully replaced the broom, there is a good reason C still exists and finds acceptance.

Maybe Go or Rust will start to creep even more into the C space than JVM etc already have, but I really don't see it fully going away, it is just too useful and a well understood proper tool for some jobs.


'GNU' is not a project. At least not like the others in your list.


Sophacles probably meant http://www.gnu.org/software/software.html#allgnupkgs Looks projecty to me. :-)


Nor is one about embedded systems. The core GNU tools are written in C and actively maintained, and are commonly referred to as the "GNU project".

I'm not sure why you are pointing this out.


> Is there something C can do better than Java or C#?

I write systems code in C and Assembly for a living. I couldn't possibly do my job using Java or C#. In fact, as an experienced C programmer, I honestly can't imagine choosing to use C# or Java to do anything -- I'd rather be writing either in C or in something "higher level".


Both of these actually strike some good balances for the vast majority of "business programming" -- be it desktop apps, web apps, or mobile. C# is actually getting pretty high level (DSL stuff like LINQ). Java, not as fast but Scala goes way beyond that.

Python, Ruby, Perl, PHP.. these are overused (except for solo work, prototypes, toys, glue) and in my experience fall down in teams.. but dynamic typing now seems completely asinine to me after slinging Scala for the past handful of months.


I think dynamic typing is a transitional technology. Designing a strong but sufficiently flexible type system is very difficult, so while we've waiting for the FP community to do the hard design work, we're more productive in Python or Ruby than in Java.


Java and C# have 'managed' runtimes; it the language manages memory for you. This memory management bit cannot itself be written in the 'managed' language. Also, an operating system can't either[1].

Also, systems with hard real time requirements, such as audio/video, the signal processing code in your phone, wifi router, etc, are incompatible with almost all managed runtimes.

[1] Okay, I know there are academic ones that are. As far as I know, no productions systems are.


Funny, because there are research compilers that do exactly that.


Compilers and interpreters for almost all other languages are written mostly in C or C++. Most of OS kernels, APIs, shells, command line utilities, my favorite editor etc are all written in C. Not a day goes by that I don't download C code, make and install it on my system. So, I think C will remain one of the most popular languages around.


You're favorite virtual machine and OS are probably written in C (or some dialect thereof).


Most cross-platform libraries are written in C. Consider the multitude of C libraries that are available in Python or Ruby.


Linux, UNIX variants, all their drivers, tons of embedded software & firmware in tiny devices like wireless chipsets, all the way up to the "real" IOS that runs Cisco switches.

It's a good option for low-level work.


Most languages' canonical implementations are written in C, including Java, Python, and Ruby.


lot's of code running on almost all networking gear is 'C'. examples would be ios (csco), junos (jnpr) etc. etc. starent-networks (acquired by csco) which is a pretty significant player in mobile-wireless is also 99% 'C' based.


> 'C'

Why the quotes?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: