Sunday, 19 May 2013

Delphi, why won't it just die?

Over the years, I've programmed in a lot of different languages. Along the way, languages have come and gone in typical "Flavour of the Month" style, while others that have been predicted to be flavour of the month, have become very mainstream;  Java being one of them.

I used to do a lot of work in FoxPro and it was used extensively in almost every company and government department in New Zealand, but then Microsoft bought it and firmly placed its boot over its head knee deep in water and it slowly, desperately, died.  Even then it was flailing about so hard that Microsoft was forced to simply state, "No More FoxPro! Last version ever!"  in about 2007 despite having millions of followers.


For a long while, Borland seemed to be doing the same thing, albeit not quite so openly, nor so firmly. The effect nearly had Delphi disappearing from the tech language.  It was true to say that 90% of my income was from FoxPro contracts, but I haven't had one of those in probably more than 15 years now. I could also say that a few years later, 90% of my income came from Delphi, but again, I have had no Delphi work for the past 10 years.

Many industry commentators moan that Delphi is no longer a serious contender, saying that .NET is the future. While Delphi did come out in a .NET version (that I didn't use), I suspect that .NET just didn't fit the Delphi psyche. Embarcadero purchased Delphi in 2008 and set about trying to resurrect it without a lot of success, .NET was too ensconced on the scene and “that language”, Visual Basic, was now able to actually build real programs like a Pro.

So why then is Delphi still around? Its original theory of it being a good and cheap language has well and truly been squashed with the exorbitant prices being charged, so what does it hold that can’t be delivered better by other languages.

Well, that’s a very hard question to answer. One reason of course, is the sheer amount of code around. You see Delphi has one advantage over all other languages – it’s both highly productive, and it’s a real pleasure to use. 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 know also that whenever I’ve had to use other languages for any period of time, it’s a wonderful surprise again to find that using Delphi, you are no longer struggling with the language or the development platform. It just works.

By being highly productive for small teams and single developers, Delphi has spawned a number of development shops that simply could not survive if they had to change to use another language.
I’d love your thoughts.


64 comments:

  1. Components and programs written even in older versions of Delphi mostly compile in its most modern versions. This is certainly not true of MS with the exception of C which never got a decent designer. Look no further than what they did to VB and now Silverlight. How long before MS creates another platform in a service driven environment then abandons it?

    In the Windows environment, no other language performs as well or is as easy to write in. Couple that with nearly 20 years of source code being pumped into the net and we end up a language that still has no equal in some aspects.

    For my company we run a 13 year old n-tier product that is designed to run over the internet. At the time our choices were VB, dotNet Beta, Java or Delphi. Only Delphi really fit our needs and the product is still going strong.

    ReplyDelete
  2. " it’s both highly productive, and it’s a real pleasure to use"

    This applies only to old developers and the average community age of Delphi is rapidly growing. If we look at community members most are above 40 years of age.

    Ask a graduate or under graduate to adopt and use Delphi and he will throw Delphi in dustbin withing one single day.

    It still misses many new features that are found in competing dev products which have higher appeal and acceptance rate among newbie developers.

    Of course no language dies that easily as there is a lot of code existing which has to be maintained so the language will live. But the main question is will it dominate the dev tool scene? The answer is plain NO!

    ReplyDelete
    Replies
    1. You do not mention those new features or why they would bin it... So could you elaborate? Plus I am not sure people expect it to dominate the dev tool scene. The world is moving away (at the moment) from desktop apps so I would expect the development scene to be dominated by anything that creates native mobile/tablet apps.

      Delete
    2. AnonymousMay 26, 2013

      >Ask a graduate or under graduate to adopt and use Delphi and he will throw Delphi in dustbin withing one single day.

      Couldn't disagree more. I finished university about half a year back and spent most of my time with C++, Java, AS3 and a bit of C and C#. I am now working full-time with Delphi and it's a real pleasure to use.

      I'm definitly not 100% satisfied with the state Embarcadero's IDE is in, but it could certainly be worse. As I said, Delphi definitly wasn't a bad choice :-)

      Delete
    3. This generally applies to dotNet as well. In truth no language rules them all because the ground has shifted away from all purpose languages and certainly far from the desktop.

      C is still the go to language when a layer or app with any real performance requirement is in the mix (games, OSes, IDEs, compilers, etc) but still a disaster for app development. dotNet is an abject failure since it was built to compete with Java and basically delivers the same crappy performance with none of the cross platform capability. Even in its archaic form, Delphi is still a better well rounded MS desktop development tool than either Java or dotNet.

      Delete
  3. AnonymousMay 19, 2013

    Steve, I have had the same experience: a single delphi developer was and IS much more productive than a MS .net or Java developer. Delphi just works.
    It's surprising how it happens today...
    Surely, VS now is a better ide but writing a working prototype is always quicker in delphi. The same happens with an entire application very often.
    Delphi 'll not die, maybe we'll write code in lazarus/free pascal.

    ReplyDelete
    Replies
    1. I've written a rather large application using Laz/FPC. It worked really well.

      Delete
  4. "So why then is Delphi still around?"

    My tuppence would be: the foundations were got right at the start (-> serious use began early, and without customer disappointment) + the unusual stability of the Win32 (and now Win64) platform, due to MS' efforts. Combined, this has allowed successive incremental improvements and weathered several mis-steps. E.g., it ultimately didn't matter that both Kylix and Delphi.NET were failures, since the core product could still be ticked along.

    ReplyDelete
  5. AnonymousMay 19, 2013

    I'm too a single (or two) Delphi developers with lots of code dating up to Delphi 2010 now (from D5). I have'nt seen no any single Delphi offers on the market since 2009 - east Canada!!! That is a real problem! I'm thinking of selling my main application source code now (accountings). Meanwhile i have joined the IntellijiIDEA Dev Community, i have fun with Net Logo (Scala) and get money on top of that developing models. Of course, Delphi is still fun but i guess i will never play FM , there is just no offers, unless i do it for myself.

    ReplyDelete
    Replies
    1. The Jobs market is the same here in the Eastern US - nonexistent, even in New York City.

      I wish every Delphi programmer would try Scala, or Groovy or Python or Ruby and experience functional programming, either type inference or dynamic typing, design by contract and all of the other cool, productivity-enhancing features in modern languages. They'd find a whole new level of fun and pleasure available from programming and realize that poor Delphi needs a lot of work - and why no new developer would to choose to adopt it today.

      Delete
    2. AnonymousMay 21, 2013

      The facts are that not everybody needs "Productivity enhancement features of modern languages", or C and C++ would not be still the most used languages around. There are many who need to write fast, optimized code, and everything between their code and the compiler output has to be carefully weighted. Not everybody, after all, writes web sites.

      Delete
    3. >The facts are that not everybody needs "Productivity enhancement
      >features of modern languages",

      There are people who don't want/need to enhance their productivity?

      >or C and C++ would not be still the most used languages around.

      You need to add Java and C# to your list of the most-used languages around. C isn't used outside of low-level systems coding anymore (and now has to look over its shoulder to keep an eye on languages like Go).

      >There are many who need to write fast, optimized code,

      Optimization comes after writing code, not before.

      > and everything between their code and the compiler output has to
      >be carefully weighted.

      See above.

      >Not everybody, after all, writes web sites.

      Modern languages are used for far more than websites.

      Delete
  6. It's so productive the owners of small companies don't need to hire developers they do it themselves! In all seriousness, I suspect most of Delphi's active uses actually write, market and sell their own applications.

    ReplyDelete
    Replies
    1. Agreed on this one, as long as no one asks - what happens if you have an accident or even worse. It's an argument independent from the language and technology.

      Delete
    2. Well, the great news is pascal is a very auto documented language. Is easier than with other criptics synthax, to another people get your code and continue.

      Delete
  7. I think delphi will only "survive" for non employed developers, i mean owners of little business needed to made the work in time at the minor cost, with lower team, you know: productivity. Theres no developer tool or language out there more confortable and productive than Delphi. Off course theres a lot of languages out there more modern, and with better compatibilities with iOS ,web or Android devices, but design with then is not so confortable as delphi as. That also reduce the maintance requirement and time to market hit.

    ReplyDelete
    Replies
    1. "Theres no developer tool or language out there more confortable and productive than Delphi."

      Rebol

      Delete
    2. I survive with Delphi in the corporate environment. They wanted to get rid of Delphi but when I deliver solutions 3x faster and with a 1/4 of the cost of their C# teams its compelling to keep both me and Delphi around.

      Delete
    3. I beat out C# developers with Delphi every day of the week. Me against a team of 3 C# developers? I win all the time. There is one guy I know that can take me on using C#, but when he was programming Delphi he had me beat by a country mile! Yeah, I tried C# but couldn't get over how hard it was to get anything done; like I had to write half the stuff I got for free in Delphi.

      I admit Python is more productive than Delphi in my experience, but with the duck-typing and white space dependent logic there is no way I would write a 100,000 line program in it. Even if it took 500,000 lines of Delphi to do the same. Python for me is a utility language, a scripting language, not an enterprise application language. 5,000 lines is where I start to get concerned with using Python, 10,000 is where I would pull the pin.

      Delete
    4. Vanners, you do realize that popular, complex programs such as the mercurial DVCS, Dropbox, the Eve Online MMORPG, Review Board, the Reddit website (10th most popular), Instagram (sold for $1 billion), and at one time at least ALL of YouTube were written with Python? IronKey says it has over one million lines of Python across its security products. I don't think scaling past 10K lines is a problem.

      Delete
  8. What those of us in the English-centric world often forget is that Delphi is 10x more popular in many countries where English is not the primary language. There are a lot of Delphi based employers (and thus, Delphi based jobs) in Eastern Europe, Russia, Brazil, and so on. There are relatively FEW such companies left in North America or English-speaking countries in Europe.

    Warren

    ReplyDelete
  9. Yes the main reasons that Delphi is still actively in use are:

    1) existing codebases that are difficult (aka costly) to migrate to another platform such as C# .NET, and for which there is little tangible benefit for doing so except in terms of finding staff. Any companies that have Delphi products are more likely now to treat their staff well, knowing they will be difficult to replace.

    2) All the benefits that made Delphi a great platform when it first came out are still there:
    -fast compilation of fast EXEs without deployment headaches (DLL hell)
    -Visual design
    -lots of third party components
    -a clean language syntax that is easy to learn and more importantly makes code easier to maintain
    -a great community
    -productivity
    -and the list goes on...

    3) Delphi makes a great development platform for small IT departments, and ISVs, uISVs. The individuals in those positions tend to be people with development experience who leverage the tool they know best, or choose the tool they are most productive with, to make it happen. That will continue include Delphi for at least the next 10 years, unless EMBT drives it into the ground.

    ReplyDelete
    Replies
    1. I especially like your third point.

      Delete
  10. >You see Delphi has one advantage over all other languages – it’s both highly
    >productive, and it’s a real pleasure to use.

    Over all other languages? Have you ever used a dynamically typed language? They're on average 50%+ more productive and very enjoyable to use. They're what people program in *for fun* (as opposed to something like C++). So no, I wouldn't say that's an advantage of Delphi today. On the contrary, it's getting more and more filled with classes and types and leftover features from Turbo Pascal which make it harder for new users to learn.

    >Being highly productive has seen single Delphi developers produce software that
    >would otherwise require a team of 5 developers.

    In 1995, sure. Today? No way.

    >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.

    That's a side effect of the design of Java, not necessarily an achievement of Delphi. It's become something of a joke in tech circles.

    Beat out C#/.Net or C++/Qt and it would be impressive. It would be impossible to beat out Python, Perl, or Ruby.


    >I know also that whenever I’ve had to use other languages for any period of time,
    >it’s a wonderful surprise again to find that using Delphi, you are no longer
    >struggling with the language or the development platform. It just works.

    You don't need to struggle with Delphi's bugs? You're quite lucky!

    I have the opposite experience. Using another language with a clean, simple design, modern programming paradigms like functional programming features, and then coming back to Delphi makes me cringe. The VCL keeps filling up with more classes and more objects. Want to write a file? File, File of, TextFile, TFileStream, TStreamWriter, Blockwrite, TTextWriter, etc. And being Delphi you can't even have one object for reading and writing... you need TStreamReader, BlockRead, etc.

    Python: "Open". Just "open". Python 1.0 and Delphi 1.0 were less than a year apart, but Python never went crazy with classes. "Open". You can use it to read, write, append, or both read and write at the same time (!) binary files or text files, automatically en/decode Unicode, have an optional buffer, etc. all with one function that returns a file object. Heck of a lot easier to learn or teach too.

    One string type, simpler Unicode handling... it's frustrating to look at the languages side by side now. More power in Python (especially in regards to functional programming) yet so much simpler to use.

    If I want the sum of the squares of the values in a list (array), I can just do

    total = sum(num ** 2 for num in numarray)

    thanks to the power of list comprehensions.

    When I've tried rewriting some routines in Python from Delphi I usually end up with 1/3 the code, although with a recent try it was almost 1/5 the code.


    >By being highly productive for small teams and single developers, Delphi has
    >spawned a number of development shops that simply could not survive if they had to
    >change to use another language.

    They could become .Net/C# shops or Python shops or Oxygene shops and quite possibly be even more productive than they were before (and save money too).


    ReplyDelete
    Replies
    1. Except that distributing an EXE in Python is not practical. I have simple, 1,000-line app that generates an 85MB EXE that takes 1 minute to start up.

      No, I can't persuade all my customers to install the Python run-time environment.

      Delete
  11. Good post, i agree with it, but only for visual dev. for pure code other lnguages like Python are now more efficient.

    ReplyDelete
  12. You see the very problem from what people post here: Delphi should have become like Java, .NET, C#, Perl, PHP, Python, Ruby, Javascript, Haskell, . Instead of being Delphi, with its own evolution path to fulfill the needs of a given class of developers and applications - those for what it was born - it should every year ape the fashionable language of the season - just because there are too many Delphi developers scared to learn another language if they need to develop a different class of applications. Think what would have happened to C/C++ if they attempted the same silly evolution. And how many software you use are written in C/C++ and not PHP, Ruby, Python, Haskell, - and how many libraries written in C/C++ those languages often use under the hood?
    Delphi to survive must get back to its roots. Thinking that getting a feature from here and another from there will just make a frankenlanguage that will drive away more and more developers, but those too afraid to learn anything which is not Pascal.

    ReplyDelete
    Replies
    1. >You see the very problem from what people post here:

      I agree, but I think it's your post the exhibits the problem. :-)

      >Delphi should have become like Java, .NET, C#, Perl, PHP, Python,
      >Ruby, Javascript, Haskell,

      Yes, SUCCESSFUL. The enterprise has embraced Java and C#, Perl, PHP, Ruby are all over the web, Javascript runs in the browser and now on the server and with language-x-to-javascript translator/compilers will probably become the "one language to rule them all", Python dominated scientific and data analysis programming. Haskell isn't a big player in the enterprise yet but is beloved in academia and a lot of its features are beginning to be adopted in other languages.

      Why shouldn't Delphi have been like any of these other languages?

      >. Instead of being Delphi, with its own evolution path to fulfill
      >the needs of a given class of developers and applications

      That's apparently a tiny class compared to most of the other languages you list. Delphi is a for-profit venture and can't afford to appeal to such a tiny class.


      >it should every year ape the fashionable
      >language of the season

      And there it is. The sour grapes we've become accustomed to as Delphi developers as we see everything else improve and our own language continue to die off. Memory management is for wimps; we don't need functional programming; we don't need X, Y, Z; the web is just a fad, etc. These were just propaganda items the marketers threw out and now many users actually believe them. Java, C#, Python aren't "fads"; Java and Python are about the same age as Delphi but have had quite different success stories.

      > - just because there are too many Delphi developers scared to
      >learn another language if they need to develop a different class of
      >applications.

      And what class of applications do you believe Delphi is better suited for? In fact, name one language feature of Delphi that's been copied by other languages because it's awesome? Or even name one (sensical) feature we have that's unique? Delphi doesn't offer anything unique nowadays and has spent the last several years playing catch-up to other languages.

      > Think what would have happened to C/C++ if they attempted the same
      >silly evolution.

      The whole point of C++ was to evolve C! And something that's successful doesn't need to evolve and a market-leading product doesn't need to change to become more like inferior products.

      >And how many software you use are written in C/C++ and not PHP,
      >Ruby, Python, Haskell,

      Speak for yourself. Every web app you access (and that's where many applications are nowadays) are using PHP or Ruby, Python is all over science and finance and powers popular applications you may have heard of like Dropbox, the Mercurial version control system and the Calibre e-book manager. Haskell's quite popular in academia. Think of it as the testbed for language features of the future, even if Haskell itself doesn't become a popular language. It has enormous influence on language development today.

      >- and how many libraries written in C/C++
      >those languages often use under the hood?

      And parts of Delphi aren't written in Delphi either.

      >Delphi to survive must get back to its roots. Thinking that getting
      >a feature from here and another from there will just make a
      >frankenlanguage that will drive away more and more developers

      No one's driven away by improving the language, except for those who are fanbois and want to maintain Delphi's outdated feature set forever.

      >, but those too afraid to learn anything which is not Pascal.

      If they learned something that's not Pascal, again, what's going to get them to come back to it? What can they do with Delphi they can't do with C++ and Qt or C# and .NET/Mono? Meanwhile they can target the web with Asp.NET and Linux via Mono, neither of which they can do with Delphi (no, Intraweb doesn't count).

      Delete
    2. "In fact, name one language feature of Delphi that's been copied by other languages because it's awesome? Or even name one (sensical) feature we have that's unique? Delphi doesn't offer anything unique nowadays and has spent the last several years playing catch-up to other languages."

      I will...C# (and, .Net in general) as developed by Anders Hejlsberg. MS recruited him away. If Delphi didn't hold merit, why would MS feel so compelled to steal him away? Take a look at the similarities of the languages.

      Those who don't use Delphi have, obviously, never really used it in the first place yet feel compelled to rail against it. As an adopter of Delphi 1 (and originally, Turbo Pascal on 5 1/4), I saw the benefits over Visual Basic and C development using Visual Studio. It was designed to be a VB killer and it did it's job perfectly.

      To this day, no language or tool can really do what, visually, what was possible in Delphi. The entire Win SDK was available to us. Database connectivity has always been a breeze ... And, yes, Ring 0 development was possible with the right 3rd party products

      Yes, there were missteps along the way - attempts to provide a .NET offering and not developing a native Delphi IDE for Linux (relying on WINE). With the poor licensing scheme on Linux (via Kylix) it was doomed to fail.

      Today, iOS and OS X (in addition to Windows) development is a reality with Delphi without having to resort to a intermediate representation or the need for an interpret as for .NET and Mono. And, it's possible to develop for both Windows and Mac with, nearly virtually, the same source (apart from minor differences in the file system).

      I would also dare you to write a high performance compiler in Ruby, Perl, Python. JIT compilers for many "scripting" languages are written using C, C++, assembler (god forbid) and even Delphi which posses native compilers and constructs making higher level languages even possible.

      The only real downside is the verbosity of the Pascal language and the need by its designers to keep importing features from more "modern" languages to "keep up". I suspect there was a desire to revamp the language by Delphi's developers at a time when Borland was putting their eggs into the Java basket. Delphi lost the funding and focus to stay ahead of the pack as a result.

      Yes, I still use other languages and tools...even some of the modern languages by day. But, when I go home at night, it's Delphi that is my preferred environment.

      Delete
    3. >>"In fact, name one language feature of Delphi that's been copied by other languages because it's awesome? Or even name one (sensical) feature we have that's unique?

      >I will...C# (and, .Net in general) as developed by Anders Hejlsberg.

      Anders isn't a language feature. :-) He's a smart and talented man who left many years ago.

      >MS recruited him away. If Delphi didn't hold merit, why would MS feel so compelled to steal him away?

      Anders is a smart and talented man. In fact, when Joel Spolsky was asked why he didn't consider Delphi for a project, he wrote something to the effect of "Let's be honest; when it comes to Delphi, the talent has left the building."

      Anders didn't invent Pascal though; Niklaus Wirth did. MS didn't hire him. :-)

      >Take a look at the similarities of the languages.

      Of course there's going to be some similarities. This still doesn't answer the question - name one true innovation that appeared in Delphi (1995 onwards) that was later adopted by other languages? Delphi itself was essentially Borland Pascal 7.0 (1992) with some changes for objects and the VCL and BDE added on. The improvements were in the framework and libraries, NOT the language even then. When Anders was asked at the unveiling by journalists why Pascal he answered that no one else was using it so they thought they could do whatever they wanted with it. Thus it wasn't because Pascal was inherently RAD or anything else.

      >Those who don't use Delphi...

      which doesn't include me. Pictures of some of my Delphi CDs, stack of Marco Cantu Mastering Delphi books, etc. available on request. I chose it for a start-up I was part owner of and worked at from 1995-2003.

      >I saw the benefits over Visual Basic and C development using Visual Studio. It was designed to be a VB killer and it did it's job perfectly.

      I refered to the Delphi + Crystal Reports as my "Access Killer". The problem though is that this isn't 1999 anymore. In 2012 I helped 2 startups choose software stacks and I realized Delphi didn't compete anymore on features, price or ecosystem and if I was doing it all again today myself I wouldn't make the same choice I did then. :-(

      >To this day, no language or tool can really do what, visually, what was possible in Delphi.

      You're kidding, right? Things like Qt don't exist? And point-and-click programming went out of fashion after the '90s.

      > The entire Win SDK was available to us.

      And was never updated beyond Windows 98. :-(

      >Database connectivity has always been a breeze ...

      In the BDE/dBase era. Until FireDAC though there was the nightmare of result.FieldByName("Whatever").AsString.

      > or the need for an interpret as for .NET and Mono.

      .Net/Mono are JIT compilers, not interpreters. And C# and Delphi perform similarly on SciMark (actually C# and Java both beat Delphi).

      > And, it's possible to develop for both Windows and Mac with, nearly virtually, the same source.

      Which you could do with C++ and Qt (or almost anything and Qt) for quite some time previously, as well as Java, Python, etc.

      >I would also dare you to write a high performance compiler in Ruby, Perl, Python.

      I would dare you to write one in Delphi. The Delphi compiler is written in C. 99.9% of software are not compilers, however. No one (outside a few GTK die-hards) write desktop applications in C anymore.

      >The only real downside is the verbosity of the Pascal language and the need by its designers to keep importing features from more "modern" languages to "keep up".

      Which brings us back to the point I was making. :-)

      >But, when I go home at night, it's Delphi that is my preferred environment.

      Whatever makes you happy. But we've got to be real about the state of the Delphi ecosystem today. Could you really recommend it for a new business or a job-seeker?

      Delete
  13. Yes. In spite of some vigorous and long standing predictions of its imminent demise, Delphi has stubbornly not died. In fact Embarcadero released statements showing significant increases in sales in the first four years since they acquired it.

    Delphi has always been and continues to be the right tool for a given job for enough developers to keep it viable.

    It's as simple as that.

    ReplyDelete
    Replies
    1. > In fact Embarcadero released statements showing significant increases
      >in sales in the first four years since they acquired it.

      When CodeGear released free "Turbo" versions their sales plummeted. There was nowhere to go but up for Embarcadero. Now they're strangely silent about sales.

      Delete
    2. Nope. Each launch from xe to xe5 included percentage growth in sales for the past 12 months. Each time it was good news, from ten to twenty percent growth year over year.

      Delete
    3. Actually they mixed units - sales, revenue, etc. They also released no press release during XE3's product cycle, which validates the claim by Embarcadero Insider that XE3 sales sank, probably due to the poor quality of FM1 and XE2. They've also shifted time frames, including comparing a year with two product releases to a year with one and then claiming increased revenue, etc. They're very loose with the numbers. There's very little we can positively infer from them, although some people like to read lots of things into them that aren't there (Bruce and I debate this all the time).

      They also did this with the "World Tour" figures. They'll claim attendance is "up" (no figures) and not mention that there were more tour stops in year Y than in year X, which could mean that attendance per event was down even if total attendance were up, etc.

      Analyzing Embarcadero sales figures is like trying to nail jelly to a tree.

      Come to think of it, they also put out an estimate of total Delphi licenses ever sold (including educational licenses and their own estimate of piracy for some reason) and then let folks at Delphi events misconstrue this and claim two million active users with no correction. This got worse when press releases began claiming that Delphi had the largest share of developers outside of MS' tools, which must have floored Oracle. ;-) Nick Hodges tried to spin this one as saying that Java developers don't develop for Windows (?!?), but it's still an absurd claim with absolutely no evidence to support it and certainly flies in the face of people's experience (and job figures).

      Honestly, there's very little said by Embarcadero officially that can be trusted (remember the lies about the database EULA change and claims that they were never really going to do it, etc.).

      Delete
  14. I like to stick with a language that lives and grows, not that language that always is just surviving!

    ReplyDelete
  15. MSJ: You've been following the changes and improvements to the Delphi language/compiler/RTL/etc over the past several years, right?

    http://www.tindex.net/index.html

    ReplyDelete
    Replies
    1. The only changes and improvements have been borrowing ideas that were in other languages for 4-5+ years: generics, Dictionaries, iterators, etc. Name one thing that's in Delphi that is/was unique to Delphi that other languages are beginning to copy because it was such a good idea?

      We haven't had anything like that in over a decade.

      It's user base doesn't seem to be appreciably growing and it's disappeared from schools in most of the Western hemisphere along with live conferences, books, magazines, and 3rd party component vendors. That's "just surviving", not living and growing.

      JavaOne conference routinely gets 12K-15K attendees. Python's main conference went from 1100 to 2000 in 2 years and this year sold out six weeks early at 2500 (maximum occupancy). In Europe the Italian conference brags about having 70 people show up and Belgium 200. We haven't had a U.S. conference since 2011 with none planned.

      No, sorry, at least in America Delphi is not growing/thriving. It's a burden being a Delphi programmer compared to many other languages here.

      Delete
    2. Most of the language features you refer to are classes and data structures rather than language features and are addressed by class libraries.

      I am looking at it again after 8 years as an old client has asked me to make some changes to code (that has been running smoothly for 8 years with no defects!) I downloaded the trial of XE4, found all the third party libraries, and in under a day was able to get the environment up and running, and this ancient code complied and running.
      Over two million lines of code compiled, loaded and running in under 3 minutes. At work it takes 8 hours + to compile the c++ quant library which is 6 million lines. We have to use a grid to make it bearable!

      What a pity so many of us (me included) have turned our backs on Delphi to the promised land of c# and .net. I must agree with the statement that one delphi coder can out produce a team of .net coders. Also, check out the stuff for ios apps: I got it up and running and wrote my first delphi ios app in 5 minutes with no books, reading etc. Try doing that in any other language or IDE.

      Delete
    3. >At work it takes 8 hours + to compile the c++ quant library which is 6
      >million lines. We have to use a grid to make it bearable!

      Kelly that's because the Delphi compiler is a legacy single-pass compiler design that dates back to Wirth and the original Pascal. The C++ compiler's multi-pass design allows it to implement many optimizations that can't be performed with single pass. Your code may take 8 hours to compile but it's going to perform 2x, 3x or more faster than equivalent Delphi code.

      I had a small benchmark in which Delphi took 3x as long as C because it didn't convert the division to bit-shifting operations. TinyC is a C compiler designed for speed and small size; it can fit on a floppy disk along with a Linux kernel! Because of its speed and size it performs very few optimizations; one of the few it implements is... bit-shifting. Even TinyC could optimize code in a way that Delphi XE5 could not. :-( Delphi's compilation speed comes at a performance price. Obviously the value of this trade-off depends on which is most important to you.

      Delete
  16. Try Lazarus, open source and very capable. If one has enjoyed the richness of components and speed of development in Delphi, Lazarus will not disappoint, especially the CodeTyphon distribution.
    As a major bonus, will compile to native code on many platforms, including Linux, Windows and Mac OS, all from a single source base.
    CodeTyphon link: "http://www.pilotlogic.com/sitejoom/index.php/codetyphon"

    Happy Coding!

    ReplyDelete
  17. I'ts primarily a matter of what you are used to, what resources are available for help, components etc and whether or not you want to be employed by a largish organisation or do your own thing. Getting a job in Delphi these days is most unlikely.

    However, as a single developer with lots of history and previously developed Delphi modules and code plus ongoing development of the IDE by Embarcadero to use systems other than Windows there is no reason to change at all. If I was under 30 and looking for a career as a programmer obviously I'd pick something rather more flavour of the month (or what Id learnt recently at Uni). That's not the case. Upgrades are not that expensive if you are still able to earn income from development. (Upgrade XE2->XE3 pro including HTML5 builder was under $600 and subsequent upgrade to XE4 only $51).

    I'm pleased that Embarcadero is still continuing development and hope that they can keep going with it. I don't mind paying a few hundred dollars for an upgrade for what has proved to be a flexible and dependable development environment with lots of help available when needed.

    ReplyDelete
  18. As long as there is one person coding in Delphy, Delphy is alive. And I may be that person. I love Delphy for it's usability and easyness to implement my ideas. Who can argue that?!

    ReplyDelete
    Replies
    1. I agree your point of view,, As and ISV I'been coding and deploying Delphi desktop apps since Delphi 2 up to day, of course I use other languajes such as PHP, .NET, C++, etc. depending on what I need to implement, but at the end of the day, I turn to Delphi (when it comes to desktop apps) because of the same reazons: easyness to implement ideas and also the easyness to deploy my apps,, like you just said: Who can argue that?

      Delete
  19. So much hate for good old Delphi. I develop mostly in PHP / Python / C# but Delphi has a degree of "instant productivity" that as of today is still unsurpassed. I had to literally save a company from disaster by creating complex fiscal reports that MUST be exactly done in a certain way. I had 4 days to do a 2 months worth of work. And thanks to Delphi I DID IT.

    Try saying you can do the same with any other tool while keeping a straight face. You won't. By the way I had to interact and merge with data created in 3 different SQL engines, including ancient file based tables but also 2 SQL engines. All done and visually for the most part. All with real time interactive forms (that AJAX would take 2-3 seconds to update per keystroke), pixel precision paper reports (else the company would see their fiscal papers rejected).
    Now I have my nice IDE, debugging tools etc. for PHP and Others but no way, NO WAY I could get that huge work done.

    Now, WHAAA WHAAA in Big Great America Delphi job are scarce. Though luck, the focus of world growth has moved away from there anyway (China and India are the new hot stuff) and guess what, Delphi and other "poor man's little team developers" tools are having a two digit a year growth in those new markets. New and unlike USA, with solid perspective to grow in the future.

    Just upgraded more mine and others' projects, an average of 1-2 man years to make each of them. Upgraded from Delphi 2, Delphi 7, Delphi 2007 and Delphi 2010 to Delphi XE5 and guess what?

    I had to change about 5 lines of code! Even for dinosaurs like BDE based ancient apps! So, today, a customer is running their legacy BDE 1998 app on Windows 8.1.

    In the meanwhile when they upgraded from Python 2.X to 3, a LOT of the scripts I had to maintain broke hard and had to rewrite portions of them. So much for "functional languages" and other bull. CEOs want their company to WORK and TODAY, not to be told that the wonderful functional language decided to stop being compatible with itself just because.

    ReplyDelete
    Replies
    1. Vahrokh, again, please show us the Delphi language structures that give you this productivity. Ask a C# developer and they show you LINQ. Ask a Python developer they show you list comprehensions (among other things). Ask a Delphi developer and they seem to bite down on cyanide capsules. :-(

      >By the way I had to interact and merge with data created in 3 different
      >SQL engines,

      And what did you use to do this? Delphi's old TDataset? BDE? Or FireDAC? And what about ADO.NET or Python's DB-API and SQLAlchemy would have made it impossible to do with those tools?

      >All done and visually for the most part.

      Any SQL Query Builder tool could have done that.

      >All with real time interactive forms ... pixel precision paper reports....

      Please don't tell me you used IntraWeb. And are you suggesting no other language has a PDF library or can print to a printer?

      >Now, WHAAA WHAAA in Big Great America Delphi job are scarce.

      Everywhere Delphi jobs are scarce. Check out Indeed.com's trend graph:

      http://www.indeed.com/jobtrends?q=Delphi&l=&relative=1

      >Delphi and other "poor man's little team developers" tools are having a two
      >digit a year growth in those new markets.

      And your source for these figures is? Chinese developers get ripped off as the Delphi price is astronomical for them and combined with abysmal average salaries (puts your growth claim in perspective) Delphi costs a huge percentage of their yearly income.

      http://delphihaters.blogspot.com/2011/09/dim-sums-in-china.html

      In fact, this post links to an EMBT forum post in which a HK citizen relates that Delphi is dying in popularity, not taught anymore, etc. over there just like it is in the USA so I really question the source of your data.

      >I had to change about 5 lines of code! Even for dinosaurs like BDE based
      >ancient apps! So, today, a customer is running their legacy BDE 1998 app
      >on Windows 8.1.

      I call foul on this as well. Python 2.x to 3 involved a major change in strings/Unicode. So did Delphi with 2010. If your Delphi 2, 7 and 2007 apps only needed 5 lines of code than Unicode wasn't an issue with these programs at all, in which case comparing them to Python 3's intentional compatibility-breaking Unicode change is apples and oranges.

      The real point to take away is that Python both evolves and deprecates old constructs to stay clean and streamlined. Because Delphi just keeps piling new stuff on top of old crud we have four string types, at least FIVE different ways to open a file - from the old Assign to TStreams to BlockReads to TFile etc. Some of those work with Unicode, some don't - it's a mess. Python has had ONE way its entire life - "open", which does everything all the other Delphi methods do.

      If crud is still in the language that means some people will not only not update their code to use the more modern features (which you apparently didn't either) but they keep using those ancient constructs in NEW code.

      >not to be told that the wonderful functional language decided to stop being
      >compatible with itself just because

      Sigh. Guido Van Rossum fixed the many problems that came from having two string types. Delphi switched to Unicode later, ignored Guido's public proclamation that it was the worst mistake he ever made, and gave us FOUR string types. Now they're talking about bringing it back down to one string type. Guess what? When the new compiler arrives, you're going to have the same porting work to do with Delphi.

      Meanwhile, Python not only kept developing the 2.x branch for a few years, they even backported 3.x features! Finally, the last 2.x version continues to be supported; Guido just extended its support to 2020! On the Delphi front, when EMBT switched to 6-month releases they dropped the support window down to 8 MONTHS. Python's is 1.5 years and 2x that for security bugs. Now which does your CEO want to depend on? I don't need to upgrade Python to get bugs fixed.

      Delete
  20. Wow! I love the idea that people are still so passionate about Delphi. I only wish I had read this blog when it was first posted so I had the opportunity to interact with some of the participants. Oh well, maybe this blog, like Delphi, will linger on and on...

    Anyways, I wanted to share the experiences of a non-Delphi developer who has been a member of a Delphi development shop. I suppose this will make more sense when I explain my position. I am a web developer, installation developer, help systems developer, software designer, and IT specialist (also known as DevOps Engineer) charged with the task of automating build and test procedures, deployment, etc. For more than 14 years, it was my responsibility to ensure the Delphi dev team had the environments and processes they needed to produce a huge financial and practice management suite of applications sold exclusively to Law firms. This team of developers wrote and maintained several million lines of code (not counting previous releases, just the latest re-write) which is best described as "Rock Solid".

    I've had the opportunity to converse with developers from competing firms since I left the company, and discovered that their teams also wrote and maintained very large code bases. However, none of them were Delphi shops. The size of these competing teams ranged from 8 to 15 developers... The size of the Delphi team I supported: 2.5 developers! (the .5 is for a newbie trainee that didn't contribute significantly to the code base) Even if you call it 3 developers, there's no denying the difference in productivity that Delphi provides. Also be aware that these coders almost never worked overtime, which is virtually unheard of in this business.

    In the final analysis, a Delphi shop compared to shops using other languages (C/C++, C#, .NET, Java) and writing the same type of applications for the same market segment. OUTPERFORMED the competition by a factor of at least 3!

    So, some of you have recounted your personal experience with productivity and even made vague claims that one Delphi dev is worth five .Net devs, etc., etc... Well I'm here to testify as a non-Delphi developer who has had the opportunity to compare apples to apples, that it's all true! There's absolutely no doubt that Delphi is far more productive than the leading, modern competitors. To those of you who voiced contrary opinions, you clearly don't know how to use the software and formed your opinions based on your inadequacies, not Delphi's. I'm not saying your opinions aren't valued (I'm sure your mother values them a great deal), but take it from a guy who's been in this business for almost 25 years, your preconceived notions do not serve you well, in fact, it's you who likely serves them.

    The question is, why, in an industry that values performance and agility so much, does a product like Delphi, with so much potential and capability, continue in its un-relenting path towards obscurity and obsolescence?

    I have the answer, but I'll wait for somebody to ask me before giving it up. (assuming someone still reads this blog).

    Cheers!

    ReplyDelete
    Replies
    1. I'd like to know. So would Marco Cantu (who is one of the Delphi development leaders). I would certainly like to see Delphi rise again - it's too good to be mothballed.

      Delete
    2. This doesn't, sadly, prove your point about productivity. Those 2.5 developers could have been very good, per your own account very well supported, etc. On top of that, when was this? The competition in 1995 was a lot different than the competition Delphi faces in 2014. I called Delphi my "Access Killer" when I chose it for a startup I was at from 1995-2003. In 2012 when I helped two new startups choose software stacks I realized there was no way I could honestly recommend Delphi to either of them; the ecosystem was almost dead and it offered too little for too much compared to the competition.

      To demonstrate that Delphi is more productive you actually need to show us the language features that make it more productive. I've yet to meet a person who can put up a slide on the wall and say "THIS. This language structure let's me do in one line of code what takes 10 in other languages." The fact is said language feature - or library feature - simply doesn't exist (or TeamBers and MVPers are keeping it a closely guarded secret). Meanwhile, it's undeniable that a lack of type inference, memory management, etc. lead to larger code bases and more potential for error.

      >does a product like Delphi, with so much potential and capability,
      >continue in its un-relenting path towards obscurity and obsolescence?

      Because Borland et al stopped evolving the language so it grew stagnant and stale? Because they couldn't deliver things like Unicode or 64-bit when enterprise needed them? Because they still can't get into the Windows App Store? Because they failed to deliver an acceptable web solution? Because they delivered a Linux solution to early and cross-platform too late? Because they tied the language to the framework and the IDE? Because point-and-click programming went out of style? Because with a dying ecosystem you can't find developers or libraries? Because of poor quality for many years? Or because the area where open source performs the best is development tools - tools written by developers for developers with no marketing or accounting department to answer to? And hence open source is devouring the development tools market as Borland foresaw?

      Delete
  21. @Above
    I wouldn't say Delphi is spiralling down so hard.

    Surely the fools at old lol "Inprise" nearly killed their flagship product and flagship. So incompetent they even failed killing it well enough to insure its demise.

    Now I feel Delphi hit the bottom and is slowly rising again. Despite the outrageous high price, they are keeping good practices like giving the sources. They are expanding by in example purchasing something important like FireDAC. Unlike the past, they are bundling some decent 3rd party components and my RAD Studio XE5 Ultimate IDE has only crashed once so far.

    ReplyDelete
  22. Delphi is dead. admit it.

    http://delphihaters.blogspot.com.au/
    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

    They should drag Anders Hejlsberg back;
    then *maybe*, he can resurrect Delphi.

    ReplyDelete
    Replies
    1. Anders was lured away with a million-dollar signing bonus. EMBT just bought a db tools vendor for $20 million dollars. They could have used that money as 20 signing bonuses to lure 20 extremely talented people to the firm; the kind of people who issue press releases about when you hire them. Instead they fired a lot of the experienced Delphi devs a few years ago and outsourced most of the development to the cheapest programmers they could find in Europe (Romania and Spain). One Romanian dev said the proffered pay is so low even for Romania that the only ones they can hire are kids straight out of school. The kids only work there to get one year of experience on their resumes before leaving to get a better-paying job elsewhere. Because of this morale is very low (and of course no one cares about bugs/problems because they don't plan on being around long enough to deal with them).

      Delete
  23. www.isdelphidead.com ;-)

    ReplyDelete
  24. I wrote the first review of Delphi for DDJ back in 1995. I get a huge kick out of the fact that it is still alive and still being discussed here. Thanks for the post.

    ReplyDelete
  25. So FreePascal with Lazarus is not a option ?

    ReplyDelete
  26. I still use C++ Builder every day. I wish it got more love as well.

    ReplyDelete
  27. I work for a company in Belgium that produces a suit of FMIS applications for the desktop, web and mobile.
    The desktop part was started in 1996 and is still being developed very actively. At that time we decided to go for Delphi (2) after a miserable 4GL experience with SQLWindows/Gupta and it's successor Centura.
    Despite the severe irritations we sometimes have about longstanding bugs in the IDE, I still think it was a good decision. The language still pleases me the most, but the whole environment is very productive indeed. Due to the large amount of code, switching is not an option and, if we would have to, I would not know what the best option would be. At some point we had a .Net conversion but, as soon as it was finished and tested, it deemed to be not performant enough.
    The fact that Delphi lives on after almost 20 years and even survived the Borland storms must mean something. I just think their upgrade prices are way too high. But, then again, that may be the only way to survive in the IDE market when your development environment does not serve to gain some binding to an OS, like with Microsoft, of course.

    ReplyDelete
  28. This branch of Delphi compatible ObjectPascal is looking healthy! ...

    Free Pascal Compiler 7,276 Downloads (this week)

    Lazarus Rapid applications development tool and libraries for FPC 11,895 Downloads (This Week)

    CodeTyphon Release Version:4.80 Created 2013-09-08 08:15:56
    Downloads 12, 597

    http://sourceforge.net/projects/lazarus/
    http://sourceforge.net/projects/freepascal/?source=frontpage&position=1
    http://www.pilotlogic.com/sitejoom/ (CodeTyphon)

    Free Pascal is a 32,64 and 16 bit professional Pascal compiler. It can target multiple processor architectures: Intel x86, AMD64/x86-64, PowerPC, PowerPC64, SPARC, and ARM. Supported operating systems include Linux, FreeBSD, Haiku, Mac OS X/iOS/Darwin, DOS, Win32, Win64, WinCE, OS/2, MorphOS, Nintendo GBA, Nintendo DS, and Nintendo Wii. Additionally, JVM, MIPS (big and little endian variants), i8086 and Motorola 68k architecture targets are available in the development versions.

    The Lazarus IDE is a stable and feature rich visual programming environment for the FreePascal Compiler. It supports the creation of self-standing graphical and console applications and runs on Linux, FreeBSD, MacOSX and Windows.

    ReplyDelete
  29. It's a real pleasure to use IDE that crashes every day and you have to write workarounds for neverending UI-related bugs of Delphi 7 that appear in Windows Vista and later versions.

    But it's more productive than VB6, definitely :)

    ReplyDelete
  30. I'm using Delphi to develope very advanced visual CAD/CAE simulation tools.

    There is actually no way this would be possible to get this level of design with any other programming environment. Not without a team of programmers and 125 man years of work anyway.

    I can't beleive someone actually quoted Python as a usable alternative, seriously?

    ReplyDelete
    Replies
    1. >There is actually no way this would be possible to get this level of design
      >with any other programming environment.

      See, this is the kind of hyperbole that makes talking about Delphi honestly so frustrating. First, have you any experience with other programming environments or more aptly, a comparable amount of experience with another environment? If not, you can't accurately make that statement.

      Second, most CAD software is not written in Delphi, so per your statement it should not exist. AutoCAD, the granddaddy of CAD software, is written in C++, for instance. I'm sure AutoDesk would be amused to learn that one needs Delphi to write CAD applications. CATIAv5, Pro/Engineer and Solidworks are also C++.

      >I can't beleive someone actually quoted Python as a usable alternative,
      >seriously?

      Seriously. Simpler language yet more powerful at the same time. Also vastly more popular with a vibrant ecosystem and actual job prospects. Its standard library is much richer, with many built-ins you need to pay thousands for with Delphi. When choosing a language stack of a project recently, the Delphi option would have cost almost $6000 to go apples-to-apples with the python option, and even then there were several features that just couldn't be obtained with Delphi. Python option cost $0 or $200 with the Jetbrains IDE.

      In tests I've done I've rewritten Delphi code in as little as 1/5 the number of lines with Python. It scales up - the larger/more complex the original Delphi code, the greater the difference in total LOC. On top of that, the Delphi compiler is so old and unoptimized that on an (admittedly simple) mathematics benchmark, Python code fed through a program that converted the math to C, compiled it, and wrapped it for importing into Python automatically ran the benchmark 3x faster than stock Delphi! Someone who looked at it had to hand-replace the division in the Delphi code with bit-shifting to match the C performance (which used the free gcc compiler). I'm working on an econometrics benchmark from a just-published paper now that was presented in several languages (but not Delphi). I'm going to test Delphi, Delphi with Dew's MtxVec math library ($600 with source code) and FreePascal. While native Python was rather slow in the paper, with a free JIT compiler that uses LLVM the Python turned in a performance about 1.65 times the speed of C across OSes. This was one of the best performances and while not beating VSC++ on Windows it did beat gcc C++ on Windows! It also beat MatLab and Mathematica. Based on my own previous benchmark testing I have a feeling Delphi is going to perform rather poorly compared to both C++ and even JIT-ed Python.

      Delete
    2. # of lines of code doesn't really matter all that much and you mentioned that you cross compiled python to C, which is kinda cheating. I can cross compile pascal to C too, you know. Python isn't IMO a fully-fledged language. I feel like, if I'm going to be maintaining millions of lines of code, I better have complex static types, compile-time evaluation, speed when I need it, including in-line ASM capabilities, threading, thread-pooling, a rich-extensible GUI system. Python is a scripting language, people write little scripts in it, sometimes those little scripts are web pages, but don't get me started on the idiocy that drives web programming. Most people who program python think that python and javascript are the as good as programming languages get and that HTML and CSS are great methods for designing GUIs. I don't claim that Delphi is the greatest language ever invented. It was after-all abandoned by its creator, who BTW became the architect of C#, which is easily, hands down, the most elegant computer programming language ever created. Delphi could have been the greatest language ever invented but we Delphi programmers all admit and recognize that it has been under poor stewardship for a long time now. I am thankful that there are more cross-compile options and 64-bit support now. I write things in delphi that, as the author says, would take large teams of programmers to accomplish in any other language. I particularly like the "Ctrl+shift+C" hotkey... it basically writes the code for me. I am prolific enough in Delphi that I have lots of secret weapons that make me more productive... none of which I'm going to share with you ;)

      Delete
  31. Stupid microsoft, why a VM(.net) for only run on windows platform ? why not just native exe ? shit .NET, shit visual studio, delphi is the best for produce desktop apps, no more to say, is the fact, the truth, MS is stupid !!!!!!

    ReplyDelete
  32. I love delphi, but I hate embarcadero and their policy of fixing bugs. VCL rocks.

    ReplyDelete
  33. The next time you go to a large Theme park a Delphi written application will let you through the gates :)

    ReplyDelete