C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg.
There's an old story about the person who wished his computer was as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone.
Being able to do something is not sufficient reason for doing it... and
being able to do every trick is not a feature but a bug.
People who passionately want to believe that the world is basically simple react to this with a fury that goes beyond what I consider appropriate for discussing a programming language.
There are only two kinds of languages: the ones people complain about and the ones nobody uses. Bjarne Stroustrup's FAQ: Did you really say that?. Retrieved on 2007-11-15.
People who think they know everything really annoy those of us who know we don't.
I do not think that safety should be bought at the cost of complicating the expression of good solutions to real-life problems.
With the increasing importance of standards for system-level objects such as COM and CORBA, it is particularly important that the C bindings to those be clean, well documented, and simple to use.
My list of basic tools is a partial answer to the question about what has changed: Over the past few years, large numbers of programmers have come to depend on elaborate tools to interface code with systems facilities.
There are more useful systems developed in languages deemed awful than in languages praised for being beautiful--many more.
However, when Java is promoted as the sole programming language, its flaws and limitations become serious.
This evolution may compromise Java's claim of being simpler than C , but my guess is that the effort will make Java a better language than it is today.
C is my favorite garbage collected language because it generates so little garbage
Within C , there is a much smaller and cleaner language struggling to get out.
The connection between the language in which we think/program and the problems and solutions we can imagine is very close. For this reason restricting language features with the intent of eliminating programmer errors is at best dangerous.