I started programming in Java and then eventually moved to C++. I then noticed that many languages use bindings to C libraries such as GTK, OpenGL, OpenAL, and many others. Also languages such as Java, Python, ADA are plentiful in bindings to C libraries… Then there is databases that have bindings to C.
I then read an article from Joel stating that all CS graduates need to learn C… So I took up that advice and so far it seems to me nearly everything is done in C; again Linux, and so on. Many things from other languages have became more clear just by picking up the C programming language book.
Why is it that the industry has moved away from C, but it is yet so stuck on the foundations of C? For example if Java is so much more better than C, why isn’t everything done in Java? Why aren’t libraries converted to pure Java and so on?
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
C has some desirable properties.
It’s close to the metal, and requires very little runtime. This means that C libraries can be very efficient when necessary. It also means it’s a good language to teach computer basics (not necessarily Computer Science basics or programming basics).
Almost everything has a C compiler nowadays, and there’s frameworks to port one if necessary. Putting a JVM on a new platform is much more work.
C has been around for a long time, and there’s a generally accepted ABI. It’s simple, so it’s easy to have programs in most languages call C routines. It’s old, so almost all language implementations have that ability.
Since C has been around for a long time, it’s easy to find C programmers when you want them.