RAD Studio 11 Alexandria
blogs.embarcadero.com
blogs.embarcadero.com
To understand why, we need to remember what Delphi was at the time it was made. It directly competed with VB6, an interpreted crap that needed dozens of files in a time when disks were slow. Delphi, on the other hand, compiled large products (we had dozens of modules) in 2 seconds, producing optimized native single file executable. On large forms you could see VB6 controls being painted one by one. Huge Delphi forms were shown instantly.
The development experience was stellar (I guess it still is). I worked for a guy who made DOS software and wanted to move into Windows space (20 years ago). Two of us made a full-blown ERP with over 800 forms and 600 database tables in a year and a half. It was at a time when companies didn't have full-time Internet connections, so we synced the database between customers' branches over ISDN connections using our custom algorithm. This software is still in wide use today and my code is still in there.
My side project was made in Delphi and quickly surpassed my full-time salary, so I formed my own company. The only reason I moved away from Delphi years later was that the database drivers were far less available than in .NET ecosystem (and I make database migration software and need many drivers) Moving to .NET was a pain, but it was obvious that without Anders Hejlsberg Delphi is going to wither down, and .NET is going to thrive and evolve.
Delphi today is a cash cow for enterprise software. Looking at this release, first thing mention is HiDPI support. In 2021.
But I do miss the incredible productivity I had while working in Delphi. A friend once passed by and saw me working. He said "screens are changing so quickly I can't even track what you are doing". We need that development experience again.
Edit: formatting.
Setting aside your particular use of Delphi in your product, I don't think VB6 directly competed with Delphi in general.
The cultural aspects and motivations were very different for VB vs Delphi. VB was more "internal corporate apps" and Delphi had more commercial vendor software adoption.
- Visual Basic in the 1990s was more attractive to ex-DOS programmers previously using xBase/FoxPro/Clipper to write internal corporate applications. The 2000s successor to VB with C#/.NET/ASP continued this trajectory. Both VB and later C# never really got adopted by commercial software shops. VB/C# has remained popular for enterprise LOB/CRUD.
- Delphi was more attractive to programmers who didn't want to use low-level C/C++ to mess around with raw Microsoft Win32 APIs for native executables. E.g. using C Language to code raw "CreateWinddow()" function calls was more tedious than using C++ MFC class wrappers but C++ was still more more tedious than Delphi. There are more examples of commercial software like Winrar, Nero CD Burning, Scooter Software BeyondCompare being written in Delphi. VB never got adopted by programmers to sell/deploy software like that.
Yes, there are a few counterexamples to the above but that was the general trend of the different communities.
Delphi was actually meant for the corporate apps you mean, even the name was a hint to it ("to talk to Oracle you go to Delphi" or something like that). It also came with much better database functionality than VB ever had.
Now because VB was wildly popular and easy to use and had Microsoft's name behind it (which was a big plus) it was used for internal corporate apps a lot, but that was a byproduct of VB being used a lot in general - during the turn of the century it was one of the most popular programming languages by far.
I understand that perspective especially since that's what Microsoft's "official" positioning of those products were.
But the reality on the ground was 4GL programmers in DOS text gui that transitioned to the "new Windows platform" usually ignored MS Access and Foxpro and instead used Visual Basic. In 1992/1993, all the corporate programmers I knew used VB3. My memory is hazy but I think one of the big drivers for VB instead of Access was the 3rd party VBX controls. I don't think you could use VBX in the crippled "Visual Basic" language in MS Access.
Visual Basic had early database access with DAO (Jet engine?), then RDO.
Delphi with syntax for pointers to memory (like C/C++) is a more "powerful" language than VB but I never saw Delphi adopted for corporate LOB/CRUD like VB. Most internal business apps didn't need a language with pointers. Delphi really attracted the programmers that wanted similar C/C++ power but with a rapid-iteration IDE and GUI toolkit.
>Microsoft's name behind it (which was a big plus) it was used for internal corporate apps a lot, but that was a byproduct of VB being used a lot in general - during the turn of the century it was one of the most popular programming languages by far.
But even with all of Microsoft's marketing weight, Visual Basic never got adopted with commercial software developers like this list for Delphi: https://jonlennartaasenden.wordpress.com/2014/11/06/famous-s...
VB didn't compile to native exes. Delphi did -- and that attracts the C/C++ type of programmers who want to release commercial software.
From the very beginning, VB vs Delphi attracted very different profiles of developers -- regardless of the marketing that tried to position Delphi for internal corporate LOB/CRUD apps.
But during the 90s and early 2000s a TON of commercial applications, especially from smaller software vendors were written in VB.
Woah, this is exactly what happened with me too! Back in 2001 I wrote a security app with Delphi and launched it as a side product. Borland got sold and Delphi became expensive, dotnet became a thing, and the rest was history. Several years later, I'm on the 3rd generation of that security product, cross platform with dotnet core, and I've finally quit my day job to work on it full time!
I enjoy working with dotnet and Rider, but I have fond memories of working with Delphi. Compile times were insane, the RAD tools were great, and the IDE just flew - might be rose-tinted glasses, but I don't recall it ever crashing or being slow in any way.
Delphi did use to crash, but not that much. It had its quirks and we knew which ones they were and it didn't impede us.
We now use .NET5 and in some products. WPF for GUI, but new stuff is all made in Blazor.
Being on the bleeding edge means that lot of things in .NET was constantly crashing and not working exactly right, that tooling was broken.
You would think Microsoft would have more resources for something like Blazor. I have learned since that new tech is made by very small teams and accepted that as a fact of life.
Borland really could have saved Delphi, but I guess corporate types started treating their own company as a product, selling it around a few times, and vision was lost.
Intellij gets close in some areas (and for more languages - which is why I pay for it every month) but Delphi felt integrated (which of course it was).
But let's look at my use cases:
1) There is no way you can build a very large and complex ERP in low-code tools. First, you would hit a performance wall quickly, or need something these tools absolutely can't support as not many companies need it. Delphi is alive for 20+ years. How many products do you know that are successful and keeping up with the times for 20 years, and are built with low-code tools? And finally, betting your company's fate on a specific tool made by some other company is asking for trouble down the road.
2) I make database migration tools so I need the best performance and a ton of native database drivers. This means going low-level, querying database metadata, working with primitives of the specific drivers. Which tools can even begin to support these requirements exactly?
Some new versions broke compatibility with previous version's components. There was the case where you paid a good amount of money on some proprietary components and they simply wouldn't work in the next version: you were imprisoned in an obsolete ide. By not being multi-platform (I hear it improved it lately) you could only use it with/for win32 so it lost servers, embedded and mobile. By not being open-source nobody could improve it.
Then it had to compete with "native tools". Whoever develops for windows wouldn't quit ms' tools to use it, whoever develops for mac wouldn't quit apple's tools to use it, whoever develops for android wouldn't quit google's tools to use it, whoever develops for linux was mostly ignored after kylix.
Note that I didn't even mentioned price and license.
They improved it later, I heard. But seems more like the old case of too little too late. Most successful programming languages today are open source and multi-platform. Delphi was dependent on win32 for too long and it still is "too proprietary". You do the world a favor by porting your project to lazarus.
Unfortunately I checked the pricing:
For the cost of the professional version you can buy the all products pack from Jetbrains, with the full version of all their IDEs, including their database tool, and have a thousand Euros left over. Assuming that you aren't buying their personal pack, which is quite a lot cheaper.
The professional version of Delphi does not support database connections, for that you need the Enterprise version at twice the price.
Basically purchasing Delphi or using Delphi makes no sense today, unless you are already locked into the ecosystem.
It's a free IDE for FreePascal and a set of useful packages that work out of the box and give you a "batteries included" development experience, for CLI apps, desktop software and even some simple web development (though admittedly most other languages do web development better). Here's more information about the component libraries: https://en.wikipedia.org/wiki/Free_Component_Library and https://en.wikipedia.org/wiki/Lazarus_Component_Library
Where it shines in my experience is creating GUIs: making a framework that works atop of the system native functionality and abstracts it away was a really good idea - you get a consistent development experience across the platforms (as long as you don't try doing anything too sophisticated) without having to use a common runtime, like Electron makes you. This results in native looking, snappy and not too resource intensive programs. There's even a gallery of what others have made with it here: https://wiki.freepascal.org/Projects_using_Free_Pascal
There are few other platforms that i'd reach for if i'd want reasonably performant desktop software development in a small runtime and with an easy development experience: maybe the old Java Swing or OpenJFX since those are cross platform. Avalonia for .NET doesn't seem quite as stable yet and using Qt Designer would be a tad complex since i'm not intimately familiar with C++ and enjoy languages with simple memory management.
This view is reflected in Embarcadero's pricing models. They are not interested in new users, they are just interested in milking those remaining in the Delphi ecosystem for money until those businesses all liquidate or move on.
I used to be far more optimistic about Delphi and its future, but over those 10 years, I grew far more pessimistic. Delphi was really ahead of its time in the 1990s, but has now been overtaken by everyone, and still stuck in a software development world that no longer exists. It's sad, really.
OTOH it's not so expensive for a professional tool. I paid the same for a game engine. Not having a free tier is a hard choice (I got into programming largely because of an early version of Delphi having a free tier), but it's one that they actively made presumably for some kind of reason.
Among other notable acquisitions under Idera's belt: Sencha (ExtJS), Travis CI, Whole Tomato
Also, in this time and age not including database connectivity to "enterprise" databases such as MySQL, PostgreSQL out of the box is bizarre.
Stuff such as Interbase connectivity is something hardly anyone needs anymore but that is packaged as standard while much more needed features such as connectivity to other databases, extended REST controls etc is available only in more expensive versions of the IDE.
I wish they sold a single version of the IDE (under $200) with additional options available as add-ons which can be purchased commercially. Example: FMX GUI.
Maybe .NET 7 (still one year away) might finally catch up with Delphi.
Or that after 25 years, there is still no C++ tooling that matches C++ Builder, Qt kind of comes close, but still misses the whole experience.
Microsoft for a couple of years seemed to finally understood it when they released C++/CX, but politics killed the project.
Additionally, I think it only reveals the lack of ability to do a mixed architecture product, given that 64 bit Windows does support 32 bit binaries as well. Just like Visual Studio has been doing since VS 2015.
Apparently your competitor wasn't in the position of doing a polyglot project as workaround.
Although maybe that wasn't something that the customer would be open to.
Of course he could have re-written it in C++ and maybe that was what he did in the end, I never checked.
The reason for Delphis lack of popularity now is because the era of the desktop application died around 2012 or so.
Everything is a webpage now, including many mobile apps. The cost we have paid by using HTML and JS as the way to build apps is not well recognized - everyone only does it because there is no real alternative. The Stockholm syndrome is fully matured.
React/Angular etc are the equivalent of what the VCL was to the crude Win32 API and MFC base. React is as close to RAD as you can get without a visual designer.
If I was going to develop mobile apps that were much more than a CRUD like UI, I'd probably opt for Delphi
But in medicine, finance, manufacturing, industrial design, aerospace, hospitality, and so on, almost everything is native desktop apps. Mostly Windows, maybe a little Linux, very little macOS. Look at what your doctor is using the next time you visit. It's going to be a traditional desktop app on Windows.
Many of these apps are undoubtedly made with Delphi or C++Builder.
I think it’s a stretch to call Citrix a traditional desktop app in this context.
Office 365 and Google docs will never be more than Works was capable of, and 3D APIs are so good experience, stuck in 10 years old hardware design, that everyone just tried once more to push streaming instead.
If you want to use the Prof. version and still have DB-access then there exist some open source components like https://sourceforge.net/projects/zeoslib/
OTOH my 20-year project is still trucking along using D2010 and Dbisam as the DB-layer...
You can use open source components or buy components: https://www.devart.com/dac.html
You can get the community edition now of course, but you can not write a utility you use at work.
Also the professional license is more restrictive than the software is (you can connect to MySQL but you are not licensed to do that), finally the tech support at the company are complete shits about allowing you to re-install software that you paid a thousand pounds for, if you don't stay subscribed. I do subscribe to Jetbrains. I get to use C++, Go, C#, Java, Kotlin Python and MySQL. For nothing.
Whenever I speak to him, he raves about whatever the new version of Delphi is.
People rave about what they know, aren't aware HN exists, leave at 5pm, enjoy weekends with family and friends instead of uploading stuff into GitHub, and are happy.
Do programmers today actually value their time?
Do they know how to negotiate good prices for products and services they provide customers and clients?
The quality is Delphi is rooted in the third-party components that help to ship good quality products quickly.
There is a free version that beats anything you can get out of Jetbrains. So why don't folks just download the free version and try it out instead of listening to naysayers and cheap skates on HN?
I mean Uber drivers pay more for their working tools than software developers and they don't whinge about it, when software developers are supposed to be capable of earning more than uber drivers. What's this beggar they neighbour attitude among software developers?
If we want to talk about productivity and power, Delphi is now so expensive that it is in the same neighborhood as a LispWorks licence.
If Delphi was much more powerful it might be a reasonable investment, as it is, it is powerful than most of the languages Jetbrains ship IDEs for and widely more expensive.
It is the tool used by developers whose customers want custom stuff done yesterday, customers whose time is 100s worth more than the trifling sums that open source developers are unable to get even their commercial users to pay for or contribute to.
In the meantime, Lazarus is a fully Open Source multiplatform port of Delphi which is well worth of consideration.
However one thing that is impossible now and i hope that will become possible in the future is project-specific components (ie. having some components that are exported and installed by a project instead of being available for everything) as it'd allow even more visual design. Right now you can sort-of do this using frames but that is only for compound visual components and frames cannot expose custom properties, which is half of the reason to use the visual designer (and the entire reason for non-visual components). Dynamic packages could make that possible.
(note that this is just a feature i wanted in Lazarus, i have no idea if that even exists in Delphi as the only Delphi i used for a length of time is Delphi 2 and the most "recent" i used was Delphi 7 Personal that i got from a magazine cover disk back in early 2000s - i have also checked the demo/free versions of later delphis but never in detail)
I liked Lazarus idea of gazillion targets, until I actually wanted to compile for those targets - started reading forums, manuals, wasted a week. You wanna know why I prefer Delphi? Because all I have to do is select the target in a selector and that's it. So until Lazarus will not require recompile and switching targets will be just as easy as in Delphi, it will remain a toy.
But using Raspberry Pi to judge Lazarus isn't IMO a good idea, desktop development on Raspberry Pi is a bit of a niche case and the device is underpowered, so you'll end up with issues.
Not that it is impossible, i just installed FPC 3.2.2 and compiled Lazarus 2.0.8 (i prefer to compile Lazarus from sources instead of using any binaries as it avoids the broken packages that distros often provide) on my RPi2, though it took half an hour for the build to finish (i did use "make bigide" though, which builds a few extra components and the sdcard is some painfully slow C4). But after that it worked fine.
And I disagree with you, I think RPi is perfect for Lazarus. In my case I used an RPi zero (WH) which currently runs a server I made in Lazarus, a Frankenstein's monster of a server if you want. It controls an electromagnetic lock on my main door, to allow kids to open the door using their phones (Android, I made the app in there in Delphi's FireMonkey). It will also water our plants when we go to vacation, by controlling a pump (Same Android app has another section that will allow to start the pump). Also I connected a webcam and view its output through the same server, to see the plants in question. Probably in the future I'll create my own smart lights and connect those to same server. And same RPi zero has Pi-Hole installed. All in all Lazarus, after initial hurdle, proved quite good on Raspberry Pi. But it's too much hassle compared with Delphi.
Note that i did not write that Lazarus is bad for Raspberry Pi (on the contrary it is among the few actual IDEs you'll be able to use with the RPi considering how weak it is and how overbloated pretty much every other IDE with a similar overall featureset is), i wrote that judging Lazarus based on how it works with Raspberry Pi is not a good idea because it is a niche case, so you will find roadblocks that wont exist in other more mainstream configurations. It is simple reality that not as many Lazarus developers pay attention to ARM-based Linux desktop environments and Raspberry Pi as they do for x86-based Linux desktop environments and x86-based Windows. For most things it works because FPC and Lazarus are good at being cross platform and the libraries are largely the same between x86 and ARM Linux, but things aren't equal.
(of course you can use it to judge how Lazarus works with Raspberry Pi specifically, but this experience isn't something that can be extended to everything Lazarus supports)
WinForms feel more like an abandoned beta version to remake Delphi in C#.
Note that i refer to Windows Forms specifically, not the entirety of the .NET Framework.
As Delphi lost steam, the development of Delphi too last steam and now we have the situation where Embarcadero marks HiDPI support as a feature in 2021.
Embarcadero really, really needs to look at its pricing structure. Giving out a "community" version which does not even have proper database connectivity isn't going to change anything.
For example, there is Mono with Gtk#, but it's not really widely used, supported and overall seems to be dying, much like MonoDevelop is: https://www.mono-project.com/docs/faq/gtk/
After that, there was Xamarin Forms, but they're facing similar problems because in the new .NET there will be a new officially supported framework for GUI apps (they got bought out essentially and there has been little development on their project since): https://docs.microsoft.com/en-us/xamarin/xamarin-forms/
The new .NET cross platform UI still hasn't been released either (well, you can check it out if you have the preview builds) and it might be a while until we can actually judge how well the "official" approach works in its stable form: https://docs.microsoft.com/en-us/dotnet/maui/get-started/ins...
There are third party attempts to fill that vacuum of strong options, like Avalonia, but that's also just work in progress, like every other mentioned approach: http://avaloniaui.net/
Of course, there are also others like Eto: https://github.com/picoe/Eto
The point i'm making is that due to the history of .NET, cross platform wasn't a priority and therefore there is a really large amount of fragmentation, as well as the developer efforts are spread thin.
Contrast to Java, where you basically had AWT, then eventually Swing, and now there's JavaFX/OpenJFX, all of which are cross platform. Similarly, in Lazarus (a FreePascal IDE) there's the Lazarus Component Library which is where most if not all of the development effort is focused.
It's probably also easier to just have to learn one framework and set of tooling around it and be able to work on most projects out there that use that language, as opposed to there being so many different ones.
I do think that you make a good point, however, since not everyone cares about cross platform much and in regards to "native" .NET options on Windows, i'd say that everything from WinForms to stuff like WPF is indeed pleasant. That said, many developers out there also can't afford to (or just shouldn't) ignore cross platform development, so options in that regard are also definitely worth talking about!
Lazarus Opensource Project seems promising.