24 years of Delphi and Delphi 10.3.1 is out Today
blog.marcocantu.com
blog.marcocantu.com
It was definitely cutting edge in the mid-90s, but it has not managed to keep with the times. Most Delphi developers rely on Indy, a third party library of various classes, that provide a lot of functionality the base library should have provided. And even Indy isn't that quick at picking up new features as the world moves on.
When Embarcadero took over from Borland around 2009, they clearly tried to move it on a direction that would encourage more developers. They created ways to build your Delphi application for iOS and Android, which was meant to get more people to write Delphi. It didn't, since the IDE still cost over $1,000 a year. I'd imagine the people who used that functionality were those who were already 'stuck' with Delphi.
Indeed, even as one who engages a lot in the Delphi community, mostly through necessity, notice that very few people join the community without having some legacy application to maintain. And the community as a whole is dwindling anyway.
Embarcadero should have focused on core aspects of the language, which they are finally getting around to. You can now declare variables in the middle of function? That's so 21st century! (Although the forward compiler can't figure it out, so you'll see a lot of red lines in your IDE if you do.)
I won't be writing Delphi professionally a lot longer, though. As I am taking a new job this March, where I am moving on to Go. So it's more a bittersweet good bye for me. Because Delphi is frustrating to work with on a daily basis, but there is a lot nice about it.
- the language has huge community (so I'm not stuck with a dying language)
- it allows me to do anything (huge extensibility)
Unfortunately it is difficult to change the pricing model once you have existing clients. On one hand they are the only ones paying for your development, so you can't lower the price tag. On the other hand building a bigger community takes time, and it won't happen at this price. So unless they become really creative, Delphi won't survice. Pity, I have used it (yeeeears ago) and it was a brilliant product for building UIs, very easy to use and powerful. Haven't seen anything similar since.Yes, Delphi has a Community Edition now (which is free), but the fact that are excluded from a large portion of the library, because you cannot afford it, is always going to alienate some people. And it is always going to feel frustrating, when other languages don't have those limitations.
My office only uses the Professional Edition, because we cannot really afford the Enterprise Edition, which means there were some problems we ended up 'inventing ourselves', because they were only available in the Enterprise Edition.
Delphi probably won't survive another decade (in my estimation), but Pascal will live on as FreePascal/Lazarus.
That's not really the case. With Delphi Community edition you get support for 4 operating systems, VCL and FireMonkey, it only lacks access to Enterprise databases like Oracle and some of the multi-tier architectures. Community has a large percentage (80%+) of the features...
We wanted to do MongoDB connections, which comes with FireDAC. But that's only available in the Enterprise Edition. So we ended up rewriting TMongoWire[0] to fit our needs.
I am sure you can do most things in Delphi in the Community edition, but it's a little too late, unfortunately.
How is that "professional" if you cannot even read/write to sqlite.
https://www.embarcadero.com/products/delphi/product-editions
"Build database apps with local/embedded connectivity" is in every edition.
The only difference is you need Enterprise or Architect to connect to "Enterprise class" databases like a remote Oracle server.
Thanks for the correction.
you can probably just use another Framework like (free) ZeosDB (http://zeoslib.sourceforge.net/)
or some paid ones e.g. from Devart (https://www.devart.com/dac.html)
but still, its frustrating to have to use something else for such basic functionality ...
Why would any company want to start developing in Delphi if the pricing/developer is suddenly going to jump to a ridiculously high number the moment they touch $5K/year limit?
But even the $5k/year limitation came in far too late.
I am very sad to see the way the Delphi community is languishing and slowly dying out.
Also have the Professional Edition and would update if only they took the macOS platform seriously. Again with this update, like the previous few, there are zero improvements for macOS.
Really regret to ever have invested any time (and money as I bought several updates) into their FireMonkey platform. It looks bad on macOS for not using native controls and it looks bad on Windows because the fonts are blurry.
With macOS only being 64 bits around the corner and openGL being declared end of life, one would expect to see some movement or improvements. Nope.
Yes, they have it on their roadmap for 2 years now. Doesn't offer a lot of confidence in that it will actually show up on time. Right now you cannot release a 32 bits app anymore in the apple app store.
So I'd argue that they are very late already. Who is going to invest time into a product you cannot release, but that -pinky promise- will be delivered before you can not even run existing 32 bits apps anymore.
Except, I can get all of Visual Studio for free for Community use, and yet I can't get a completely free edition of Delphi. I think I got a trial, and it failed to compile / run certain projects. It was basically crippleware for me, I couldn't get it to do a damn thing for a number of the projects it generated code for. I will say though, the IDE is fast as hell and it was a very tiny install.
I also would of loved them to have somewhat teamed up with the FPC group to make it so Delphi compiles for Linux in exchange for either monetary support for the FPC group, or enhancements that would make their compiler awesome.
Basically everything in Professional, but free for hobbyists.
The other guy wrote everything in gcode macros using notepad.
Lots of memories though. Giant Enterprise applications we created 20 years ago.
Have to admit I really prefer go and rust and python though. I think I still have all those Dr Dobbs in my basement too. :)
They had a great thing going around that time, but then the pivoting and squeezing started. Instead of evolution we got enterprices, buzzwords and bit rot. By Delphi7, I'd say it was already as good as dead.
All owners so far share an unfortunate tendency to oversell half-baked solutions with no future, all the way up until the point where they pivot and push a brand new successor with no future while deprecating the previous attempt asap.
Their database, Interbase; was open source for about a month. Until the suits realized that no one would buy their shiny enterprice crap if they could simply download it for free, and it was closed again asap. Only now all the people who knew anything had joined effort in a fork called FirebirdSQL.
It was even released for Linux under the name Kylix, free for non-commercial use if I remember correctly. Until Microsoft bullied them into dropping the cross-platform game right now in return for cozy time with the centerfold creep and his side kick sweaty monkey. I just threw up a little in my mouth writing that so I'll stop here.
I missed it terribly when I moved on to Java (getters and setters?!? the horror!). I can't imagine going back now, though. Java is mostly a memory. Javascript, Clojure, and Rust in programmer's editors are enough.
I really dont know who their target customer is, but then again, when I look around, I find tools like windev (PC-Soft) and Clarion (softvelocity) have a loyal following
Except of course that embarcadero, is way more expensive
Free-pascal is cute and probably productive, but there are way more intellectually and technically interesting options, even tcl/tk in my opinion is better intellectual and technical investment of time compare to free-pascal
Embarcadero/Inprise/Idera or whatever they are calling themselves these days have zero vision.
[1] See: https://www.embarcadero.com/products/delphi/product-editions
$5999 first year, $2569/yr renewal
Even with a Pro it's also not just VS itself, but a bunch of other MS products. The exact list depends on how you arrive at getting a subscription, but if you are to take the BizSpark (?) route, it will get you Windows, Windows Server, Office licenses and a handful of Azure credits.
The target customers for the paid editions obviously are developers of custom line of bussines applications. And in that case the license cost is somewhat justified, as the IDE and it's libraries are essentially directly usable for that, while everyone developing similar things in notionally free of charge Visual Studio is going to buy DevExpress and ReSharper.
"If you're a small company or organization without revenue (or up to $5,000 per year in revenue), you can also use the Delphi Community Edition. Once your company's total revenue reaches US $5,000, or your team expands to more than 5 developers, you can move up to an unrestricted commercial license with Professional edition."
In other words, CE only caters to students and those will not invest their time in a dying platform if they are smart.
For both elements, embarcadero and freepascal the promise of easy cross compilation is the most attractive feature in my eyes.
I started programming in Turbo Pascal 20 years ago or so, but I don't know... coming back to the language these days doesn't sound like the most efficient use of my time.
As much as I love making old code new I'm not sure I could stomach a 10 year project.
It's not really 1 x ten year project as such, but heaps of smaller 3-6 month projects (many running in parallel) to add chunks of new functionality (as microservices) and rewrite parts of the monolith that we can cleanly cleave off.
New parts of UI that are needed don't get added to the Delphi app, but get built as web pages (using React mostly at the moment), which get launched in Chrome windows from the Delphi application.
One day our Delphi app will be an empty shell of it's former self and we can have a huge decommissioning ceremony (party!), but that day's still a long way off... :)
Embarcadero prices aren't much different from DB2, Oracle, Visual Studio Ultimate.
And in turn, you get a lot of job offers rewriting Delphi software in C#.
Scheduling software and low level control for stuff like BioTek and PerkinElmer devices, for example.
http://www.perkinelmer.com/product/envision-hts-plate-reader...
https://www.biotek.com/peripherals/index.html
In Germany you still get Delphi related conferences.
Same happened to ExtJs.
Kinda weird for Delphi, as it wasn't really enterprise software during its heyday, but very popular for mid-sided businesses.
I think that enterprise-first strategy has dried up any chances for a community to exist.
We use primarily use Delphi for productivity reasons and think that unless they change their go to market approach, chances of a community reappearing are low.
Perhaps after they have already completed milking enterprise customers, they try to switch to a model of $99/year subscription-only model with a single high quality IDE product and then a community suddenly reappears.
Edit: 39kB was nothing even in the 1995. But there was other more significant issue: if you went for all the database and line of bussines suport libraries you ended up with application that used more 3.5" floppy disks than contemporary Windows 3.1, one for your application and 7 additional for the redistribuable frameworks ;)
What's even more disturbing is the fact that an app which does the same thing in 2019, using a newer version of the programming environment, now takes nearly 6MB or 30MB, depending on which field of the newer versions' dialog you're looking at ("code size" or "file size").
My first experience with a Delphi application was similarly disappointing: I distinctly remember a 300KB binary whose only function was drawing a few lines on the screen (to act as a ruler), and disassembling it in an attempt to figure out why.
There is a reason your app starts at 30 MB and then after you add dozens of forms, database calls, ..., it's still at pretty much the same size, it's the VCL (Delphi's library).
But by late 90s, it was "good enough", and that's when Delphi was at peak popularity.
It's a permutation of "worse is better". Skeuomorphism and hierarchical organization cargo-culted as evil, ignoring that our traditional built environments work using these paradigms.
User-hostile design. Let's replace all buttons and text labels with arbitrary flat abstract icons! See also: nosql and SPAs.
The flat trend was a reaction to abusive skeymorphism; arguing that visual information should be reduced to a minimum.. but somehow ~serious interaction requires a little bit more than layout and font to be enjoyable.
Mac never had extreme skeumorphism. Extreme skeumorphism would be like the common case of DVD player apps made to look real-life DVD players (with all the frustrating LCD-like text displays and tiny cryptic buttons).
It's not about having 3d looking buttons, or having faux-leather on your Notes app, which are the kinds of things Apple did.
Merely looking like a physical product (but with interactivity that takes advantage of what the digital world affords) is not the skeuomorphism people complained about.
One might like or not like faux-leather, for example, but that's just an aesthetic preference (and those things come in circles, in 10-15 years it could be all skeuomorphism in vogue again, as a backlash against too minimal / plain vanilla designs).
Bonus points if the icons are hidden inside various hamburger menus sprinkled across the interface - Atlassian I'm looking at you.
I shouldn't be forced to learn some designer's personal visual symbology to use an app. It's hieroglyphics.
So, basically, buttons are chiseled gray (or other color of user's choice), with prominent 3D borders, but flat where the label is for maximum readability. Just enough to capture the essence of a physical button, but without actually rendering one.
Whatever it is, this is not progress.
Where Delphi shines is the VCL - the Visual Component Library and the third party component market. You can integrate components into the IDE by writing them in pascal. Even now there are still lots of components for pretty well anything - even web development.
It also has cross platform components that you can run on iOS/Android/Mac and Windows (edit: theres also a server side linux one) all with the same code, they are compiled to native and if you want you can write native components on all these platforms.
A lot of windows C# components available for sale are actually written in Delphi
You can connect to databases using components, I've written native socket servers by just dragging a couple of components on to a form. For writing business apps there is nothing superior imho
There are components for web development where you can write an SPA all in Pascal and use components
There's a free community edition available now https://www.embarcadero.com/products/delphi/starter so if you've never looked at Delphi have a look.
It's great that there's community edition for Delphi now. Thanks for the link!
I'd rather not use Delphi, since it's hard to find developers for it and investors won't like it. But there just aren't better or even acceptable alternatives for the type of development I do (3rd wave AI, building a graph database from scratch, processing TB's of data, dynamic visualisations etc.)
So the plan is to build all this unique functionality with Delphi and then, when I have something sellable, perhaps get it rewritten in Rust or something, when those tools have become better.
Even though I'm an old fogie and highly experienced with Delphi, I also do embedded dev. in C and have done so for decades, plus I recently built an enterprise-level PHP online store from scratch. I've been a vocal critic of Delphi for decades as well (even banned on Embarcadero's forums) and in 2019, I do not know of anything that compares to Delphi...
Our last two hires were guys without any prior Delphi experience. They did have Java, C++, Python etc background, tho. We sent them off to a two day intro course and with some assistance they were doing useful work within a couple of weeks.
A small investment IMO if you plan on keeping your employees for a while...
You absolutely MUST click on "I agree to receive Embarcadero marketing communications via email and phone call" before being able to download it. How is this compliant with GDPR? I also notice that if you change countries, the whole form to be filled out also changes (but the above stipulation remains).
Then there's also:
> Licenses are valid for a one-year term subject to the revenue restrictions.
This is definitely the least 'community oriented' product Ive ever encountered!
I'm sorry, but companies doing stunts like this simply cannot be trusted. It's a shame, because I really did want to consider rekindling my love of development in Pascal, but dealing with a company like this is an utter deal breaker. The sad thing is that it's most likely the marketing people in that company that are pushing for this... and I'm sure the developers there would love to have an open community edition, unlike what is actually being presented.
And the beauty of the language/IDE was that you could develop serious, complex applications with it, too.
Is there anything similar on the market today? I had a ton of fun with Delphi as a teenager!
That whole Inprise adventure was pretty bad.
Though their current API situation is still a mess: they can't stop screwing with it. But their .NET situation is as good as it's ever been.
"Anders Hejlsberg: A craftsman of computer language" - interview
https://behindthetech.libsynpro.com/001-anders-hejlsberg-a-c...
WinForms was based on J++'s Windows Foundation Classes (WFC), Hejlsberg's first project at Microsoft. Which of course, was based on VCL.
That mess is the usual DevDiv vs WinDev, for example I read somewhere that WinRT was pushed by WinDev, so naturally it is basically COM Runtime reborn.
My major complain was that we only got NGEN for AOT compilation and not something C++ Builder/Delphi like,
Now there are a few ways of doing AOT in .NET, but it is still not like Delphi.
Delphi has right abstractions in a right place - you designed the form in a easy GUI and filled in methods with your code [0].
Why it was that way? Because it was designed to be simple and it worked (no need for Bret Victor's magic). (There was a blog of former Delphi developer that explained their thought process)
For the record I worked professionally in JavaScript (TypeScript) (backend and frontend), Java (Kotlin), C# and Ruby. I also did small chunks of support code in C/C++, Rust, Red/Rebol, Python, PHP, Go, Prolog and Lua.
If I wanted to teach kids programming today, something easy to understand but at the same sufficiently complex I'd probably choose Delphi (Lazarus looks like Delphi 5/7 from screenshots).
[0]: manual memory management was harder than GC but on the other hand it thought a lesson...
It was probably the first tool/language I got in contact with while in school. I didn't had any idea what I was doing, playing around with the parallel port trying to read sensor data for a school project.
I think I ended with Delphi 7, most probably some pirated copy of the Professional version, to have all those fancy libraries where I had no idea what to do with.
Wondering whether I should get into it for the sake of the old times. :-)
The IDE is best on Mac though. The Windows IDE works, but it feels like the developers are probably all on Macs & not really dogfooding the Windows version as much.
Ignore the "per year" pricing - you can choose not to auto renew & keep using the version you've purchased. You only need to renew if you want IDE / compiler updates (they typically release 4 updates a year).
Btw, his website is under heavy load right now (probably the HN hug?), and this is the error I got:
Error in page: /blog/2019-february-24-years-delphi.html
Error Class: EListError
Error Message: List index out of bounds (-1)
Suggesting that the webserver is written in Delphi... that's dedication :)
How appropo it's a website that's throwing it now.
We would play with Delphi and SmallTalk just for fun and there was always a Dephi fanboi around.
Despite these 'primitive' tools we were so much more productive back then - it's quite sad where we have ended up. We would pump out wonderful apps even in the days before we could get our hands on a relational database. dBase files, VSAM files and even trusty CODASYL did the job without any fuss.
Yes, you can develop 64 bit apps with it, but the IDE is still a 32 bit app, which causes problems with large projects.
The Indy components (e.g. http) are unsafe and shitty.
Personally I don't think there is much to recommend.
So is Visual Studio, for what it's worth.
Also, since Delphi XE8, components for proper HTTP handling, that taps into the host platforms native implementation, has been available. They work really great.
In fact in Windows 95 and everything after it simply looks totaly out of place and the Delphi documentation tried hard to dissuade people from using that and instead presented some idea of what MS's HIG say (notice that Delphi 2 does not use TBitBtn anywhere and tries to match W95 UI style very hard, even more than Office 95), obviously for a long time it didn't really work.
I had to bring up a radio programming tool on a Win98 laptop not long ago ("because legacy kit that still works and is somehow still supported"). First thing I saw, a BWCC styled "Radio Controller Connected -- Please Log On" screen.
Once seen, never forgotten.
I really miss the RAD concept, and I'd love to find a modern tool which had that aspect of Delphi, though perhaps with C++ or Python as a backing language.
I know there's Lazarus (opensource Delphi), but it's C++Builder I miss... wxWidgets is close, but not quite the nice quickly-have-something-presentable environment I remember.
Throwing the cat among the pigeons... does anyone remember Kylix?
I usually use wxWidgets (well, wxPython) for the desktop stuff, but I wondered if there was a better way. It just doesn't feel quite as smooth and polished as Delphi/C++Builder/Kylix were.
Are there contemporary products -- for building mobile and/or web apps -- that are similarly easy to use?
*Anders Hejlsberg -- who also worked to bring us TypeScript.
Also, to add to your point: The TDataset MVC architecture was light years ahead of its time:
TVisualControl -> TDataSource -> TDatasetDescendant
Everything just fits in snugly.
Whoever thought of that architecture at Borland in the early days (1990s) deserves a legacy trophy truly!
https://www.adug.org.au/meetings/symposiums/2019-symposium/
It will have a range of topics including showing how to borrow some techniques from other languages and showing how to use some of the new functionality in the latest releases.
a - About dying and used only for legacy projects. Well, when a company wants something fast to win their customers hearts and push through next phase of moneygrabbing, do you think they care about latest technologies? Dirty Delphi does the job in 5 hours, what in others takes days if not weeks.
b - price too high. Correct, it is. But when you fly your technicians across entire continental US to deal with a hardware problem at one of your venues do you think 5k USD/year is much? That's pocket change.
c - Younger developers do not learn it. Well, younger developers should not learn anything but only one language for at least 3 years, ideally while still in college, and absorb instead algorithms/paradigms/math - skills more valuable then a computer language syntax. Once you master those and a language, no matter what, the entirety of the rest of languages are nothing more then syntax equivalent. Hence grabbing Delphi should be a maximum 3 weeks venture, after that I'd expect that young developer to be able to solve problems. I did just that, with Pascal in my beginnings and over the years/companies I've worked for I learned Java/C/C++/PHP/ASM/VB/ASP/ etc etc. Knowing how to implement quicksort in Pascal is the same as in C++, it's a syntax equivalent, nothing more.
d - Many comments about native - this is a type of comment from proponents. Well, in my experience that nativity was such a hassle for me that I'd rather go away with it and used Dalvik/the new ART instead in case of Android, but it is what it is.
Feel free to AMA.
https://gizmodo.com/heres-how-a-macintosh-tutorial-taught-pe...
Delphi well fit the constraints of the time.
Also, for a time, it totally blew away MS Visual C, although the VCL was hella inconsistent, and that was rather maddening at times.
To be at max productivity you had to scour the web looking for snippets that showed you how to, say, add strings to this widget or draw on that canvas.
The RAD implementation was rather brilliant, and for several years at least blew its main competitor, Visual Basic (ugh) totally out of the water.
Also, why would anyone use Delphi today except for legacy maintenance?
I still use Delphi for new projects by default. Static linking of libraries into one distributable dll or exe makes it very appealing. If I wanted this in another IDE, I'd have to use VC++. Also, Delphi's VCL, a near comprehensive wrapper of Win32 (its true strength) and native support for IDLs like COM makes it easy to roll out working software sooner.
I'm currently writing a natively compiled Excel Addin with heavy use of TThread - a multithreading VCL class for the Windows platform. Lightning fast compile & build speeds will spoil you.
New things include operator overloading of records (structs), compile-time generics and closures/anonymous functions.
Using them you can write code that looks quite different from old Turbo Pascal days.
As for why using it except legacy, yeah... tough question. Well if your target is a Win32-only GUI application, then I don't know much that beats the VCL in getting things done. But that's a narrow niche these days.
Delphi – why won't it die? (2013) (stevepeacocke.blogspot.com)
http://stevepeacocke.blogspot.com/2013/05/delphi-why-wont-it...