<story><title>Delphi – why won&apos;t it die? (2013)</title><url>http://stevepeacocke.blogspot.com/2013/05/delphi-why-wont-it-just-die.html</url></story><parent_chain><item><author>Joeri</author><text>My employer has a multi-million line codebase in Delphi which is still under active development. I mostly do web development, but every once in a while I go back in to build a feature on the Delphi side of the fence.&lt;p&gt;The IDE itself is dated and no longer competitive with the best of the modern IDE&amp;#x27;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#.&lt;p&gt;Why is delphi still hanging on?&lt;p&gt;1. It delivers executables that need no dependencies. No VM&amp;#x27;s, no runtimes, no add-on dll&amp;#x27;s. Underneath it only needs x86 and win32 (unless you&amp;#x27;re building for mac, android or iOS, which it also supports). I wouldn&amp;#x27;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.&lt;p&gt;2. It lets you build GUI software &lt;i&gt;really&lt;/i&gt; quickly. Productivity in delphi for someone used to it matches any &amp;quot;modern&amp;quot; GUI development platform. Sure, the IDE misses a few features that competing IDE&amp;#x27;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).&lt;p&gt;3. Delphi is the easiest platform by far to have legacy code on, because the maintenance cost is very low. Delphi&amp;#x27;s contemporaries (classic VB, MFC) have all gone through major upheavals. Delphi has managed to modernize the API&amp;#x27;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.&lt;p&gt;Delphi&amp;#x27;s competitive with other desktop and mobile development platforms, even at what they&amp;#x27;re charging for it. What they&amp;#x27;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&amp;#x27;t.</text></item></parent_chain><comment><author>Svip</author><text>I am not entirely convinced that unicode has been retrofitted &lt;i&gt;elegantly&lt;/i&gt; into Delphi.  A lot of legacy functions using string (read: what is now AnsiString) have been modified to still support string; so AnsiPos() for instance takes string, unless you use AnsiStrings unit.  And that&amp;#x27;s just confusing.&lt;p&gt;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.&lt;p&gt;Of course, the compiler doesn&amp;#x27;t warn you about that, because it isn&amp;#x27;t clear what you were doing back then.  Still, took us a year to get our code from Delphi 2007 to XE3.&lt;p&gt;I am not saying Delphi is the worst thing ever, but I wouldn&amp;#x27;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).&lt;p&gt;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.&lt;p&gt;Edit: But I will say this: I do believe unicode was introduced into Delphi as elegantly &lt;i&gt;as possible&lt;/i&gt;.  It&amp;#x27;s very hard to do truly elegantly, I&amp;#x27;d imagine.</text></comment>
<story><title>Delphi – why won&apos;t it die? (2013)</title><url>http://stevepeacocke.blogspot.com/2013/05/delphi-why-wont-it-just-die.html</url></story><parent_chain><item><author>Joeri</author><text>My employer has a multi-million line codebase in Delphi which is still under active development. I mostly do web development, but every once in a while I go back in to build a feature on the Delphi side of the fence.&lt;p&gt;The IDE itself is dated and no longer competitive with the best of the modern IDE&amp;#x27;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#.&lt;p&gt;Why is delphi still hanging on?&lt;p&gt;1. It delivers executables that need no dependencies. No VM&amp;#x27;s, no runtimes, no add-on dll&amp;#x27;s. Underneath it only needs x86 and win32 (unless you&amp;#x27;re building for mac, android or iOS, which it also supports). I wouldn&amp;#x27;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.&lt;p&gt;2. It lets you build GUI software &lt;i&gt;really&lt;/i&gt; quickly. Productivity in delphi for someone used to it matches any &amp;quot;modern&amp;quot; GUI development platform. Sure, the IDE misses a few features that competing IDE&amp;#x27;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).&lt;p&gt;3. Delphi is the easiest platform by far to have legacy code on, because the maintenance cost is very low. Delphi&amp;#x27;s contemporaries (classic VB, MFC) have all gone through major upheavals. Delphi has managed to modernize the API&amp;#x27;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.&lt;p&gt;Delphi&amp;#x27;s competitive with other desktop and mobile development platforms, even at what they&amp;#x27;re charging for it. What they&amp;#x27;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&amp;#x27;t.</text></item></parent_chain><comment><author>coliveira</author><text>The great thing about Object Pascal is that, unlike C or C++, it was designed to compile really fast. Pascal units completely remove the burden of C++ header files. In the end, you are almost as productive as with a dynamic language and you still have compiled code. I haven&amp;#x27;t seen another language to get even close to the balance achieved by Delphi in this respect.</text></comment>