Delphi, the best kept secret.

I tire of hearing it. Who uses Delphi? Isn't it old? It's niche? Can I get a job in it? Around 20 years or so of hearing the same ill-considered non-sense perpetuated. It's time to set the record straight, and to be honest too.

There's a lot of negative information floating around about Delphi as a product, and a lot of it is simply incorrect. Delphi's reputation as a result has essentially been smeared to the point that I see information repeated in software developer communities that is fundamentally ignorant. It seems these communities care about technical details, truth, facts, right up to the point that the hear about a language that they don't understand, and then they'll willingly repeat the misinformation. Like ChatGPT confidently asserting incorrect information as fact, which it does about Delphi too, these developers are being dishonest whether they know it or not. I'm not an easy believer in conspiracy, but I'm starting to believe there might be one here.

I plan to be as honest as I can be; and despite my love of the product, as unbiased as I can be regarding Delphi. So I'll start by explaining where I'm coming from. I am indeed biased in favor of Delphi. I've made a career in writing and maintaining Delphi code which has rarely seen a gap. I've worked for the company that manufactures the product, I hold an "MVP" title with them today, and I still work on Delphi code as my regular 9-5 day job. I have the experience with this product. While this should inform you of my bias, it should also convince you that I know this product well enough to explain it to you.

Unfortunately, the one thing that my bias will not let me do, is dive right into the grains of truth, or the flat out incorrect negative arguments made against using Delphi. I must first make some big, great sounding claims, that I hope you'll keep in mind as I then detail the miss-information, or half truths against it.

I was once accused of having a "skills issue" because I stick so firmly to Object Pascal for both my employment and my hobbies. Of course, such accusations could only be made by someone that does not know me. I'm not a "pascal fanatic" so much that I'm a "programming fanatic." I have learnt many programming languages, and many tools over the years, and love nerding out over the details of syntax features, memory management systems, cross platform approaches etc. Yes, I'm senior, in so much that I was programming commercially at the dawn of the world-wide-web, and as a hobby before you could even get your hands on a 16-bit home computer - but, I am not one of those developers that decided to stick with a single tool and not remain current.

So, given that I could have left Delphi behind at any point in my career thus far, and still could with the other skills I have at my command, why would I stick so firmly with Delphi and Object Pascal? I'm sure if you're significantly younger than I am, it looks strange. I'm not going to claim a wisdom that you don't have, well, not with regards to programming anyway. Instead, I'm just going to share my experiences with you.

Delphi today is a powerful development tool focused on rapid application development. Give or take a few caveats that I'll dig into later, it's always been this way. With Delphi, you can, should you wish, drag and drop a UI together, or you can build it in code at runtime if you like. What stands out is not necessarily its "RAD Visual Designer", though this is as huge asset, but rather, how simple everything is to do. The Object Pascal language behind Delphi is elegant, and once familiar with it, you come to appreciate that. The IDE is thoroughly easy and enjoyable to use, well, mostly, and certainly compared to the competition.

With so many large organizations moving away from unified web UI, to native mobile applications, wouldn't it be nice if you could design both the Android and iOS application UI's in a single designer? How about supporting both with a single code base? What if I told you that the very same UI layouts could be repurposed across Android and iOS, while meeting all the design guides required for insertion into application stores, and being driven by a native ARM binary executable, and with hardly any need at all for conditional defines? A dream? No - Delphi does it. In fact, you can build and run that same application on Windows and MacOS desktop targets too! Best of all, it's all pretty trivial to do. After some initial configuration of the IDE and deployment tools, you click a button and your app is deployed to the target device and run. Oh, and debugging? If you have a need to debug your application, you can debug it right from the Delphi IDE while it runs on the target device that it's built for.

What about server? back end?
Well, you can write your back end using Delphi too. From native binary ISAPI plugins for IIS or apache modules, to self-hosting HTTP servers, RESTful API's, or still support that old SOAP/XML interface your employer has laying around. Delphi has been around the block, it can do it all.

What if you actually want a web front end? Well out of the box, Delphi doesn't have a strong offering in this regard, it's a native tool after all, but there are several great third party add-ons to provide this functionality too. From server-served HTML, to transpiled Javascript, to HTMx, whatever you need. It's out there, because the Delphi community and third-party code market is strong and active.

What has amused me the most over the years, is watching co-workers attempting to do tasks which take several days, which I know can be done in Delphi in minutes. I can take advantage of the high-level tools which rapidly prototype any kind of application, and then get every bit as low level as I might need to. It'll let me link to any kind of binary, shared object, dll, or even a managed .NET assembly (so long as that assembly is compiled to support interoperability). Delphi is powerful, and has been responsible for a huge industry of successful start-ups over its decades of history, which stand as world leading applications today. Why have I not switched? Why would I? This tool is almost too good to be true, and it still lands my salary every month, every year.

On the negatives, I'm going to start with what I believe is the only one said against Delphi that has a grain of truth to it. I'll apologize in advance that this is going to be the longest portion of my post today, but there's a lot for me to say, and it is important in understanding where Delphi is as a product today.

It's true that when compared with many other developer tools today, Delphi's popularity is lower. Even this position however, is deceptive. Delphi has millions of users world-wide. The truth is that the perceived popularity of Delphi from outside it's user base is low, because by-and-large, it's user base doesn't have a strong tendency to promote the product in public. It's only a little tongue in cheek to say that they're too busy writing code, to be troubled with yelling about their tools online. Like a trusted old saw in the wood-workers shop, or a wrench in the corner of the auto garage, Delphi just continues to do it's thing without making a fuss.

Now, you may have noticed me describing Delphi as a trusted "old" tool, and this is somewhat true. Delphi has been around for a long time, but as I'll come back to in a moment, this does not mean that Delphi is not modern. Before I explain this ambiguity however, lets talk a bit about it's age with regards to its popularity. The history is quite interesting.

I've repeated this statement many times, and I'm unashamed at mentioning it again here. Delphi was originally, and for many years, architected by the same man that is today the Chief Architect for Microsofts C# and .NET, Anders Hejlsberg. I repeat it here because it's quite relevant. Being born of the same mind, Delphi and C# have quite a lot in common in fact. Yet, while C# is arguably the undisputed king of the application development world, Delphi continues to suffer this low-popularity reputation. Why is that?

Well, because they were, and still are competitors. You see, back in the early years of Delphi the world was really only using one operating system, Microsoft Windows. I'm talking of the days before the rise in Apple popularity, before mobile phones even existed, and certainly before they were "smart." There were three tools available for application development on Windows, and those were Visual Basic, Visual C++ and Delphi. Visual C++ may have had a slight edge on Delphi in terms of user counts, simply because it was the Microsoft product for targeting Microsoft Windows application development. I'm sorry to say it of Visual Basic, but it's popularity was certainly lower than that of Delphi in its day.

When it came to a choice of application development tools, there were only the above three options. Sure, you could use one of the C++ compilers available for free at the time, but you'd be working without the rapid application development tooling that the other products had. You'd have had no "visual designer" of any kind, and would have to raw your way through the windows API. There were those that did this of course, but the majority of corporate software houses would have been using either one of the Microsoft Visual tools, or Delphi.

This was no accident either. Prior to the emergence of Microsofts Visual development line, there was only one company that was respected or taken seriously for application development, and that was Borland. Borland, the makers of Delphi at that time, were known for Turbo C++ and Turbo Pascal, the predecessors to "C++ Builder" and "Delphi" which are today manufactured by Embarcadero.

So what went wrong for Delphi? Well, Borland made a series of business decisions that to those in the Delphi user community seemed very strange. Delphi was already wildly popular and gaining popularity, yet the company decided they wanted to focus on selling "professional services" instead. This odd decision was coupled with Anders deciding to leave Borland in 1996 to join Microsoft in developing C#.

Now it's true that by this time, Java had seen a huge up-swing in its success, and Microsoft claimed that they wanted a product to compete with Java - but, what they claim doesn't seem to match the reality. Java's popularity was driven predominantly from the fact that it was cross platform, which C# and .NET were absolutely not. For the longest time, outside of open-source efforts, C# was about targeting Microsoft Windows, be it desktop or server. I suspect that the truth is a little murkier than this. I think Microsoft were feeling the pressure of the rising popularity of both Delphi and Java, and wanted to squash them. They wanted someone that clearly understood what made a language useful, and popular, to go do the same for them, and oh boy did they get it with Anders.

C# and .NET were marketed incredibly well by Microsoft. For instance, they didn't trouble themselves with talking to developers, or team leads, or managers, no, they targeted the C-level leadership members of organizations. With their existing strong reputation for having the worlds leading operating system, and the money to spend on market research and marketing, they were popping up everywhere that decision makers were holding up. Meanwhile, Borland were floundering, making odd decisions about going into professional services, and carving their business up into separate entities for their development and database tools. If anything stole away the popularity of Delphi, it was C# for sure.

What happens to a product that is wildly popular, and then suddenly loses its popularity? Well, in the case of Delphi, while many had switched their green-field development away to C# or other tools, those that had existing products written in Delphi, continued to maintain them in Delphi. You have to understand that almost everyone had Delphi in their shop in some form, even if their main development was not done in Delphi, it had been a tool they could not afford to ignore. To this day, the number of products still using Delphi continues to surprise me. I don't have numbers, it's difficult to assess in all honesty, because, while there are many popular products that you've heard of written in Delphi, most of them you've likely never heard of...

Delphi based products are still market leaders in line-of-business applications the world over. In the UK and Europe, the leading management software for leisure facilities and one of the leading applications for hotel management are Delphi applications, I know because I worked on these products. I'm not sure where it fits today, but I also worked on an application which served the largest telecoms networks the world over, backed by the largest Oracle-RAC database in the world, and a Delphi application. Theme parks, including the giant names that come to mind when you think of them, are run by a Delphi application, again, I know because I worked on that application. My current employer is a world leader in dairy herd management. Having worked at Embarcadero, the current manufacturers of Delphi, I know that it has a strong foot hold in Media, Nuclear facilities, Railway management, Oil extraction and refinement, Air travel, Banking, NASA still uses it, and this is just scratching the surface! Many organizations still operate products that they've been maintaining for as much as 40 years, written in Delphi...

Wait, Delphi hasn't existed for 40 years, it just celebrated it's 30th Anniversary, how can these organizations be maintaining 40 year old applications in it? Well, Delphi's backwards compatibility is second to no other product. Prior to Delphi, Borland were selling its predecessor Turbo Pascal, and Delphi remains to this day, largely backwards compatible even with Turbo Pascal - though, these code bases have seen heavy maintenance over the years. Porting Turbo Pascal to the latest Delphi would be a considerable effort today, but it's still doable, which can't be said of any other development tool with such a long lineage except maybe for raw C/C++.

Yes, I just said that Delphi has been around for a very long time, and that products as old as 40 years are still maintained using it. However, Delphi hasn't stood still over its 30 years either. You see, we left our story of Delphi's history above with C# gaining traction in the market, and Delphi losing its popularity with Borland mistreating the product commercially. Well, for a long time, there was no new release of Delphi. As much as the rise of C# had harmed Delphi's popularity, the fact that Borland essentially gave up on the product harmed it further. Most software houses got stuck at Delphi 7, which was pre-unicode, supported Windows only, and was limited to 32-bit applications having been created in the days before the ubiquity of 64-bit desktops and servers. For many companies it was hard to let go of Delphi, because it was, as we'd call it today "Full Stack." They had critical servers and services written in Delphi, and products that still needed to be sold, in a world in which the rise of web technologies made unicode support essential.

The Delphi community is amazing, and it's third party ecosystem rich. The organizations that were able to hold on to their Delphi products were able to get by, and there were eventually new releases from Borland (though the history is foggy to me now, they were at some point renamed), but the new releases, while they looked more modern, did not address the lack in technologies supported. The "smart phone" had been born, apps were all the rage, and Delphi didn't have a foot hold. That is until Embarcadero came along.

Embarcadero was founded in 1993 and had a strong position in the database tools market, they'd even been Borland customers for Delphi. In 2008, Embarcadero acquired the Delphi and C++ Builder product lines from Borland, and set to work improving it. In relatively short order, a new compiler was written with a compatible front-end to the previous version, but an entirely new back end. It supported 64-bit windows, and had unicode support too. Embarcadero set out aggressively clawing back the floundering Delphi market. Soon after, Delphi could target Mac OS, and then Android and iOS targets too.

Embarcadero did the heroic thing that the Delphi user base needed, in renewing the product, and rebuilding relationships with their customers. They didn't stop here though, they went out in search of new business, and they did a stellar job of it too. Despite their efforts, Delphi never again rose to quite the same levels of popularity for green-field development as their rivals, but because of the number of "secret" users out there, they've come closer than you might expect. Delphi today is something of a best kept secret in the software development world, and many developers are missing out on its opportunities either because they don't know about it, or what they do know is dated or wrong.

Most importantly however, is that being a mature technology, based on generating native binary code, Delphi is able to target all modern server, desktop and mobile operating systems. With Linux Server absolutely supported, but Linux as a Desktop being a caveat that requires work around. It is able to link to C and C++ written object code, shared objects or dll files, it can consume .NET assemblies (if they're built to support interoperability), and even has a shoe in the door of plugging python into its applications. Frankly it interoperates with everything pretty well, because of efforts both on the part of its manufacturer but also it's amazing, rich third-party ecosystem. Delphi has a helpful community unrivaled by any other development tool.

Delphi also acquired new language features along the way. By new, I mean, well there haven't been many new language features in some time, but those that have come about, Delphi has. Interfaces, Generics, Anonymous methods, etc. There are some features present in some languages that Delphi does not have of course, the syntax features for a language do depend on what makes sense for that language, but by-and-large it is at parity with the major compilers available today.

Delphi is not old. Okay, it's older than many popular languages today. It's the same age as C/C++ if you go all the way back to early pascal, but it's not showing its age. It's actually simply mature. It can do it all, and without much fuss.

And now, I get to the fun part. Talking about some of the misinformation surrounding Delphi.
Originally the pascal language was indeed procedural, because it was around before compilers began introducing object oriented programming, but that is not what Delphi is today. Consider the C/C++ lineage. C got classes and was first named C with classes, renamed to C++. Well, right around the same time that C++ came about, Object Pascal came about too. Delphi, being based on Object Pascal would never have had nearly the popularity it once had were it not for OOP. What makes Delphi different is that both C and C++ continued on as separate products, each continuing to evolve. Pascal just evolved, there's no maintained version of pascal today that is only procedural, instead, pascal is object oriented but still supports procedural programming should you wish to use it.

I've heard it said very recently that Delphi "uses pascal" and is therefore a procedural language. You see, if you were to type in the right search term, say, using the word "pascal" instead of "Object Pascal" or "Delphi", you could indeed find a reference to that old early 1980's pascal compiler that was entirely procedural. What I heard was a YouTube presenter talking about Delphi, who had obviously never used the product, and had made this mistake. This is the trouble with having a product as mature as Delphi is, information is not just out of date, but wildly so.

In a similar vein, I've heard it said that "Pascal is a learning language, therefore Delphi is a toy." within a day or two of hearing "Pascal is hard to learn."
When Niklaus Wirth invented pascal, he did indeed invent it as a language to teach students, a learning language so to speak. What Niklaus Wirth invented however, while it remains the fundamentals of the modern pascal language, has no direct bearing on what became one of the leading application development suites of the 90's, and no bearing on what that language is today. If Delphi were merely a toy, I wouldn't be here writing this post, I'd have switched to some other tool at some point in my career, out of necessity, and I'd have never looked back.

Hearing the flip side of the same argument, that pascal is hard to learn, is really just the icing on the cake. It was originally designed as an educational language! The truth of this is that pascal has become unfamiliar. With almost every popular programming language today being some loose derivative of C/C++ syntax, pascal is seen as being too different to learn. I get it, I have become familiar with several programming languages over the years, but I have resisted learning Python. Why? Well python is too dissimilar to either Pascal or C-based syntax for me to be interested. In fact, it reminds me in many ways of Basic which I wrote as a hobby in my childhood, but none the less I've not taken the time to learn it (well a little but not in ernest).

What I don't do however, is go out of my way to claim that Python is a jumped up interpreted knock off of old Basic, not capable of real development.
I wouldn't say that, both because it's not true, and because I don't know the tool well enough to make such a false claim in the first place. Python as it happens, appears to be amidst a meteoric rise in popularity that shows little sign of quitting, I should probably give it some time, and that's where I'm at with you when it comes to Delphi. If you don't know it, you ought not be spreading misinformation about it, and should probably consider giving it some time.

This argument "Don't learn Delphi if you want a Job." is such a stupid position to take that I almost don't want those sharing it (or believing it) to be a part of the Delphi community. Sorry, I know that may sound a bit sulky, but give it some real consideration...

Quite aside from the fact that Delphi still has a healthy enough user base to tolerate new talent, the argument it's self is a form of lazy ignorance. If you're only learning a language in order to land a job, you're at best a mediocre software developer. I've never been employed as a web developer, but I've had no choice but to learn some Javascript. I've never been employed full-time as a C# developer, but I've had to use it for work, even to interoperate between it and Delphi. In both the cases of Javascript and C#, not only have I had to learn them to some degree, I've wanted to! I have written hobby code in both, and in several other languages. Heck, I still come across good reasons to understand assembler!

What I'm getting at is this. If what you want is to easily land a job, well then sure, learn one of the many languages that are being used in popular online businesses or start ups. I'm not going to make this a firm claim, but I strongly suspect you'll be looking to land the next job in under 2 years, having either been let go due to company issues, or having been let go because you're simply not very good. A good developer is passionate to learn about programming because it's fun, rewarding, and profitable, not just to land a salary. A good developer, with long standing career prospects, knows a minimum of three programming languages, regardless of them ever having had to use them commercially.

This is where I will claim some wisdom of age, you see, I know that the jobs market is competitive and tough today, and you're constantly having to learn new fame-works to remain relevant. Just because it's rough today does not mean it's been an easy ride in the past. My job security today comes not only from having experience in Delphi, but knowing that if the need arose, I know how to switch to something else. I didn't earn this security by feeling safe, I earned it because I wanted my career in software development to be long standing. Having to know a lot of different tools has always been necessary.

There are newer languages available today, from Rust, to Zig, to Odin, and many more. In all cases, I think that their commercial use remains quite a limited market today, particularly in application development. Do I dismiss these languages because I don't see many job opportunities for them? Of course not, being a good developer is honing a skill, and that skill involves knowing how to code, beyond simply understanding some language or framework. Looking at how these compilers work and what they can do, offers insight into what makes good (or bad) practice, and lets me reflect on my standing decision to stick with Object Pascal.

Lets face it, if you're a fan of any of the languages that I've mentioned here, or you're a fan of Python too, which despite it's rise in popularity is still not the overwhelming share holder of the jobs market, how would you go about making these languages more popular? The answer is to go code stuff in them. Show them off, show what they can do, show them to your boss! If you take the time out of your regular job to build something on the side, something useful to your employer, and you tell them it's made in a programming language they've never heard of, well, then they have a reason to investigate what that language is.

This remains true of Delphi. See what you can build in it and you'll discover it's possibilities. Make something useful in it, and you might just become a part of it's return to popularity. You'll learn something else too. You'll see just how wrong you were about the other languages you've used. There is a reason that I remained with Delphi all of these years despite having tried many other tools - because it's damn good.

I'm not going to lie here. Delphi has a somewhat steep cost of entry, however, it IS reasonably priced and there are some great options to get started for free.

You see, Delphi is a commercial product. It's not some open source dream tool with tons of hype. It's a practical Enterprise Grade application development system with a strong heritage, strong community, and tons of functionality out of the box. This kind of product doesn't emerge because of a single developer, or a handful of developers, it's had years of heavy investment, and it has a license fee. When you see the license price, you might well get some sticker shock - but here's what you should keep in mind...

When comparing the Delphi feature set to any other development tool, you'll find that it's actually not expensive at all. If you want to get the same features out of Microsoft tools for instance, well you will pay around the same, if not more. Delphi is sold under a one time perpetual license model, once you've bought it, there's no subscription (well, there's an optional subscription for updates), and there's no royalty on using it. If you buy Delphi 12 today, you can use it to make any application you wish, in perpetuity, and sell that application without owing anyone for it. The IDE will never stop working on you because you didn't pay a subscription. So, when compared to an annual subscription to the Microsoft tooling, at the same feature level (same number of targets etc), you'll find that the price is actually approximately the same. What's more, when you compare it to anything cheaper or free, you'll find that they simply don't have feature parity with Delphi, and so the comparison does not make sense.

But who wants to fork out so much up front to learn something new, right? Well, there is a community edition which is available for free, and the product is also available in trial. Wanting new customers, if you use the community edition or the trial, you will be asked to give over some contact information so that their sales team can later give you a call. Look, I know that can be annoying if you just want to try the thing out, but it's really not too much hassle. If you're not interested, say so, and they'll never call you again - no sales person wants to spend time chasing down people that don't want to buy what they're selling.

If you really can't stomach a license fee or a call from a sales rep, well then, there's always Lazarus. Lazarus is an open source alternative to Delphi. Out of the box, the IDE isn't pretty (on windows at least), it looks dated and ugly. This can all be fixed to some degree, it can be made to look a little more modern, it's loose floating windows can be docked, it's theme can be made light or dark to suite - but open source being what it is, Lazarus doesn't arrive this way, or make it obvious how to change things. That said, regardless of how it looks, it's a solid and stable IDE which provides access to a high quality open source object pascal compiler, mostly compatible with Delphi. It even has a mode which attempts to clone the Delphi compiler called "DelphiUnicode".

I can't promise the same smooth experience with Lazarus as you'd get with Delphi, simply because it's not a commercial product, but I like it a lot and you could use it to learn a thing or two about modern pascal.

Enough is enough. I saw comments on that platform that Elon calls "X" just earlier this evening from people saying "Delphi is old" "Delphi is niche" "Delphi is limited" The only true negative against Delphi is this continued spread of ignorance regarding it. Is Delphi the hot new tool in the valley? No, but it's probably more capable than that tool is, and easier to use too. Where most of the compilers available today are designed for a specific niche purpose, object pascal remains a general purpose compiler. While many other tools appear to be more popular, object pascal is still generating world leading applications to prop up a wide spectrum of industry verticals, it's more popular than you think it is.

What Delphi needs more than anything is to be noticed (again), and tried. Give it a fair shot, see what it can do. Do join it's communities on Facebook, Twitter (X), Stack Overflow, Github, you'll find them inviting and friendly, a rare thing today. Most importantly, they'll help you get over your initial learning. To simply dismiss the product because you are ill-informed is tragic, not only to the community that would welcome you, but for your sake too.

You need some Pascal in your life!