Interesting article this morning on CNet. It discusses language usage. Bjarne Stroustrup (the creator of C++) claims that C++ is not being overtaken by languages like C# and Java. He claims it is a matter of marketing. Java has marketing, C# has marketing, C++ does not. He's probably right about that. There is no hype machine for C++. Sometimes though, hype influences reality. If I'm an aspiring programmer, I'll hear all this cool stuff about .Net, Java, or C#. I will then be more likely to gravitate toward them. Surveys show that, as a percentage of all programming, C++ has dropped from 76% in 1998 to 46% in 2004. That may say more about the size of the programming pool though than about the number of C++ programmers. Stroustrup maintains that there are 3 million C++ programmers.
One aspect the article touches on is teaching languages. When I went to school, pascal was the language of teaching. In a lot of places, it is currently Java. Why do universities instist on "teaching" languages? Why not teach what people really use? You can't argue that C++ is too complicated. It is more complicated than C# or Java, sure. But then again, a lot of your graduates are going to be programming in C++. By the above survey, about half of them will. If they can't handle it in school, how are they going to handle it in the real world? I am all for taking some classes to expose people to different programming paradigms (C++, Lisp, Smalltalk, C#/Java, Python, C, etc.) but the core of the curriculum should be based around one language. That should be a language that is useful everywhere. It makes no sense teaching an OS class using Java. No one but Sun uses it for OS's and we know how successful JavaOS was.
My final thought on the subject is that it shouldn't suprise anyone that Java, VB, and C# and even "languages" like PHP or Perl are gaining so much momentum. They are more accessible than C/C++. They are easier to learn and easier to use. It's harder to shoot yourself in the foot with VB than with C++. It's also harder to do many kinds of work. Why not start students with the more complex languages and work down from there. To learn C# from C++ is easy. To learn VB after you know C++ is easy. The other direction, not so much.
So, if you happen to be reading this and just starting out, consider learning C++ early. You'll be doing yourself a favor.