While many other languages have rapid development, such as Python, which has come out with a whole new version in the past few years, or to use a framework, Rails, which evolves super-fast (A book that was published in early 2011 is now obsolete), it seems that there are no updates for C. Why is this?
closed as not a real question by David Thornley, gnat, user7519, Matthieu, yannis Apr 2 '12 at 21:26
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. If this question can be reworded to fit the rules in the help center, please edit the question.
There was a new revision of the C standard just a few months ago (C11, ratified 8th December 2011). I wouldn't be surprised if all of the latest releases of the GNU C compiler slightly modifies the lanuage it accepts (add and remove language extensions, possibly add more C11 features, possibly remove support for ancient cruft). True, that's slow, incremental changes rather than a revolution, but the language still evoles.
But apart from that, C is quite old - it had more than enough time to be refined. C as it is now is pretty close to what the language is intended to be: A super-simple, ultra-portable, low-overhead, extremely stable [in a backwards combability sense] system programming language. There have been some attempts to re-invent sytem programming (such as D, Go, and the much more obscure BitC) but they all drop some of C's goals - most importantly backwards combability - and are sufficently different to stop light-hearted adoption.
A new standard for the C programming language (C 2011) was ratified just a few months ago, and has some significant additions over the previous version (such as a built-in threading library).
Previous standards were released in 1999 and 1989.
It takes WG14 a while to agree on a new standard for the following reasons:
There's over 40 years' worth of legacy code running out there, and the standards committee is understandably reluctant to break any of it;
There's a very large and varied community of C implementors and users, and keeping everybody happy isn't easy;
There's a desire to avoid creeping featuritis -- C's major virtue is its relative ease of implementation, and tacking on too many doo-dads may make implementation difficult (indeed, the addition of variable-length arrays in C99 caused some consternation, and IINM are now optional under the 2011 standard);
Say what you will about the virtues of Java and C#, but at least C reference manuals don't require a forklift to carry.
There is a point which is missing in the current answers:
Stability is a virtue for any production programming language. C is standardized not only in its syntax, but also in its ABI, which allows other system to easily call dlls compiled from c code. Try to do the same with c++: you will see that you will have to implement one interface for each existing compiler. This is only possible because the language is very stable.
This is why python 3 new features developpement was frozen at some point: in order to gain serious adoption you need to have stability, because shops will want to keep existing source code while upgrading their toolchains.
At this point c is probably one of the more stable language out there, and this is a good thing.
More details about my opinion on stable languages: When a given language is stable AND used by some known projects AND actively maintained, you are pretty sure that the implementation is solid. If new features are continously added, you are not sure that they have received enough testing simply because time has not allowed QA to happen. Most of the time the last cornercases and bugs will be found by users pushing an implementation to its limits by using it on several platforms and in different contexts. Time allows the maintainers to fix the bugs they want to fix and document the other ones.
C was developed with systems programming in mind, a more useable assembler. For this application C is widely usee in e.g. embedded programming. A lot of new application areas for programming have emerged, e.g. the web. New programming languages emerged more suitable for these new application areas, limiting the need for C to extend into these areas. In regard to books, new books tend to emerge more early in the life cycle of a language as tge developments and expansion of the language are strongest at that time. C is very mature, explaining why C books are not coming out every week, only to be outdated very soon.
I would argue that one of C's most important features is its simplicity. Any "evolution" that adds complexity is not an advancement. I just shake my head when I hear about object-oriented COBOL -- one of the reason COBOL has enjoyed so much success is because OOP languages don't offer any compelling advantages in its niche (high-speed batch data processing). Likewise, I don't think that adding closures or making functions first-class elements will improve C. Best to leave it clean and simple, and use it as a base for new languages with new features. That strategy worked well for C++ and Objective-C, while still preserving C's value as a small, simple language.