Delphi – why won't it die? (2013)
stevepeacocke.blogspot.com
stevepeacocke.blogspot.com
The IDE itself is dated and no longer competitive with the best of the modern IDE's. The language and API however is updated and productive. You just need to get over Pascal-style syntax instead of C-style, and you are just as productive in it as if you were using C#.
Why is delphi still hanging on?
1. It delivers executables that need no dependencies. No VM's, no runtimes, no add-on dll's. Underneath it only needs x86 and win32 (unless you're building for mac, android or iOS, which it also supports). I wouldn't be surprised if our software still ran on windows 2000. Since the code is native, performance is never a problem even with wildly inefficient code.
2. It lets you build GUI software really quickly. Productivity in delphi for someone used to it matches any "modern" GUI development platform. Sure, the IDE misses a few features that competing IDE's have, but on the plus side it compiles ridiculously fast (a full build of 2 million lines takes less than a minute on a single core).
3. Delphi is the easiest platform by far to have legacy code on, because the maintenance cost is very low. Delphi's contemporaries (classic VB, MFC) have all gone through major upheavals. Delphi has managed to modernize the API's without breaking legacy code too badly (they even managed to elegantly retrofit unicode into the platform). This is why codebases that are based on Delphi somehow never get ported away from it.
Delphi's competitive with other desktop and mobile development platforms, even at what they're charging for it. What they're charging for it is the problem though. Only people already using delphi buy delphi, and so the perception is maintained that delphi is effectively dead, even when it isn't.
It's also designed to compile fast and to native code. Maybe it's not as mature and robust as Delphi yet though.
Compile-time wise it is very impressive (the compiler which is self-hosting compiles in under 30 seconds on my computer). It also resembles Delphi and Pascal in some ways and I am personally very productive with it.
Delphi compiles source code almost as fast as it can read it from disk. Megabytes of sourcecode per second on a 486.
I was overwhelmed by the feeling that designer of MFC doesn't want me to get anything done but instead wants to take me on neverending tour of the peculiarities of underlying libraries that were built for 16bit ancient windows.
In a code base like the one I work with all the way back to Delphi 3, there are other legacy issues as well; such as the late arrival of TBytes, which meant that in olden days you had to handle binary data in strings. Now suddenly they are unicode strings are far less reliable for unicode.
Of course, the compiler doesn't warn you about that, because it isn't clear what you were doing back then. Still, took us a year to get our code from Delphi 2007 to XE3.
I am not saying Delphi is the worst thing ever, but I wouldn't say its legacy support is as elegant as you put it. There are issues, that are not noted by the compiler (unlike the deprecated flag for old functions and the like).
Also the fact that it used to have both {$ENDIF} and {$IFEND} is amusing, but at least now they only want one; but you cannot change it because then it would break code that needs to be compiled in an older version of Delphi.
Edit: But I will say this: I do believe unicode was introduced into Delphi as elegantly as possible. It's very hard to do truly elegantly, I'd imagine.
The same goes for maintainability. Upgrading the codebase was a sizeable effort for sure, but in my view it was less than it would have been had it been developed on another platform.
PHP currently supports unicode in the same way as lua or C - every string is a binary string. If you want correct UTF-8 behaviour in string functions then instead of using libc or string_ functions, you must pass the character set as an additional parameter to specialised mb_ string functions instead.
But ... I threaten to move to VS2008 and make pure WinAPI applications. However, with no GUI designer and GUI library it is maddening building anything large.
Remarkable!
Courtesy of its simple precedence grammar ... as we all undoubtedly remember ;)
Yeah the build times were stupidly fast.
Lead to some bad habits though - e.g. Why debug when you can trial & error 10 solutions per minute (on a weak box)?
The first time I used VB/C++ I thought the IDE had crashed because it took so long to build...
Isn't this TDD?
More like a 17 year old too lazy to learn proper debugging, but yes - it works and I'm not surprised its got an official name. :D
Delphi takes it to a ridiculous level though. Often its faster to trial & error the exact syntax for a function than to look it up on the help.
I prefer to code in Common Lisp on the REPL and do the same thing as you most of the time since each iteration step is so fast. (Change a function -> update it in the live running environment -> test ...)
One thing I've been wondering about lately is if Free Pascal is a good alternative to C or Go for shipping self-contained static binaries to run on *nix. I haven't tried it yet but the small(ish) static binaries the Free Pascal compiler produces and the lack of libc dependencies in theory make it an attractive option if you want to write something to run on OpenWrt on your router. Has anyone here used FPC for that? How are the MIPS and ARM backends?
I saw just recently, via SourceForge's email newsletter, that Free Pascal made it to SourceForge Project Of The Month (POTM):
http://sourceforge.net/blog/april-2014-project-of-the-month-...
I've used various Delphi versions, a little, for personal projects [1], off on on, and liked it. A pity that the free Turbo Delphi Explorer version was discontinued. (TDE was released and then stopped when Borland was in its CodeGear incarnation some years ago.) As others have said, hope Embarcadero comes out with a low-end free or low cost version of Delphi. (They did have a Delphi XE Starter Edition, not sure if it is still there.) I've also read off and on that Delphi (and other Borland products) were/are big in Germany and other European countries.
[1] http://jugad2.blogspot.in/2010/08/digital-clock-v10-in-3-lin...
From the article:
> Being highly productive has seen single Delphi developers produce software that would otherwise require a team of 5 developers. I’ve been in a team of 3 developers that out programmed a corporate wide application by having it up and running in a few months compared to another team I know of over 30 Java developers who 18 months later still had not produced their application.
I believe this to be completely true. At least for boring internal enterprise apps within corporations, the new languages/platforms and especially modern program design paradigms with their multiple tiers & supporting libraries, multiple levels of indirection resulting in 30 level deep call stacks, etc results in productivity perhaps 1/4 of what you could achieve with a product like Delphi.
Now this is just my opinion, and it is shared by many others, but there are even more who would vehemently disagree. Yet this isn't some "eternal mystery" class of a disagreement, for the type of application that Delphi is appropriate (very important), it can be very easily demonstrated if it is or is not more productive for the task at hand - the differences are so stark that the conclusion is undeniable. Yet, if you were to propose Delphi as a development platform, it would in most cases be career suicide.
I would suggest some of the main reasons for this are:
- as a developer, choosing Delphi is virtually career (skillset) suicide
- it lacks much of the more modern "cool" language features developers so love to play with
- (as a result) choosing Delphi as a platform is risky due to the small and shrinking developer base
What type of application is that, in your opinion? Would you use it for a web-based app? (Many boring corporate apps are now web-based, and not just because the developers want that. The business people often want it too.)
> new languages/platforms and especially modern program design paradigms with their multiple tiers & supporting libraries, multiple levels of indirection resulting in 30 level deep call stacks, etc results in productivity perhaps 1/4 of what you could achieve with a product like Delphi.
Modern languages don't particularly encourage or discourage that style of programming. Let's assume we're comparing Delphi to Ruby and Python as the modern competitors for the high-productivity, just-get-it-done language. Those languages have standard libraries with rather minimalist APIs, so I don't see the bloat there.
Now, it's true that frameworks in those languages, like Django and Rails, and huge and have deep callstacks and lots of indirection.
But those frameworks are big because their problem domain (dynamic web app development) is so big and complex. I challenge anyone to find a framework in any language that 1) is as powerful and flexible as Django or Rails, 2) is sanely coded, and 3) doesn't have deep call stacks or lots of indirection.
Maybe I'm way off base, and you're not talking about web development at all. I went that direction because web development is what I think of when people start talking about boring business apps.
The big difference to me is the automatic binding of data from the database through to the UI, you're "done" the requirements so quickly that the currently standard practices of "improving" things with some design patterns and what not gets skipped. It's not so much that Delphi's language capabilities are superior (other than the binding), I think it's that so much of the currently fashionable bloat is more likely to be skipped.
> Modern languages don't particularly encourage or discourage that style of programming
I agree...this is not forced on us by modern languages, it is current culture/fashion. There are so many cool geegaws out there today, it would be a shame to not use them such that you can include that experience on your resume (to hell with the additional costs and complexity, let someone else worry about that.)
I'm assuming you meant the last paragraph of your comment in a sarcastic way :)
I think this is mostly a lament of how very, very, very horrible web-based apps are for the developer. Delphi gets you pixel-perfect interfaces that work on a 486 with windows 95 right up to todays windows 8 (there is a version of delphi that would get you 3.1 support as well). With one recompile, the same app runs on android, ios. I have trouble writing a web-app that supports 2 browsers (and especially have not found a way to test that this is so without manually going through the app), yet every delphi app supports over 8 runtime environments.
> Modern languages don't particularly encourage or discourage that style of programming. Let's assume we're comparing Delphi to Ruby and Python as the modern competitors for the high-productivity, just-get-it-done language. Those languages have standard libraries with rather minimalist APIs, so I don't see the bloat there.
On the web there just isn't any other way of doing things. This is supposed to be flexible and "good" design, but here's the catch : changing one tiny thing in the backend requires you to change (e.g. go from 1 to 2 phone numbers per customer) :
1) the backend itself
2) the business rules in the second tier
3) the RPC/REST/... interface to the second tier
4) any and all frontend code interacting with this data
In delphi, by contrast, you change the backend, and that's it. At runtime, mind you, you don't even need a recompile in most cases. Tables will automatically start showing it, forms will magically contain the new field.
> I agree...this is not forced on us by modern languages, it is current culture/fashion. There are so many cool geegaws out there today, it would be a shame to not use them such that you can include that experience on your resume (to hell with the additional costs and complexity, let someone else worry about that.)
I think part of the question being asked here is "how do these help application development" ? How do they improve the applications ? Well, they make them worse.
Not the OP, but I wanted to chime in that I think Delphi's forte is, was and will always be desktop-based GUI apps. That was always the main point.
Admittedly, I haven't touched it since the early 2000s, but I can't imagine that it could compete as a language/platform for anything else these days. Its power comes from the tight GUI design/language integration, the brilliance of which is still unmatched by tools like Interface Builer; but the language — even with features like generics — hasn't been able to keep up.
That said, in the late 1990s/early 2000s, I was actually using Delphi for headless backend apps. They were distributed, fairly complex backends connected using DCOM and interfacing with Windows technologies like TAPI and MAPI. We had to integrate with C libraries (linked as DLLs) and had to convert the header files to ObjectPascal. I actually wrote a tool called htrans that had a hand-coded C/C++ parser that produced very good ObjectPascal translations, but it was still a chore. Talk about going against the grain.
In hindsight, I should probably have been using C++, and a lot of the problems our team had was due to the fact that we were trying to use Delphi for something that Borland just wasn't focusing on. But we did love the fast develop/compile/run cycle that Delphi provided, Delphi's OO was great at the time, and the apps worked. The difference between Delphi and C++ back then felt a lot like Rails versus, say, J2EE. It was incredibly easy to develop stuff.
* An insanely fast compiler
* Statically linked binaries -- no DLL hell (still important for certain kinds of applications)
* A proper module system, no need for precompiled header nonsense
* A UI framework/designer as easy to use as WinForms, at a time when the alternatives were MFC or Win32
* An easy upgrade path to 32-bit Windows
As long as you were ignorant of the world outside of a PC and Windows, it was nirvana.
Turbo Pascal/Delphi was probably nirvana.
I never liked C, because I already knew a few Turbo Pascal versions before getting to learn C.
So the language was always meh for me, but then Borland blew it up with their schizophrenics moves and allowed C and C++ usage to grow in the PC world.
Maybe it is rose-tinted glasses, but I remember having a significantly more pleasant experience working wight the VCL (through C++ Builder) than with Winforms.
http://en.wikipedia.org/wiki/Anders_Hejlsberg
I read that he got $1 million (or more?) for leaving Borland for Microsoft.
He's also worked on:
http://en.wikipedia.org/wiki/TypeScript
, Microsoft's enhanced version of JavaScript, which has been in the news somewhat lately.
The summary for me is that Delphi was more productive and way better designed than VB with the performance of C. I never understood why it didn't have a broader following. My guess is that developers enjoyed the challenge of C/C++, call it an aesthetic judgement.
I sometimes wonder what Delphi would look like today, had Anders not joined the MS fold.
Long story short, when MS turned the full weight of their organization on Borland and sunk them it opened my eyes to MS's corporate behaviour. That's how I learned that MS always played dirty. It set me out on the road to looking for alternatives to Windows. It's ultimately why I'm writing this in Firefox on Ubuntu.
In ref to the blog post (or whatever it is) I thought Delphi was no more. Just goes to show, here is a link: http://www.embarcadero.com/products/delphi
From 1997: "Borland International and Microsoft have settled a Borland-launched lawsuit that started on May 7, 1997, in Santa Clara County, CA. In the suit Borland alleged that Microsoft had hired 34 Borland employees over the past 30 months in order to steal Borland trade secrets."
Just WOW. 34 employees.
There's plenty not to forgive Microsoft for. It's just so much cuddlier mow that it's a little desperate.
Delphi worked because they could control the language and mould it to fit the requirements of the VCL and of the IDE. With C++Builder, they had to introduce special proprietary extensions to C++ (which may have been, like Qt, implemented using macros internally, I don't know) such as "__published" and "__closure". Another factor was that Delphi's fast one-pass compiler allowed incredibly fast GUI-development; the "modify, compile, run" cycle could take literally seconds. C++Builder's use of C++ meant this cycle slowed down tremendously, even with tricks such as pre-compiled headers. C++ had other problems. It just wasn't a good idea.
Hejlsberg's C#/.NET design was necessary, although I agree with your other assertions. As far as I know, .NET was never able to replicate Delphi's genius, and a one-platform, proprietary language was a bad idea even back then.
Ever since, I've been using prints and command line. :-(
Why was there no linux port of BP7?
http://en.wikipedia.org/wiki/Kylix_(software)
The above link says that Embarcadero has Linux support (via cross-compiling for Linux, on Windows) on their roadmap. But who knows what will happen, there have been so many changes of direction ...
C++/CX + XAML is maybe the closest it gets nowadays.
Not cross-platform, didn't have automatic memory management, though, and was never going to be able to compete with the advance of free IDEs.
About a million years ago I wrote the Delphi Container and Algorithm Library (DeCAL). Good times :)
Anyone of us that had the luck to work with tooling in the Amiga/Atari/PC world back in the day C mostly still only relevant on UNIX, knows there were a few languages with very fast compilers available.
If you mean C and C++ then yes. Not so when compared with most languages with module systems.
This is why I call it PR, because most Go presentations tend to ignore the world outside C and C++.
Maybe it's faster now? But it certainly wasn't particularly impressive a year or so ago.
I used Delphi 5 for a long time. The IDE was as easy as it gets, the sample code on the net was rampant, and it produced single little EXE files I could send to people and they had a full-on Windows application.
The closest thing I've found since then that allows me to do something similar minus the IDE is BlitzMax, but the IDE was what made the process so silky smooth in Delphi, and I miss it.
The frankenstein model of CSS/JavaScrip/HTML cannot provide the same RAD capabilites as native applications.
Yes, you're right. I found it so too. I forgot to mention in my parent comment that Delphi also generated the stubs/skeletons for the event-handling procedures. Not only was that a convenience, it helped with learning the tool and Windows GUI programming too.
I had already programmed in BASIC as a child and it was great, for a kid like me who didn't have Internet access and named text files to .COM and .EXE in the hope they would do something, this was awesome. But I still wanted .EXE files and I then tried Pascal, which gave that to me. I also tried few examples of C, but the code I had access to was in Pascal, and I didn't have the doc or internet, so I kept tweaking.
And then I discovered Visual Basic (in its DOS and Windows) and I was able to do buttons and forms and tigers..
Yet, with Visual Basic, there was always this bloated feeling.. I mean, you had to make an installer for your programs with files like VBRUNXXX.DLL and error messages yelling at you, and depending 16bits or 32bits, VB4 or VB6, so ... it's even fuzzy in my head.
And then I found Delphi 6. The first time I tried it, I thought "Hmm, this is Pascal !". I compiled my first thing, and I automatically looked of parasitic files VB style.. Nope. It was that .EXE..
So I took that .EXE file to another computer and ran it, and it ran. It didn't need any other files. I didn't have to make an installer for it with WISE or something. It just worked. I was happy.
When my brother who was in CS and was doing image processing (tumors, edge detection, etc), he did his project in Delphi and I'd hang around, and he'd ask me how to do this or that, since I started programming in it before he did, and it was so easy for him to implement stuff and build the application.
So maybe that's why it lasted so long. Easy enough for a kid to do stuff with it. It needed not a lot of knowledge to make buttons and forms, etc. I just make the layout, then program what each button does, etc.. And it was simple.
I may be a biggot, since I tried Embarcadero but it smelled nasty since it was, at least for me, an utter mess. I prefer Delphi 6. It may be nostalgia, but I don't htink it's only nostalgia.
Compared to them it's not strong on data components that allow you to connect a DB to a UI, you will have to write SQL and code for that. But it is a joy to use, cross-platform and at least on the desktop it is free to use if you don't mind LGPL and shipping DLLs/so with your app.
Although the latter are starting to use J2ME systems as well.
At least that is my feeling from job posts here in Germany.
In Germany's case mind you, not sure about other countries.
QT will get you into C/C++ programming, which will get you into backends, which will get you into much more pleasurable programming jobs. Yes, likely there'll be limited QT usage once you're there, but ...
Qt is like VCL and it can be used within VS or without it. The Microsoft equivalent to VCL is MFC, but I don't think that's a very current skill to have. It's also the opposite of RAD, having to write lots of boilerplate to get something on the screen. I mean that's why MS invented .NET, MFC was unproductive.
Part of the problem is the kind of corporate windows CRUD apps that Delphi excelled at are better implemented as web apps. Which leaves it relegated to hobby developers and 1 man software vendors.
Even weirder is that in 2002 the Delphi community developed a python 2.7/3 type schism over UI changes and .NET inclusion and a large portion of the community refused to adopt new releases. It's pretty telling when a vendor isn't even able to get many of it's own supporters (many of which are these "Delphi will never die" types) to buy new version of their software in over a decade.
I kind of wonder how many devs still are working on Delphi and if they are not only just bugfixing...
Their whole "there are only X paying customers left, therefore we need to charge $3000" stinks of someone who is preparing for failure, instead of growth.
It really looks like low self-esteem play of some group that secretly believes the market doesn't want what they have, so they desperately milk their few remaining customers to make next months payroll.
I keep hoping some startup sees the huge arbitrage opportunity that is sitting there. Someone just needs to come along and build a quality GUI around the toolchain - very much like what Xamarin did for Mono - and similarly they need to charge a sane subscription model (free for OS/hobbyist, $99 personal dev, $399 corporate lite, etc).
Not quite the way I remembered it. It was more like, "if we're going to develop in .NET then we're going to develop in C#." We liked Delphi for its native compile and unencumbered executable. No point in adding all the .NET baggage and not learning/using it's native language too.
Since I rediscovered dynamic languages in the early 2000s and haven't (except for some experiments in C) looked back.
It's funny how you can selectively remember the good aspects of a language and forget how much better life has become since you dumped it. Out of nostalgia I checked out Lazarus and I'm glad it has a somewhat thriving community. However, for me it was clear immediately that the time of Delphi/Pascal has passed for good.
IMHO, nothing comes close to the syntactic clarity of object Pascal. This has a ton of knock on effects for long term maintainability.
Plus, the early versions of the Delphi component model were insanely clear and well documented. My first delphi program was a reimplementation of a 6 month long (4 programmer) access database/vb application. I completely reimplemented a 2 man year project in about 24 hours with it using little more than the help docs. After a quick demo at work on Monday, everyone pretty much agreed to kick MS Access/vb to the curb and pick up my code base.
The data aware components were a life saver, and to this day programming in a wide range of languages I am constantly reminded how painful doing things that were simple 20 years ago is. It drives a fundamental distaste into my mouth every time I'm hacking an AJAX app to do basic sorting/filtering of a simple result set. Usually doable with delphi in a matter of a few mouse clicks.
Plus, by the late '90s there were a ton of 3rd party component libraries that nailed just about every GUI interaction an average program might need. The integration of reporting components made generating nice paper printouts a snap too.
So, this is probably why its still being used. Reimplementing a delphi application of a hundred thousand lines is probably a thousand man year project with a "modern" web stack. And so, much like the mainframes running in the data centers of banks/insurance/etc companies, delphi is probably still driving a fair number of business logic applications. I know that some of the applications I wrote in the 90's are still in use at government agencies.
BTW: I used BC builder too, and hated it even though I tend to like C++. The C++ syntax was simply to unwieldy vs pascal.
I have periodically tried out more recent version of delphi or lazurus http://www.lazarus.freepascal.org/ and they don't seem to be nearly as elegant as the early versions. Seems all the effort to make it cross platform (kylix) or match up with the .net component models cluttered up the early clarity of implementation.
Then I think back to what Delphi was doing in early 90s - then I wonder if just some of that magic was available for building apps on the DOM we'd be in a better place.
http://screamingduck.com/Article.php?ArticleID=43&Show=ABCE
Now that time has moved on, I no longer use Delphi at all, and rarely use FreePascal. My currently active projects are C, Node.js, and Browser Javascript. For game projects I prefer Haxe. For future large scale projects. I'm eyeing Rust. When the time comes I'll probably be weighing up the relative maturity of Haxe and Rust. They are developing from different directions, Rust being more idealistic and Haxe being more pragmatic, but I think they'll grow aspects of the other over time.
PowerBuilder, though... Man, that can't die fast enough.
Every single function had a working snippet example. Mathematica had details and applications for each function, while Delphi/BP had a well written explanation of what the function would do and how to use it.
They are the standards that have not been surpassed yet. Or even approached imho.
These days you get an auto generated docstring explaining that xval is "the x value passed to the function".
No need for VMs.
Luckly Go, Rust, D and now .NET Native might make younger generations aware of it.
Delphi is the IDE and compiler, Object Pascal is the language (Free Pascal Compiler and GNU Pascal are two other compilers, both exhibit the same quick and safe compilation).
Object Pascal was designed at Apple as their extensions to Pascal while using it as system programming language to develop the first versions of Mac OS.
Afterwards, Borland extended Turbo Pascal with Apple's agreement and then Turbo Pascal 5.5 was born.
After the initial versions of Delphi, the Borland marketing team decided it was a bit confusing to have Delphi and Object Pascal as names, and decided to start referring to the language as Delphi as well.
I was a Turbo Pascal user since version 3.0 all the way up to the first versions of Delphi.
Delphi's own documentation, once you're past the marketing naming on the box, makes it clear that the language is object pascal.
[1] http://en.wikipedia.org/wiki/Object_Pascal [2] http://en.wikipedia.org/wiki/Embarcadero_Delphi
<quote>The Delphi Language Guide describes the Delphi language as it is used in RAD Studio development tools. </quote>
http://docwiki.embarcadero.com/RADStudio/XE6/en/Delphi_Langu...
<quote>Delphi is a high-level, compiled, strongly typed language that supports structured and object-oriented design. Based on Object Pascal, </quote>
http://docwiki.embarcadero.com/RADStudio/XE6/en/Language_Ove...
The current language is based on Object Pascal, which is quite different from being Object Pascal, which was quite different back in the Turbo Pascal and early Delphi days.
I don't know Delphi and Turbo Pascal history from Wikipedia, I lived through it, from Turbo Pascal 3.0 up to Delphi version 3.
Delphi has been my secret weapon for more than a decade now.
I only wrote it as a hobby as a teenager but compared to trying to write Visual Basic or C or Java on Windows it was a real dream. As a hobbyist the absolute most important thing was seeing my effort actually materialise in front of me and to that end it was amazing. And Pascal is a dream compared to C for slightly-higher-than-C level stuff.
I loved it and I hope it sticks around. I just took another look and it compiles applications for Windows, OS X, Android, and iOS. Maybe I should give it another go some time.
It took years to Microsoft to get the web right (as everyone who used Visual Studio and .NET before MVC could tell you), it's no wonder it was difficult for a company like Borland to transition.
As a PHP developer I wonder why I never tried that "Delphi for PHP".
Coincidentally I interned at Borland France during my marketing years ten years ago and developers were really passionate about Delphi.
I was really surprised to discover they still have a C++ compiler product. Does anyone use it?
My move to Java was partly because I was straddling the Windows and Linux worlds, and Delphi couldn't cross that chasm with me at the time.
So some informed observations:
1. The quality of the IDE is incredibly dire compared to Visual Studio+Resharper or Jetbrains IntelliJ. Perhaps it will be improved if a buy a license for Castalia. That said, I've been using XE3, maybe the more recent versions are better but it seems that Embarcadero have been focusing on getting into the cross-platform mobile game (one which I think Xamarin/Phonegap/Titanium, etc are playing better) rather than increasing the quality of the tools or enhancing the language. XE6 may have some improvements under Embarcadero's "QPS" (Quality/Performance/Stability) project. We haven't upgraded our licenses since the versions since XE3 didn't bring anything for us, but if we want to see Delphi survive then perhaps we should be chucking some money Embarcadero's way!
2. The language is quite verbose, and I find the need to declare the 'interface' for a class separate to the implementation of the methods quite cute. There's so much ceremony around anonymous methods that it hardly seems worth it some times. Lack of built-in multicast delegates for event handlers.
3. I recently attended a local symposium put on by the user group. There didn't appear to be much diversity amongst the attendees. I would charge that lack of diversity is not a sign of a healthy software development community. Speaking with one of the organiser's, they mentioned that Embarcadero doesn't introduce new Delphi customers to the user group any more since it is just "grumpy old men".
4. At this symposium one of the talks was on dependency injection. I was bemused that this was a new idea to the Delphi world. One of the advertisers in the symposium papers was a consultancy whose pitch basically was "so you've been making money from selling a product, but you're getting old and want to retire. Pass the source code and rights over to use and we'll work out an arrangement to continue development whilst maintaining a royalty stream for you".
5. Packaging of open-source for easy reuse is challenging in Delphi. Unlike managed environments such as .Net or Java, reusing well-known open source components is as simple as adding an assembly or a JAR to your project (yes, I acknowledge that in the past this has had its own challenges, but I think in the .Net world at least Nuget has largely conquered this). The native binaries nature of Delphi has meant there is no such equivalent (that I'm aware of), although I'm considering leveraging Nuget's packaging format and tools for BPLs.
I can't help but think of using three days to collect and compile all dependencies for a legacy project.
At that point at least I'd take Java and maven any day.
PeopleCode/Tools is more equivalent to ABAP offered by SAP, it's heavily tied to the Peoplesoft environment, and has no real comparison to Delphi.
Amazing that you can still find it around these days, but most PeopleSoft customers have moved to Oracle, SAP or Workday by now.
1) It just works;
2) It works in old machines fairly good enough
3) There is a lot of new components/integrations (SQL,DB2,Oracle,WEB,etc)
4) Good reports system
It isn't sexy but do the job very well for most corporate applications.