Hi.
I mostly agree with you. However I wouldn't condemn C++, but I do condemn most APIs that are associated with it, like MFC (blech). There is only one C++ API that I would call a clean, object-oriented (though event-driven) API, and that is Trolltech's QT (which also makes your programs fairly portable).
My favorite language for quick applications has always been Pascal or (nowadays) Delphi. It is also a good language if you only just start learning programming, as it allows the good old procedural programming style, but also allows the introduction of object oriented programming.
The programming language I tell every beginner to avoid is Perl (but I love it for scripting purposes, and also know some good programmers who are able to do amazing things with Perl), there are way too many possible syntax variants and solutions to given problems to be of much use for learning how to program cleanly.
I strongly advice any programmer to gather at least some experience with C, it is way to widespread to ignore, and almost any low level (near the hardware) application is written in C today (if not in assembler).
Wether you choose Java or C++ as your object-oriented language is up to your personal taste. Java has the advantage that it is different from C, C++ has the advantage of being similar to C. Sounds confusing? It is. Let me explain: If you already know C, and start to do object-oriented programming in C++, you are often tempted to fall back to simple C for the smaller tasks, but this ruines the object-oriented layout of your software. However, these fall back solutions in C are often faster than doing the same thing strictly OO, so they can be of advantage as well. Java on the other hand does not allow the same kind of fallback (even thoug Java _can_ be programmed in a procedural style if you are crazy enough to try that), so you are (mildly) forced to stay with your OO design.
Java's use of a virtual machine is a disadvantage that many underestimate, that JVM costs a lot of memory and CPU time, so a Java program is almost always slower than its C/C++ equivalent, and just as often a lot bigger. The advantage of the virtual machines is the portability of Java. But this portability is degraded by the need of additional classes for hardware access which, in turn, aren't very portable at all. But thank god, most accessory classes (like for serial port access) are available for the most important operating systems (usually Unix, including Linux/Solaris/etc., Windows and MacOS).
So if anyone wants to learn how to program, learn Pascal/Delphi first, learn about the most important algorithms (like how lists, arrays, trees etc. are handled "by hand"), than start to think about which language you might want to learn next. I would advice to learn C, learn about its pitfalls and its drawbacks as well as advantages over Pascal.
When you are somewhat confident to be able to program in procedural languages, start looking at OO designs, than start looking at different OO languages, most importantly C++ and Java (yeah, I know Modula-2, but is it used anywhere today?). As said above, I would recommend Java. If you know C and Java, it is very easy to learn C++, but if you know C and C++, it is still hard to learn Java.
If you did al that, and still feel like you should learn yet another programming style, try learning a functional language (like perhaps Standard ML or Scheme[did I miss a bracket again??*]) or a logical one (like Prolog).
Even more adventurous natures might like to learn one assembly language or two as well.
Oh, if you would like to learn an extremely weird (functional) programming language, learn APL (a development originally made by IBM). There have been obfuscated APL programming contests. One of the winners didn't even recognize his own program after the jury removed all comments from the code. That language uses a lot of special characters of which each represents its own function (like create a matrix of n*m with o on each of the (i,i) positions or convert a string into a list of single character strings). A really weird language.
Did I miss anything important?
cu,
sven
* Scheme programs "known" to contain more brackets than letters or numbers.
_________________________
proud owner of MkII 40GB & MkIIa 60GB both lit by God and HiJacked by Lord