Sunday 9 November 2008

Anders Hejlsberg and Delphi's future

Anders Hejlsberg made a nice presentation during his latest visit to Denmark, see it here. He said a lot of things, but one of his points actually explains the power in Delphi: When you look at the amount of learning that a new programmer has to do, the tools and libraries are now much bigger than the language. Delphi has good tools and libraries, and that's important.

Anders Hejlsberg also mentioned, that most languages will be static and dynamic in the future. I totally disagree. The main reason why Python and PHP are so popular, is that the learning curve is not steep. If python would become a .net language, it's tools and library would explode in size, and if static typing would be applied, language complexity would increase, making it unsuitable for a part of its audience. It seems that Anders Hejlsberg has forgotten usability - it also applies to programming languages. There is a need for entry-level languages.

Anders also mentions that we're working towards an ever increasing level of abstractions, and that we need to continuously invent new programming languages to test new methods. That's fine with me, as long as I don't need to invest in source code based on these obviously temporary languages. Adding more and more features to C# makes it bloated. In other words, Microsoft is facing the choice between bloat or many languages, and seems to pick both, just to be safe.

Anders's presentation is tainted by his employment at Microsoft. Therefore, we need to remember the background for his presentation. The world of general-purpose programming languages today largely consists of these groups (based on the TIOBE index):

* Open Source compilers: C, C++, Java
* Microsoft .net: C#, VB
* Delphi
* Low performance scripting languages

In order to really understand the difference between these groups, you need to look at the forces behind.

Open Source compilers will preserve backwards compatibility. They are cross-platform which makes some things more complicated (Write once test anywhere). You can do anything you want with C and C++, but development costs are huge. Java is very strong and probably the most widely used today. However, Java also has problems.

Microsoft compilers always face the threat, that Microsoft can earn more money by not being loyal to their programmers. They have done that multiple time in the past, and every time it meant big expenses for developers.

Delphi is owned by Embarcadero, and Delphi is one of their main products. They need to make Delphi good and be loyal to developers. And yes, we can still compile 25 year old Turbo Pascal code.


Anonymous said...

But you can no longer compile your Kylix or programs... how is CG any different from MS in this regard?

Lars D said...

Kylix programs compile well - I have several Kylix apps that compile well in Delphi 2009.

However, I get your point - some libraries are no longer supported. This includes CLX, BDE,, QuickReport and others. CodeGear's approach to libraries is modular - they provide a number of libraries, and you can choose to use them, or not. You can also buy 3rd party components with and without source code. I always prefer components that can easily be replaced, or components with source code.

As a project owner, you must make a decision on a technology's trustworthiness. Many still consider .net a very risky basket to put all your eggs into, especially for GUI development. If .net had been conceived by an company that primarily wants to provide development tools for programmers, I'd go for it immediately. But that's not what Microsoft is about.

Anonymous said...

An important framework for me is ECO... I like those MDA approach and although I don't like .NET so much, I had been doing all .NET development with ECO on my BDS 2006. If you have ever tried programming ECO with Delphi (BDS 2006), you probably would switched to C# very soon... the IDE casued too many problems with Delphi .NET and WinForms!

For ECO developer at that time, I have no choice but ought to use WinForms (and C# for better design time experience). In 2007, CodeGear drop C# design support (but ECO FINALLY supports VCL .NET); and in 2009+, no more VCL .NET! so CodeGear is teasing all the ECO developers! Glad to hear that they're trying to do something with BOLD in the end, but it is too late...

Anonymous said...

Thanks for painting very clear and fair blog article. I agree 100% with your views.

Lars D said...

I tried ECO once, but considered it to be not good enough (buggy), and a lock-in, which does not fit with the time span of our projects. That's why I chose not to use ECO. I guess a lot of other people made the same decision.

Spacetime said...

"And yes, we can still compile 25 year old Turbo Pascal code."

Yes, Turbo Pascal is still alive!