Re: Pascal had a use (for me at least)
As a learning language, I believe excess focus on Pascal, Delphi and even Java hobble you with respect to what's going on under the covers. That may not seem important to many people - too many in my opinion. But in my experience, the really excellent programmers are the ones that understand at least some of the low-level implementation details of how languages, and indeed computers overall, get done what you ask of them. Languages like Java work hard to hide that from you by design.
Learning C and C++ force you as a matter of the language basics to learn about things like referencing memory more or less directly via pointers and low-level arrays. Naturally, using these tools can be risky and poor use leads to all manner of awful bugs. Indeed, that C/C++ can permit such horrific bugs is the main reason we have languages like Java, whose core design philosophy is to "protect" the programmer from these things. But by using languages like Pascal and Java as your sole teaching tools for a new programmer, the students don't learn nearly as much about what's actually being done by the resulting program than they would having written in, say, C/C++.
I believe this deprives them of all manner of useful knowledge they can later bring to bear to debug deeply buried issues or improve application performance. Not because they're going to hack pointers into a Java program, but because they often have a better grasp of things like stack and heap maintenance, why things can go wrong with loading in foreign libraries (vi JNI and the like), and so on.
The above can be covered of course by courses in assembly or compiler design, but not that many CS students I know take those if they can avoid it when their goal is to get marketable skills, as opposed to pursuing computer science directly. They usually focus on programming classes, which usually focus on higher-level languages used in business.
Learning algorithms, design patterns and the like is essential, and I hardly think