Delphi is 20 years old

The year is 1995 and I’m sat at home working on my latest application with Turbo Pascal 7. Windows 3.1 is king and I want to start writing windows applications… I could have opted for Borland Pascal (but that was seriously expensive) and based on my experiences with Turbo Vision, developing Windows apps would be a killer. Then one day I saw a review of a new product from Borland. Labelled as the VB killer, the new products name was Delphi. Due to be launched soon in two flavours, Standard and Professional. I opted for Standard (I had no money back then), pre-ordered it and eagerly awaited release day.

It arrived, I installed it and was blown away at just how easy it was to create Windows applications, but there was a problem. Having spent 7 years writing DOS applications with Turbo Pascal and text based applications on my Atari ST using Prospero Pascal, the new paradigm I was presented with scared me. It scared me a lot! The idea of writing event handlers instead of big hunks of code to handle menus and keypresses was the paradigm shift that bothered me, sounds crazy now, but back then I just didn’t get it. A few months later I secured my first full time job, largely I think because I’d actually heard of Delphi (they wanted it) and because I knew enough about Pascal to talk sensibly about the language.

The scariness didn’t go away though and, whilst I hate to admit it, I uninstalled it (disk space was expensive back then) and the disks and manuals languished at the back of a draw in my desk. Months passed without giving it another thought, then at work we started talking about porting our application to Windows and suddenly it felt like all eyes were on me, especially when we set about creating a set of components to allow us to translate our app. I was tasked with creating the components we would need and suddenly I had to face the demons that had scared me away.

Somehow I managed to get over the paradigm shift, probably by reasoning with myself that what I had actually been doing with most of my DOS applications was handling things like the message loop myself, and in actual fact the bulk of my applications were just events driven by my main loop, which was a very simple message loop that processed keypresses from the user. From that point on, I never looked back and Delphi has been my go to tool ever since.

Over the course of those 20 years, it’s been quite interesting to sit back and watch what else has been going on in the industry. New languages come (and go), others change, frameworks arrive (.net) and then change forcing users to rewrite/restructure to use the new facilities, Java still sucks (this is an opinion based on my own experiences with using it) and of course web technologies have come to the fore (well, this mainly affects the front-end client side – server side, it’s still really the big three – PHP, ASP and Java).

Delphi has been pronounced dead and dying more times than I care to think about it and yet, people just seem to pass it over for new projects. So how about some interesting facts. For example, there have only been four major changes that have resulted in major refactoring as a result of compiler updates… Delphi 1 to Delphi 2 (Delphi 1 was 16 bit only, Delphi 2 added support for 32 bit apps), Delphi 6 (changed how variants were handled and a few other things to support the cross platform concepts for Kylix), Delphi 2009 (changed default string types from single character strings to multicharacter string), Delphi XE2 (introduced FireMonkey and was the first version to support the current cross platform capabilities). But even these big jumps have typically only required users to open a project and then fix a few issues (mainly where they’ve been ‘naughty’ with tricks like accessing string memory directly using a pointer to a single byte char – these statements are based on my own experiences and your mileage may have varied). For the other versions it was very often just open and build and hey presto you were using the new compiler.

So what else makes Delphi great? Simple… the ease with which you can build rich user interfaces (it was one of the first true rapid application development environments), the flexibility it provides (I’ve not really found anything I couldn’t do with it – whether a solution produced with it is optimal in a given arena might be up for discussion, but it is incredibly flexible), it’s cross-platform capabilities (no clumsy intermediate frameworks, no wrappers, just plain vanilla native code running on the hardware), the language (sure it may be slightly more verbose than say C#, C and Java, but I’ve always found it a lot easier to read than those and that’s not because I’ve used it more – I was learning C long before I discovered Pascal, but C just seemed so awkward where as Pascal just seemed to click with me) and let us not forget the Borland masterstroke that really set Delphi and C++Builder apart from their Microsoft equivalents… the Visual Component Library.

To this day, Visual Studio does not provide an out of the box selection of components that gets anywhere close to those provided by Delphi. When I first started using VS in anger (writing my PowerPoint plugin) I was stunned by just how sparse the VS component palette is.

In short… to those who say Delphi is dead or dying… have you ever actually used it? If not, try it. You never know, you might like it. I’ve used C, Java and C# and a bunch of other languages and yet I still keep going back to Delphi. Sure I might have to think about things a little more (like the awful headache of cleaning up after my own code instead of relying on garbage collection) and it may take me a little longer to type BEGIN instead of using { and having to state whether it’s a procedure or a function. Oooh the hardships of it ;)

The weird thing is, I can’t actually put my finger on why I prefer Delphi. I just do. I fell in love with Pascal when I first used it and once I got over my initial fears of Delphi, we’ve been an item ever since :)

So Happy Birthday Delphi, may there be many more :)

Embarcadero are hosting a week of events to celebrate, so Tweet with the hash tag #DelphiWeek and visit Delphi Week 2015 for more information about the events they have planned.

And just to be clear… this post contains a lot of opinion that is based on my own personal experiences. As with many things, your mileage may vary and I’m sure there are people out there who have different opinions based on different sets of experiences :)