Categories
Commentary

The Delphi Object Pascal Language

What’s in a name? That which we call a rose
By any other name would smell as sweet;

The other day I noticed Github has a language choice for Pascal, but not Delphi. It turns out originally they had Delphi listed as a language, but some of the Delphi clones were getting marked as Delphi, so they renamed it to the more generic Pascal. Which immediately resulted in people requesting they rolled it back.

This brings up a good question though, “What is Delphi and what is Object Pascal?” Interestingly there were three implementations of Object Pascal that evolved from the original Pascal. The one we are all familiar with was designed at Borland as part of Turbo Pascal. Apple also designed one consulting with Nicholas Wirth. And there was the Think Pascal IDE with it’s own flavor.

The Borland flavor of Object Pascal evolved into the language we see in Delphi today, while the other two faded away. There actually exists a few other variations of Object Pascal, most all of which were inspired by the language that still lives in Delphi today.

Personally I think it is exciting to see so many other tools and languages in the Object Pascal and Pascal space. That is part of what made C & C++ so vibrant: All the other languages wanted to copy them (Java, JavaScript, C#, etc.)

So back to the question, “What is Delphi and what is Object Pascal.” Object Pascal is the language that powers Delphi. Object Pascal can exist without Delphi, but part of what defines Delphi is it’s Object Pascal language. Just in the same way C++Builder isn’t the only implementation of C++, but part of C++Builder is the C++ language. So Delphi and C++Builder are each the whole package: Language + IDE + Compiler + Debugger + Libraries + Tools. You could say they are the definitive implementation of those languages.

Could we see Delphi with a different language? That would be interesting. At one end of the spectrum there was Delphi for PHP (which evolved into HTML5 Builder.) It was Delphi’s Rapid Application Development concept combined with the PHP language. And then Delphi Prism which used the Oxygene language variant of Object Pascal combined with Visual Studio and .NET.

In my opinion, Delphi is a specific version of Object Pascal, if for no other reason than because it has a fabulous runtime library and framework. Using Object Pascal without TStringList and all the other useful types, function and libraries that Delphi comes with wouldn’t be much fun.

11 replies on “The Delphi Object Pascal Language”

Delphi has essentially become a language family of its own.

D2009 introduced new language features that fundamentally change the coding style for savvy developers, not to mention all the Unicode stuff. Same with D2010 and extended RTTI.

XE2 introduced strong support for multi-level namespaces, so code written post-XE2 tends to look different from projects started earlier than that. XE4 and 5 introduced the new mobile compiler with such radical changes to several fundamental parts of the language that there’s a strong case to be made that it’s not actually Delphi anymore, but a new, related language.

And then there are offshoots. FPC, Oxygene and DWS are each based strongly on Delphi’s syntax and semantics, but with their own variations. (And there are really two distinct versions of DWS, the Google Code version and the one embedded in Smart Mobile Studio, each of which has its own mostly-but-not-completely overlapping feature set.)

I would group those all as the Delphi family of languages, distinct from other Pascals.

The most unfortunate fact is that while for other languages there exist official specifications for Delphi they are simply not there. Maybe you find some vague informations in the Doc. But nowhere you can find an up to date spec of the current language and some of the features have to be learned by trial and error or by people talking about them on presentations or blogs.

Also some of the features have corner cases where they don’t work properly (yeah, generics, I am looking at you!) which makes it even harder to find out if and why something works or not.

I have to agree with Stefan here.

And unfortunately, this isn’t a problem that anyone’s making any great effort to solve. Clearly a lot of effort at Embarcadero is going in to designing new features to bring in new users, and it’s easy to understand the business logic behind this. But some decision-makers seem to not understand that while new features will bring in new users, serious bugs (especially ones that can’t easily be worked around and don’t get fixed quickly) will drive them away.

I’ve suggested this before, but it’s worth repeating: If Embarcadero is allocating its limited resources towards the development of new features, and lacks the resources to fix up reported quality issues–which is understandable, the economy being what it is–then they ought to leverage the power of the community. Pick a handful of talented developers and give them access to the IDE and compiler sources, under NDA of course, and watch what happens.

Give me, Andreas Hausladen, Eric Grange, Uwe Schuster, and a handful of others that access and a private repository, and a year to work on it, and we’ll deliver a toolset polished until it shines. (Disclaimer: I have not actually discussed this idea with Andreas, Eric or Uwe, and this should not be interpreted as attempting to speak for any of them.)

In my opinion, what does not help is to put the Delphi “box” inside the RAD Studio “box”. The best of a software product must to “be” the software product.

Kind regards.

Al Gonzalez.

This reminds me of the question that used to be asked about Java in the early days… Is Java a language or a platform?

I have been a Delphi user from version 1… and in the early days it was always clear as to what Delphi was: an IDE for developing applications using the Object Pascal language. In the early versions it was almost accepted that Delphi was superior application development environment to Microsoft’s Visual Studio, for instance… and it was almost expected that Borland would chase down Microsoft’s Visual Studio 6 (Aspen) and beat it at its own game.

Sadly it was not to be… the C++ Builder and later J Builder IDEs were inspired by Delphi, but never made it into the Delphi IDE. By the turn of the century, Microsoft’s Visual Studio, Sun’s NetBeans and IBM’s Eclipse were all single integrated development environments that supported multiple languages, linkers and compilers. Borland, on the other hand, was juggling a separate IDE for each language it supported. C++ Builder, J Builder and Delphi were as much Borland’s flavour of C++, Java and Object Pascal as they were IDEs for those languages.

CodeGear’s Delphi for PHP, simply added to the confusion as it was neither Delphi nor inspired by Delphi… it was just a thing that carried the Delphi family name like a third cousin that you’d never heard off arriving your house and claiming that they are your kin, at least by name alone, if nothing else.

Today RAD Studio has become the IDE we’d thought Delphi would grow up into and Delphi itself is now simply Embarcadero’s flavour of Object Pascal. Many of us still refer to RAD Studio as Delphi, in part because many of us tend to purchase a language specific version of RAD Studio (confusingly called C++ Builder or Delphi).

Today Delphi is more of an Object Pascal language implementation than it is an integrated development environment. The Delphi development environment has been RAD Studio for several year now; whether one buys the language specific version (called Delphi) or the multi-language version (called RAD Studio)

I think it is correct to call the language itself “Delphi Object Pascal”.

Mason the idea of opening the sources is too good. I never understand why those guys are not hired by Embarcadero.

As a user since D v.1 I echo Mason’s comments that bugs and useability are the perennial issues with the product. Delphi lacks a beta release which means that every release is in fact a beta release. Version 8 was so crippled that I never released a single piece of software with it. Likewise Firemonkey in its 3rd release, is only now evolving into a useful platform – although it still has some way to go for ease of use comparable to VCL. Some serious bug fixing after a beta would then provide a release fit for production. The other issue which detracts from it being a truly great development environment is the incompatibility of 3rd party products with each new release. This causes considerable disruption for developers who have to wait for 3rd party product updates before they can waste the best part of a day upgrading to the new version.

Leslie: AFAIK Every release has a lengthy beta period with a large number of beta testers. Typically they are private, invitation-only betas, but there were a few few times where the betas were public. I remember attending one BorCon where they gave everyone in attendance a beta CD. Later in the event we got to go around to the R&D team and get the CD autographed.

Many of the 3rd party tech partners are part of the beta process and typically have their libraries updated before the product is even released. There are sometimes outliers or instances where the update process takes more time though.

Object Pascal is the language. Agreed we can be happy that Pascal still does exist in various flavors. That’s good.

The Pascal community was never that big, before but different. It started to grow with TP 4.0 and 5. On UNIX and other environments it was simply almost wiped out. Delphi is different in a sense. Turbo Pascal for Windows was a straight C for Windows but just Pascal. Delphi was a different approach indeed and is still different. It’s easy to howl with the pack … but in the end making something different and/or another way can lead to progress. Progress is not if everyone does the same a different way…

Comments are closed.