I published a blog post about C a few years earlier [1]. Bilal Hatipoğlu published a follow up on this blog post shortly after its publication [2].
In my post my intention was to make readers understand that C is not a silver bullet which can kill any vampire (problem). The name of the article was “Is C A Vitamin?” implying that C is not a vitamin that you can use all the time without any complications or side effects.
It was exactly my point that some people feel that they have to advocate C! Thanks Bilal for proving it. Now, listen to me very carefully: C is probably the most successful programming language of all times. Almost 40 years of very wide usage, one of the best performing programming languages of the world, operating systems, games, programs written in C, etc. C does not need your advocacy!
Nevertheless, Bilal felt the urge to advocate C against the villain: myself. He presents me as a Javamaniac: Well, I am not! I don’t even like Java or maybe I hate it! I hate it so much that if I was God I would wipe Java programming language along with Java coffee and Java island from the surface of earth. But still, I use Java when I need it.
Most of the people who think C needs their advocacy do that by saying that C is faster than all other common programming languages. Go and check [3]. I know this guy: He is a world-wide known engineer but still he spares his time to prove C is faster than Java. Hello! We already know that! Performance is very important, probably the most important feature of a programming language. But it only counts when the program runs without a problem. Do I need a(nother) proof if I quote “When C is your hammer, everything start to look like your thumb”? It is obvious that C provides the programmer with wonderful features, but it is also obvious that they are very dangerous. Hence, we have to consider if we really need to use C for each project before we decide it. I’m basically saying that think before decide! Not a bad thing, eh?
And then there is the business aspect: C development costs are higher than most of those slower languages. Also, maintenance of C is very hard. I wonder if Bilal knows Python is written purely in C. (Here we have to remember one of the most crucial rules of all time: Do not reinvent the wheel!) You can also write some code in C and integrate it to your Python program. Does he understand what this means? You can write your performance critical modules in C and integrate them with your Python application in which you don’t have to deal with all those C stuff. So you can now spend your energy on your problem without giving up the performance.
I believe the ego of the programmer takes her/him to a place that (s)he thinks (s)he is the most intelligent human being in the world. To prove this to her/himself (s)he thinks that (s)he can write a bug-free code even using C! This false judgement leads this person to great misery because the most intelligent person in the world can understand that programs we develop in the real world gets more and more complicated everyday, even in the micro level. To use such an old and complicated language to solve these kind of problems, well, may cause even bigger problems than we try to solve in the first place.
References
[1] http://ozgurmacit.wordpress.com/2011/09/04/is-c-a-vitamin/ :: Is C A Vitamin? by Özgür Macit
[2] http://bhatipoglu.com/entry.asp?id=50 :: Is C a Vitamin? Yes, of course… by Bilal Hatipoğlu
[3] http://husnusensoy.blogspot.com/2006/06/c-vs-java-in-number-crunching.html :: C vs. Java in number crunching
