Why I Use (Object) Pascal
screamingduck.com
screamingduck.com
Should I say how much I regret Hejlsberg left Borland to join Microsoft? That put an end to Delphi/Object Pascal, although the language and the IDE had the full potential to take C#'s market today.
Borland never had R&D or marketing muscle to keep up with everyone else (Microsoft). Their C and C++ compilers were always buggy (sometimes adding an empty line would stop a compiler from crashing), their profilers never worked, their C++ IDE used modal dialogs to display progress of compilation... Delphi was the only reasonably well-built piece of software they did, and it was still beaten by VB commercially.
When I upgraded from Object Pascal (Delphi, really) to C++ it was like jumping into a superman costume.
C++ is not a superset of Object Pascal, rather, each have their niche features. I probably felt the same as you when I first upgraded to C++, but that followed by some disappointment, too. I missed sets as first-class data, the subrange type and many other big and small things. And the object model was quite different. I'd even argue that if you forget about operator overloads in C++, the rest looks quite weak when compared with Object Pascal's OO model. The article mentions some, e.g. virtual constructors, properties, etc.
The rest is basically in the article. Lots of features that are still missing in the mainstream languages.
And most importantly, the final binaries you get with Delphi are indistinguishable (size, speed) from those produced by C/C++ compilers, if not better sometimes.
If I were OP maintainer, I'd probably bring the language to today's "standards" if that's the word, by adding just a couple of things - anonymous functions, probably yield semantics, also foreach and better support for built-in dynamic arrays.
Pascal's OOP is about as useless as C#'s compared to power of what multiple inheritance + templates give you, not to mention the true Smalltalk-style message passing.
Virtual constructors is not a "feature", it's (just like various additions to C#/Java) is an afterthought patch to a rigid static world. This is very typical for created-in-a-lab languages: they were designed with a average Joe programmer in mind, protecting him from shooting himself in a foot, and later on, to make them less painful to use, were given these "features".
Pascal's came from academia blessed by a traditional and inevitable "kiss of death" preventing it from generating a true massive fan following. Compare that to Unix/C/C++ (or Lisp, Smalltalk, Perl, Python, Ruby, etc) that were created by programmers for programmers.
Delphi does have messages, templates are not part of OO, multiple inheritance is present in Delphi in some restricted form (I* interfaces) and the rest in your post is just emotions.