In fact, I was a very convinced assembly guy at the beginning. I didn’t like ZX Spectrum’s Basic, neither the Commodore’s, neither CP/M’s (sorry, guys, perhaps your mileage may vary). Always I tried to please the others and Basic didn’t gave me the power to do this.
In the days of Turbo Pascal I was quite distant from the product because… I thought: “How can I do something really useful with this?” (of course, I don’t mean now that Turbo Pascal was useless, just mentioning my perception from then) – then it was the ages of Clipper and FoxPro – tools with which one can achieve more quickly some concrete results. And, of course, always was C/C++ which was a quite unsafe language for my taste. Very easy you can shoot on your foot if you aren’t with your eyes split on four parts.
Delphi was the first language / environment which really fulfilled my needs (or rather the needs of my user base) – because I discovered that the fun in programming consists exactly in this point: to please your user base. Of course, the things are much easier if the ‘user base’ are exactly you, the programmer. But let’s pass…
As you see, I wasn’t from the beginning a Pascal / Delphi developer (also I skipped other languages of lesser importance in my career). So while I had very happy days using Delphi I kept an eye on what was going on in the field…
And then was Java. Slow. Clumsy. Big runtime. The GUI was… aaaarrrrggghhh… Used with the very complex and high-performance GUI programing in Delphi the Java’s… how to call it? GUI rendering? was a little bit ‘odd’, you know. But it was cross-platform. And this made sense, even if this ‘cross-platform’ thing wasn’t so perfect as the advertisements tried to convince us. But again it made sense: Sacrifice (almost) everything for an (almost) workable cross-platform.
Since, Windows had (and still has) more than 90% from Desktop and we since do desktop applications we stayed with Delphi. But even if we knew pretty clear why Java was/is inferior, we understood why Java appeared.
After this .NET appeared. Also, Borland at that time thrown on the market the infamous Delphi 8 – a .NET only version full of bugs (read: unusable). I do think that this was the Borland’s biggest mistake ever: to validate a new, immature platform of his competitor by a unusable version of its flagship product – thing which clearly said that: ‘The future is .NET, but we cannot do it’ And of course, many went with Microsoft.
We thought: Borland is dead. I knew team members which went Google, Microsoft, VMWare etc., the product was transformed in a ‘Cash Cow’ on the altar of the ‘Open ALM’ (yeck!), the Microsoft marketing machine was working in full…
But we do care about our users. They must receive from our hands the best program as possible. And we started to evaluate .NET… And we found that: it is slow because the Garbage Collector kicks in whenever it wants. It is slow because it has a Language Runtime /a Virtual Machine / a bunch of DLLs to load (call them as you like…) – yes I know that the thing can be JITed or NGen but it seems that oh-so-long-awaited optimizations at the place of execution still don’t deliver the promised speedup – it is slow because the GUI uses GDI Plus for rendering which is not hardware accelerated, it is slow because the have a rooted type system (a thing which is good in itself) and you must pay this. We did some benchmarks, also other guys did same thing, and we found, for example that strings processing in Delphi is several times faster (5-7 times) compared with .Net. Yes, we know about String Builder.
Also, it is very easy to reverse engineer the program, assemblies etc. – obfuscation has its quirks and sometimes makes the things even slower isn’t?…
Also, because “the world” still uses Windows XP we must deploy huge runtimes which require Administrator rights to install… no thanks, even if perhaps we can workaround the ‘rights’ part.
And when we found how non-visual is to program in .Net when one wants to implement a real-world interface – almost every programmer with which we spoke about XAML said that ‘if you want to do serious things, forget about designer, do it by hand’ – we said, no way!
But the odd part was: Ok, Java, has sacrificed so many things, but at least they achieved something. .NET? What they achieved? A market? Yeah, I think so. Because many went with .NET to be ‘safe’, to be ‘trendy’ – one of them said to me several years ago: ‘We go with .Net because this is the market trend. Yes, we know that the Delphi is better but mind you, in the times of Visual Studio 6 the product was unusable and they had the market. What now when .NET is an acceptable thing?’ But it seems that meanwhile he had a second thought…
…and this because .Net is a giant with legs of mud. There is a very big innovation effort in the area but, of course, they cannot overcome the initial compromises, even if they sacrifice the compatibility as it was between .Net 1.1 and .Net 2.0 and between VB and VB.Net.
That’s why they had the ‘Longhorn reset‘ – search in the linked page about Cairo.Net – and now they even pay you big prizes (!), just to give a successful example of using .Net (see here) – not quite encouraging for a “successful” platform, isn’t? And even if they pay you in big, (a car!?! whoah!) their showcase isn’t so impressive like Delphi’s even if nobody payed for submissions and even if this was set up in just some days.
And while .Net ship asks for examples of usage, Delphi has a very strong comeback even if there’s still a lot of work to do.
And I’m asking myself:
If we convert, we’ll do more effort for less outcome?
Yes. But no, we will not do the conversion.
If we start a new project, .Net will be a better choice?
No. The Delphi programs are way faster, way smaller than .Net’s and written in less time.
Yes, we know, one must ask in forums, search on the internet for answers and code. But, the same thing is on .Net and, still, the Delphi development is faster than in .Net. Experienced hands-on.
After so many years, .Net didn’t convinced us that we should give a real try. Java? Yes, cross-platform. But first we wait for Project X to see what will bring us.