As Delphi developers, we’re always reminded how Delphi won’t make it. How it’s on the verge of extinction. How Borland (nowCodeGear) can’t stand up to Microsoft, Java and open source languages. I always ignored the doomsday talk. I knew it wasn’t true. Sure enough, ten years after installing Delphi, I was still using it.
The same naysayers are still around, saying Delphi is doomed. Unfortunately, now they are right. Delphi is doomed. Let me clarify what doomed means. Delphi’s heyday is over. It may continue to live on as a niche player, but it will no longer enjoy the robust community and innovative thinking that went into that first few versions.
Before I examine the evidence, let me express my sadness at the revelation. I take no joy in reaching this conclusion. Delphi was a remarkable language and development platform. It was the perfect answer to Visual Basic. It had the power and speed of C yet was as easy to use as VB. It is the father of C# and it’s similarities can be seen throughout.
This article isn’t just about the end of Delphi, but the future of Delphi (Delphi is dead, long live Delphi), C/C++ and CodeGear.
So how do I reach the conclusion that Delphi is doomed?
The community that once thrived is no longer as robust. To be fair, some of it has shifted off shore. While Delphi’s decline is evident in the United States, it is still going strong in other countries, but newsgroups aren’t seeing the volume they use to. Email lists are quiet. Open source projects done in Delphi seem to be stagnating. It’s like everyone left the building and forgot to turn off the lights.
Microsoft dealt CodeGear a blow by first stealing Anders and then releasing the .NET platform. Where does Delphi go from here? C# is more advanced than Delphi and it muddies the water with the CLR and managed code. Should Delphi continue to advance the win32 platform or jump ship to .NET? This confusion in the market place only hurts Delphi. I understand they are now working on a version of Delphi that compiles to either win32 or .NET. I hope it works more seemlessly than previous versions.
Lack of Innovation
Delphi is behind the pack. I remember the excitement when Delphi got it’s foreach statement. While that was was being added to Delphi other languages were getting closures, mix-ins, class exstentions, generics, contracts and numerous other languages features. Poor Delphi was ignored and I don’t blame it on the the diversion of resources used to create Kylix or Delphi.net. Delphi has been a slow innovator since about Delphi 3.
Delphi also tried to advance into the web realm with very limited success. I can’t really blame them for this as it was mostly dominated by open source scripting languages and java.
The D Solution
How hoes does CodeGear save itself? While a guaranteed solution is impossible, some ambitious moves must be made. CodeGear seems to be moving in this direction with Delphi for PHP (and Delphi for Ruby on the way) but they need to go a step further: Purchase the rights to D [wikipedia:D]. D the programming language.
D was created by Walter Bright who also worked on the Symantec C++ compiler and has been working on compilers for around 20 years. D just had it’s 1.0 release and is quite impressive. It’s compiled code usually runs as fast or faster than equivalent C++ code. D is starting to get noticed and others have even noted that D is a diamond in the rough just waiting to be polished. D also combines all the goodness of C and C++ and adds in the latest language features, including support for unit tests et al, and leaves out much of what people don’t like. Oh, and CodeGear needs to keep Walter in charge of D.
Walter needs to be given the freedom to advance the language as he deems necessary. Once the marketers and bureaucrats take over, the language stagnates. While I use to think language stagnation is a good thing (it prevents old code from breaking), I now think since change is a part of life, languages must continue to change and adapt otherwise they die.
So how does this solve CodeGear’s problem? Well it doesn’t immediately, but it does give CodeGear one of the most impressive languages available and it removes all the arguments about Delphi not being ready for prime time (i.e. being in Pascal, owned by Borland, etc). While Delphi is one of the best languages and environments available it gets little respect or attention and never will. By moving to D it removes the need to modernize and bring Delphi up to date and also gives CodeGear the advantage of having the successor to C and C++. Frankly I prefer the C syntax anyway and I think most serious developers do too (with exceptions, of course).
Once CodeGear has D, they need t0 submit it to the standards board and release a compiler and standard library on numerous platforms as open source, even if unsupported directly by CodeGear. The official CodeGear compiler could remain closed source, but it is critical that there be a GLPed version of the compiler however, otherwise widespread adoption will be limited. D is good enough to gain traction on it’s own (and has been), but with CodeGear’s backing it will get to skip a few places in line.
Open sourcers would get a FAST, stable compiler to eventually replace C that they can count on being around for a while since it’s open source. Delphi developers would get a successor that is modernized and CodeGear lays claim to a state of the art language. That would make for some great advertising.
CodeGear must release an IDE for D, perhaps as an eclipse plugin. I am not convinced an eclipse plugin is the best route, but that’s the path they are taking with JBuilder. Eclipse stills seems behind the curve compared to the last Delphi IDE (Delphi 2005) I used. The IDE can be strictly for profit and doesn’t have to be open source.
Once CodeGear gets D released into the wild, I would expect heads to turn. The open sourcers would be pleased with it since it has a GPL license. Corporate developers (like myself) will be happy since it has the ease of Delphi, C syntax and modernized. The goal here is to impress both the open source community and paying customers. This is a terribly elusive task but has been done by MySQL and others. If CodeGear walks this tightrope succesfully, they could end up with the most used language in the world, assuming D overtakes C and C++.
The existing Delphi could continue and perhaps this new product would be called Delphi for D or something consistent with their new naming conventions, but the future would be with D and not Pascal (In fact it already is, regardless if CodeGear buys D).
The .NET Problem
While moving to D would be very risky, there are other problems, most notably .NET. How do you integrate D with .NET? While I don’t advocate moving D to the .NET platform, D will need a simple interface into the framework. I am ignorant on how easy this would be. MS seems to do something similar with their C++ for .NET, but I believe it is still managed code.
I would like to see a bridge allowing D to make calls into the framework when needed, but still remain unmanaged code. I have no desire to see D compiling to IL.
If the .NET problem can be solved (and perhaps it’s easier than I think), CodeGear needs to seriously look at D.