I'll describe a few things that remind me why I chose pascal.

C/C++ makes extensive use of macros, so much that almost half of all code isn't code but is actually a macro. Then I look at a language like Lisp, and say these macros are utterly worthless. I'd love to be able to use a Lisp-style macro to rewrite my code, but no such luck. When it comes to discussing pascal versus C, the only thing that matters to them is how good they are at C and their measure of arrogance in that. I have only met a handful of exceptions to this. As said before the languages are quite well balanced.

Everyone who says Pascal is a keyword heavy language, Linus Torvalds included, is dead wrong. Try studying Lisp for a while and you'll see why they have such a tiny core to the language! Everything else was added in as functions or macros, but are indistinguishable from keywords due to the S-Expression programming method. In pascal there are 63 keywords and all of them are standard English; in my time of using pascal I have barely scraped even half that number.

You'll find a world more tutorials and resources for C/C++ simply because more people will be there providing those things. But in the grand scheme of things you'll notice that unless you are the world's best programmer that you are really just some sort of person on the sidelines of a community. When it comes to working with pascal every last person in a community counts, because we all share the same love for pascal. I haven't told my boss that everything he wants me to do I can do in half the time with Pascal because the whole company uses ANSI C ... and are paranoid of the addition of another language. They've fought PHP every step of the way because they're all C engineers. I can only imagine what they'd say to pascal. I haven't even mentioned it.

Quote Originally Posted by dmantoine
... while in Pascal you would write:
Code:
var a:Plongint;

begin
  a:=Plongint(2)
  ...
Turbo Delphi, dunno about FPC, will let you write:
Code:
var a:Plongint;

begin
  a^:=2;
  ...
Because the caret dereferences the pointer to the actual value, and the compiler is smart enough to know what it is pointing to.