For those that don’t know, C was developed in the early 1970’s – the time of the Dinosaurs in the computing world. Since C, many new and better languages have been created. From what I can gather, most of the world’s code is still written in C / C++.
My question is what do you do with an application that is written in C? Learning C to support an application isn’t going to progress the application that much further. By learning C (and all of its nuances) you can now contribute to the code base, but what happens when someone else wants to help?
Converting an application to a newer language is a possibility, however this is a large investment of resources upfront. In fact, since most applications are still C / C++ based, this should tell you how much of an undertaking this is. In the long run, I think it is beneficial, because more people can contribute to the project with fresh ideas, and faster development using the latest tools.
I laugh to myself sometimes when I realize how young software really is. Very few people are proficient at good development, and the end product is never perfect. There are millions of factors that can cause an application to crash, many outside the scope of the application itself. My advise? Hold off a few decades until big issues like these are gone.
Just because a language is “new” doesn’t mean it is any good. There are many reasons to pick one language over another. Programmer proficiency, target environment, productions time, and so on and so forth. But it sounds to me like you don’t really know C. C itself is a very, _very_, small language. It has a short reserved word list, a short operator list, and few data types. All of which make it very portable. As far as non-interpreted languages go, you’d be hard pressed to find a better one.
As is common, I think you have the libraries mixed up with the language. Yes, there are many different C libraries. Learning them all is impossible. But, that is true of all languages. C# isn’t a much bigger language than C; but the standard library set is MUCH bigger than the standard C library. Thus, it is easy to learn standard C than it is to learn standard C#. But, each language has its place. For example, every program I wrote for my numerical methods class, except one, I wrote in C. Why? Because it was easiest, and most efficient, to write the majority in C. The one program I wrote in C#, I did so to take advantage of the dynamic arrays.
Long story short, read the K&R book (http://www.google.com/search?q=k%26r+book) before bashing C. Maybe there are some languages that are better at certain things, but I don’t know of any that beats C hands down. I also don’t know why you think there would be more people familiar with newer languages than there are with C.
I know that the age of a language doesn’t relate to its quality. In the computing world however, the wheel is constantly reinvented. Imagine programming something in FORTRAN today; it doesn’t make sense with alternatives that are so much easier. Even if C# isn’t superior to C in every way, it is only a matter of time before something else is. Then we will all be having this discussion again. What options do developers really have?