I’ve been coding for about 20 years, in all sorts of languages. Assembler, Java, Smalltalk, JCL, REXX, C, C++, C#, Shell, Pascal, Perl, PHP, Ruby, TCL, Eiffel, Maple, Mathematica, Gauss…god knows what else, even VHDL’s for FPGA’s. Let me say that C++ is pretty great, and infact is what I’ve chosen to use for a number of new projects.
Here are some comments on assumptions on points above:
Many assume ‘higher level language’ needs to be ‘slower’. That’s just not true at all. That said, if it’s slow in C++, it’s likely your algorithm, while if it’s slow in a high level language, it’s probably that you’re using convenience classes that are poorly suited for your problem domain.
It’s true that a lot of programmers aren’t formally trained anymore. If a programmer can’t work out time complexity between a Quick Sort and a Bubble Sort (really basic questions), I don’t hire them. Even if they’ll be using a high level language. I’ve seen hundreds of thousands of dollars go up in smoke because programmers honestly didn’t understand why the Java ArrayList behaved so poorly when used as a queue, and the queue size grew. Actually, change that: millions lost. High level langauges should be used for their expressive power, not as a crutch for people who shouldn’t be programming commercially. It’s ilke the comment above, “you don’t know when you’re hit”.
Many high level languages are compromising in areas they shouldn’t, letting programmers be lazy. If there’s one problem with coders in high level languages, is that they don’t seem to write much ‘error checking’ code. If something like VB or C# had Design by Contract built in (like Eiffel has) forced as part of the language, I’d be happier. I do know about Spec#, and other C# DBC extensions. Really, the language should be easy to use, but also do it’s bit to enforce some quality.
Vista’s way slow. I played with it yesterday and I could see delays in the icons on the start menu popping up. It’s pretty pathetic. If I were Microsoft, I wouldn’t be proud of it.
C# is a nice language. I’d rather people learn Smalltalk tho. Squeak is cool.
Only in the last three years have I spent more time with C++, and I’d have to say it’s a pretty excellent language. C# is cute too, but it’s performance isn’t there. I wrote a test system in C, C#, and Ruby the other day. Ruby got 11,000 operations/sec, C# got 34,000 operations/sec, and C++ got 71,000 operations/sec. The C++ code compiled on Windows, Linux, and BSD without any warnings or code changes. It also used the least RAM.
Fast? Portable? CPU and Memory efficient? Do these things matter to anyone?