Why C has no place in Computer Science research
I came across this post, which highlights top 5 reasons why a developer should unlearn C. Given the past experience I had with realities of C development I mostly concur with the author.
In the last months I was deeply involved with building a resource broker component for the Grid Operating System project I am involved with. The biggest mistake I made initially was to go along with a C webservices framework, Apache Axis2/C thinking that in an OS level project most of the stuff should be in C due to speed and optimization reasons. This was a decision which cost us months! The original broker itself was developed pretty quickly, perhaps in 2 weeks, and we deveployed it in machines took results everything went fine. Now, when I upgraded the systems to Slackware 11.0, and then ran the broker, nothing will work! It will always segfault as soon as the service was started, I tried 20+ hrs session of debugging fixing the problem but to no avail. I traced the problem to the the framework in which it was built, Axis2/C and contacted a developer to seek some help, but the reply was that the framework was not stable for some platforms now and it will take some months for a stable version to be released. The latest release is Axis2/C 0.95.
Now there were two options, either I wait out till a stable version is released or I code it in another language. I couldn't wait months for it! Computing research is fast moving the ideas I implemented in the broker may be published by someone else by the time I get a stable C webservices framework. So I decided to code the thing in Python, and it has been a blast since! I completed the resource broker implementation in just 3 days, 8 days ahead of schedule. Due to university exams I have not gotten around to take results form it but the productivity gained by dynamic managed languages like Python has been amazing. Such languages would allow me and other members of the research group to code our ideas, implement them, and publish results for all to see. Languages like python if for anything, speed up the pace of Computer Science research.
But dynamic managed languages will never replace C/C++. OS Driver and kernels are written in it, there are some places where it will never be replaced! Python is good for a quick and dirty implementation which can be a prototype, but final products which are to be sold to customers etc. Should be in a compiled form, this is also essential of you have some intellectual property to protect. However in server hosted application, there is no reason not to use such languages.