Nick Bradbury (the author of HomeSite, TopStyle and FeedDemon) just posted a fascinating explanation of why he uses Delphi:

I'd like to know if there are other reasons. Why do you use Delphi?

(I'm making this community wiki from the onset. I'm interested in hearing your answers, not in points.)

+2  A: 

When I used it, it was because I thought the GUI's that it made looked nicer and were easier to make (than MFC). Object Pascal isn't great, but it was a lot better than VB. These days, I'm pretty happy with C#, so I don't use it any more.

Lou Franco
Voted down -- question was why you /do/ use it not why you don't. :-)
Nick Hodges
@Nick: he did answer why he *did* use it when he did...And other than that he's happy with C# these days he also didn't write anything about why he's not using it anymore...So, I don't think there's any objective reason to downvote this (but none to upvote either - but that would always be subjective)
Oliver Giesen
+13  A: 

I've got a myriad of reasons, but here is one that is often overlooked: Compilation speed.

+6  A: 

I've used to use it, because:

  1. Relatively quick GUI development.
  2. Easy and intuitive development of DB based application.
  3. It was one of the kind at those times.

PS. Ah, almost forgot, Object Pascal was the only language I knew when. ;)

Artem Barger
That is a good point about being the only language you knew. With Delphi being able to cover so many different development tasks you really don't need to know many other languages. So many other languages are too specialized / limited to allow that freedom to specialize in one language to solve all your programming needs.
Jim McKeeth
Delphi being "one language to solve all your programming needs" is such a ridiculous claim. There are whole classes of problems where Delphi is a bad fit. Example? Just have a look at the bizarre and long-winded Delphi solutions in the Project Euler forums where a Haskell or Python one-liner does a much better job. Delphi adepts may not *need* to know other languages, but it would help against the tunnel vision. As they say, if all you have / know is a hammer, everything looks like a nail.
Looking at some of the examples on there, I'd guess that a whole lot of that boils down to the need for very large numbers. Delphi doesn't have built-in "bignum" support, but then again I don't think I've ever come across a real-world problem that actually requires it.
Mason Wheeler
List comprehensions? map and filter? Would these help to solve real-world problems?
@mghie, that wasn't my point, but if you insist I can think of problems which would not fit both neither Haskel, neither Python. And it's very arguable statement regarding class of problems where Delphi is a bad fit, because does it bad fit since the solution is 100 lines instead of 1 or 10? Or because it lack in a performance? Or because of Pascal syntax you have a feeling it could be better? Once you are able to solve same problem in two different languages those languages considered to have same computational power, so you comment is ridiculous and inappropriate is this context.
Artem Barger
@Artem Barger: Neither of my comments applied to your answer. Sorry for not making that clearer.
+13  A: 

Because from very few development to tools for Windows (pure Windows without any runtimes), Delphi has highest-level object oriented language (you do not need C++ speed all the time), large user community, tones of available components and really useful built-in component palette. And there are Developer Express tools for Delphi :)

+28  A: 

Why do I use Delphi? Basic reasons, in no particular order:

  1. Pascal syntax is the most user-friendly of any language I've come across.
  2. It's powerful and fast.
  3. It manages to be powerful without sacrificing control. Unlike abstraction inversion-prone "higher-level" managed languages, you can easily get down to bare metal on almost every feature of Delphi if you need to.
  4. The fastest compiler known to man.
  5. The VCL and RTL are a joy to work with.
Mason Wheeler
That's very close to the list I made about why I started a new web-platform on Delphi:
Stijn Sanders
Yeah, I've seen your project before. Looks interesting. I'll have to check it out if I'm ever doing any web development...
Mason Wheeler
I really miss Turbo Pascal sometimes. However, I moved to a *nix neighborhood around 1993, and Pascal (Delphi) didn't really make the trip. As others have pointed out, there is a reluctance to try out ***'s Delphi when it is relatively expensive, and there are so many open source alternative languages. If I were condemned to a DOS/Windows existence again, I would probably check it out, though.
Well, there's always FPC/Lazarus, if you don't need the upper 1/3 of Delphi's feature set...
Mason Wheeler
I also particularly like the fact that there are few typo errors to make in the syntax like "=" vs "==" in C. If it is wrong, it won't compile in 99.9% of the cases.
Marco van de Voort
If you think Pascal syntax is user-friendly, then you should definitively try Python ;-D (but I agree with you that for statically typed imperative languages, Pascal is among the best)
@fortran: I'm puzzled. Pascal's syntax is _incredibly_ user-friendly, and I really don't think that's a contentious statement - that's it's been extremely widely-used is just one illustration of this. Strongly typed, structured, case-insensitive - it's very easy to become productive quickly, and it reinforces good habits.
I think what he means is not that Pascal syntax is not user-friendly, but that Python's is even more so. Personally, I find the whole formalized whitespace thing a bit silly. YMMV, I suppose...
Mason Wheeler
@Argalatyr: Case insensitivity does not reinforce good habits. Delphi code from programmers I respect is more often than not using same-case keywords and identifiers, even if Delphi doesn't require it. Why would sloppy writing be a good habit, whether it is in a natural or in a programming language?
@Mghie: Argalatyr's claim makes more sense if you look at it from the opposite end. It drives me up the wall whenever I'm working inside a C library and I see a variable declaration like "HWND hwnd;" Anyone who abuses case sensitivity to reuse the same identifier name with different capitalization oughtta be shot. In Pascal, you can't do that.
Mason Wheeler
@Mason: exactly. I've heard no end of misery from others who got bitten by capitalization-related code bugs. I use capitalization carefully to help with meaning in my Delphi code - I see no value in a compiler that considers identifiers as distinct when they differ only in capitalization.
+5  A: 

Because it provided the best middle ground between C++ and Visual Basic:

C++ make many common tasks (particularly UI tasks) complicated and prone to exploding with the slightest fault. You could do any task you wanted, but every task was equally time consuming and error prone.

Visual Basic made the most common tasks easy to do, often in such a way that the "programmer" was protected from their own stupidity. But Visual Basic also made most things outside of the common denominator impossible without resorting to Visual Basic "hacks" - entire books where devoted to this kind of dark and dangerous magic.

Delphi provided an excellent middle ground - a powerful language mostly on par with C++ that had much better type safety, a fantastic standard library for both UI and programming tasks, and a killer IDE.

Then Microsoft hired Anders and we got C#, which basically combined the best of C++, Delphi and Java (and a bit of Smalltalk) into a single well designed language, backed by the powerful .NET framework (the Delphi standard library was starting to show its age by 2000). And of course Borland threw Delphi to the dogs, turning one of the best IDEs on the market into one of the worst.

In 2005 I talked with polish local Borland sales representative. He told me that they are only interested in professional companies. They also were not interested in cheap students version – the educational version was priced about 100 USD (plus 22% VAT, as VAT is obligatory in EU) and there was no possibility of upgrade from EDU to normal license. This was sky price for polish students. So, two years later there was no way how you can find new Delphi developers on the job market. All the graduates switched to Java and .NET. Borland almost managed to kill Delphi...
+20  A: 

In Delphi things you don't really understand tend to go right, whereas they tend to go wrong in C++. Yet by the time you do understand it you can still go down to the metal and do things your way if you want to.

I *love* that first sentence! I wish I could upvote it more than once, just for that...
Mason Wheeler
+7  A: 
  • As David says, "Because it provides the best middle ground between C++ and Visual Basic"

  • Provides the programmer with a lot of control, access to OS functions

  • Produces relatively small native code executables

  • By and large, compiler produces relatively fast code, almost comparable to C/C++ code (but suboptimal for floating point stuff); has a nice calling convention.

  • If code needs to be /faster/, it has very powerful inline assembler support, currently supporting up to SSE4.2 instruction sets. (You can write BASM assembly code without having to write the entire program in assembly.)

  • Compiles fast

  • Easy to make GUIs

  • Nice IDE and debugger

  • I personally think the pascal-style syntax is somewhat easier to read (and especially re-read after a while) than C-style (that's not a major point, though); code is more structured and clearer overall, IMHO.

+26  A: 

The sheer joy of being in a familiar language...

  • Where code that I wrote decades ago still compiles without any major changes.

  • A language where if I don't comment at all, I can still make sense of the intention without having to do mental translations.

  • Where case doesn't matter, so I don't spend hours overlooking a variable that was pulling in the wrong version of iX.

  • Where assignment of a variable does not return "true" (honestly, how many man years were wasted on bugs in another language when the programmer wanted to say if i==4 but coded i=4 and the loop always returned true?)

If I could do +2 I would, especially for your first bullet!
Love #4. I have to work with C libraries sometimes, and it drives me nuts trying to keep distinct "logical" and "bitwise" versions of several different operators straight because the compiler doesn't know the difference between a number and a boolean.
Mason Wheeler
+1 for the first point !
+a pad on the shoulder - for the second and third points!
+1 especially for #4.
Ertugrul Tamer Kara
The idea of a case-insensitive language makes me shudder.
Chris Lutz
The idea of case-sensitive languages makes *me* shudder. You invariably end up with really ugly scenarios where someone reuses the same word with two (or more) different capitalizations in the same scope.
Mason Wheeler
+6  A: 

In addition to the many strengths listed:

  • The VCL is excellent and familiar
  • Many of us should admit: Turbo Pascal nostalgia!
No Turbo Pascal nostalgia for me. My "nostalgia" language is Applesoft Basic. I was first introduced to Pascal in high school, back when Delphi was new. A friend of mine saw me using VB at home and introduced me to "Visual Pascal." I switched and I've never looked back.
Mason Wheeler
I still have early TP disks. Man, that compiler was smokin' fast! Conway's game of life was an early project, and I couldn't wait for each issue of _Scientific American_ to arrive with another of Dewdney's "Computer Recreations". Those were the days...
+12  A: 

Because I help develop Delphi itself? Couldn't resist... :-)

I've also used Turbo Pascal from way, way back. I know C, C++, C#, some Java, Assembler(x86, 8080, Z80, 68xx, others...), Basic, Forth, Lisp, yada-yada. Of all of them, Delphi (Object Pascal) is the most comfortable and familiar even though I'm rather proficient in many of the others.

Allen Bauer
+10  A: 

That's easy. You can see it here

Simply said, Delphi has all of the power to do almost anything on Win32 (kernel level device drivers being the exception), and still builds standalone executables with no external dependencies other than those every Win32 app has on the Windows API. No .NET overhead, fast execution times, most apps still fit on a floppy disk, XCopy deployment, and being able to program down to the steel when needed - these are all advantages of Delphi.

Ken White
You can also make native executables and device drivers in Delphi with some extra work.
Where did I say you couldn't make native executables? Also, you can make *device drivers* with some work, but not *kernel mode* device drivers; Delphi's linker doesn't create the proper executable format for them.
Ken White
+15  A: 

I put some thought into this one, and it really comes down to the fact that Delphi does what it does really, really well. It takes care of enough of the annoying stuff for me without completely abstracting what is going on. It maintains the right balance between productivity and power.

Even when I was doing C# full time, and was completely familiar with C#, I still found myself writing Delphi at home, or if I needed a utility to do something quickly.

Every so often I hear about some new shiny language or development tool, so I download the tools, check them out, go through the tutorial, and them am floored to find out they still don't do something that Delphi has had since Delphi 1. Like Eclipse doesn't have a Visual form designer? What is up with that?

Or I was working with C# again the other day and was reminded of the fact that if you don't include code to handle exceptions, then Visual Studio just assumes you don't want to know about them, so even though you are debugging the application it never lets you know when an exception occurs.

Sure there are some things that Delphi may not be ideal for, but of the 90% of software development that goes on out there Delphi is the best overall tool for all the various reasons everyone has listed here.

  1. Good level of backwards compatibility
  2. Modern language features (Generics, Anonymous methods, etc.)
  3. Frequent updates (Delphi 2007 supported Vista before Microsoft did!)
  4. Very fast compile and execution
  5. Just enough out of the box to get you going, and then extensible enough to really customize (through Add-ins and components).
Jim McKeeth
You can catch exceptions through Debug -> Exceptions; check any exception you want to cause a break.
+1  A: 

+1 to other postings.

What wasn't stressed: Design decisions (language syntax, VCL, RTL etc.) made the things look very natural hence...

  • The developer is much more productive

  • One can control bigger amounts of code compared with other languages

  • Learning curve is improved

  • One can concentrate on his business problem and not on how to code it.

  • The amount of bugs (both logical & coding) per LOC is greatly reduced

I just hope that this trend will continue...

+7  A: 

Because I develop windows shareware.
I get the small size and speed of c++ with the productivity of C#.

For web apps,I use something different, but in it's niche Delphi is hard to touch.

+15  A: 

I use Delphi because

  • Pascal is my favourite language
  • there was never anything I coulnd't do with Delphi
  • compile time beats all other languages I've seen so far
  • there is a very good community
  • 3rd party components exist for everything one could wish for
  • it creates standalone apps with no dependencies

and yes, Turbo Pascal nostalgia too, I proudly admit :)

+4  A: 

You can teach C/C++ and VB programmers how to use Delphi within a couple of weeks. Both lots complain (about the IDE and semicolons) and you do get some of their favourite idioms, but they do become productive very quickly.

I don't think semicolons will scare the C anc C++ guys much.
Bruce McGee
+3  A: 

I actually think well written Object Pascal code looks beautiful. Sad I know, but take a look at some of your best Pascal code..are you smiling?

I don't get that looking at C# for instance.

That's not the only, or even most important reason I use Delphi, but it does help if you are smiling while working!

+5  A: 

My main reason for using Delphi is that is what the primary application I work on has been developed in for the past 12 (or more) years (I've been working on it for about 10 of those years). The application has never needed a rewrite, which it certainly would have if it had written it in any language Microsoft produced.

I think it's really awesome you can take an application written in Delphi 1, and with minimal (if any) modification have it running in Delphi 2009. I don't think you could even take "hello world" written in VB6 and compile it in VS2008/10 (correct me if I'm wrong here).

I've been doing a bit of C# dev lately, and there are some very compelling reasons for using it, but I'm sticking with Delphi for now, especially as it is now under aggressive development and improvement.

+2  A: 

When I moved from Delphi to C#,I thought Delphi is not so modern seeing the swanky LINQ and other nice features in C#.Months later I had to move a huge project in an unmanaged language and my choice was Delphi.I tried out Delphi 2009 and I was amazed,Delphi is very good!

  1. -Unmanaged x86 cannot be decompiled!
  2. -Generics,Anonymous methods
  3. -Very Fast Compiler,Very fast execution
  4. -The owner also provides a C++Builder for the C-style programmers ,in which you can use Pascal.
+3  A: 

Back in 1986 I was working for a University and we had to select a programming environment for some scientific instrumentation. Our choices were C or Pascal at that time (Turbo Pascal of course). We chose Turbo Pascal and the main reasons were readability and maintainability of the code as well as speed of the compiler. With many different persons working on the code over the years the first two points have really been crucial. Fast forward more than 20 years and Delphi is my main programming platform for Windows and both points are still very important. I am able to leverage code that has been written many years ago. Delphi has allowed me to develop faster and with better quality and thus been one important basis of commercial success during all these years.

The most amazing part in retrospect of Delphi is how constant innovation has kept the language / IDE / framework up to date, while maintaining a very high degree of compatibility. Turbo Pascal 5.5 introduced object oriented programming, Delphi 1 introduced components and RAD programming. Delphi 2 introduced 32bit. The improvements went on, with every release and now with Delphi 2009 we have generics, Unicode, unit testing, refactoring and much much more. All these improvements happened in a way that allowed me to develop my skill set with the language and improve my code base.

I do development in a number of different languages (e.g. C on micro controllers, Java on mobile phones,, PHP, assembly language on various micro controllers / processors, ...). I have used other languages (Basic, Forth, Fortran, ...). The tool set is dictated by the platform / purpose of the development task. For Win32 there is nothing that comes close to Delphi.

We cannot forsee the future, but with the history of Delphi and the current developments/ roadmaps and engagement if Delphi at Embarcadero (Delphi Prism, cross platform developments, Win64) my initial decision of 1986 continuous to be excellent!

Jan Mitrovics
Interesting. I also started using Turbo Pascal to program scientific instrumentation at about the same time (1987) and for many of the same reasons. TP3 was really a great tool and made short work of the low-level IO, bit twiddling and IRQs handling :)
David Taylor
+1  A: 

Because I got a CD with a Delphi 2 compiler that came with a IBM programming course that I bought at the kiosk (just the first fascicle, that was the cheap one) and I really liked it :-)

To be honest, I didn't knew anything about programming yet, I just had fun placing buttons and changing the colors of the widgets when clicked, but when I got my fist Object Oriented Programming lessons at the University... then everything snapped into it's place and I became a much happier person! :-D

+1  A: 
  • Since I already have about 300'000 lines of meaningful source code which will take me about 3 years to port to C++.
  • Since the IDE is not that bad (I wished it was stable as Visual Studio)
  • Since there are lots of Internet resources (still) to copy/paste from
  • Since it is fast
  • and most of all... it compiles to NATIVE EXECUTABLE. Sick and tired of runtimes!!
Gad D Lord
+3  A: 

Back when Delphi 1 was new I was attending a MS VB4 launch and they kept referring to the UI speed of Delphi. The presenter even went on to say that he "didn't know how they made it work so fast". I'd not heard of Delphi so I though I would try it out - Thanks MS!

To be honest it comes down to 3 major things for me:

  • The UI always works and looks slick. We always get comments on that. It sells product.
  • Its pure RAD. We get things prototyped faster than talking about it.
  • It works with almost any API or platform. We interface to a lot of weird non-MS software and angry hardware. It works. There's always a way to get Delphi to talk to something and maintain consistent up-time.

Creating stand-alone apps is another distinct bonus. Native code rocks! Simple.

With Delphi you feel in control of what your app is doing.

+1  A: 

Very fast compiling and code output, which is also a lot less error prone than c or c++.

It is readable and a lot of my old code is still running on all windows platforms as well as Vista, the IDE is actually more stable than Visual studio 2003 in Vista, which we have to use on some customers solutions that only run .net 1.1 so in that way Delphi is actually more windows compatible than some of Microsofts own dev tools (Delphi 7 works in Vista -> Visual studio 2003 doesn't without a lot of hacking).

Since it doesn't use a trillion different libraries it is actually easy to get up and running on Crossover office/Wine so that my Delphi windows app is now running on Linux and Mac.

+2  A: 
  • We have over 1 million lines of Delphi code to support, and not enough people to rewrite it (even if we wanted to)
  • Pascal was my 'first' proper langauge
  • Delphi can do anything any other language can do
  • Close to the metal than c#
  • Easier than c++
  • NOT Visual Basic
+2  A: 

C# and Java, and their accompanying frameworks, are primarily consultant's languages. They can be used quite effectively to convince clients that your work is rocket science. Delphi on the other hand, offers a consistent, long-lived framework, along with some excellent toolkits (DevExpress and RemoObjects to name a couple) which will speed development and allow you to create nearly permanent code bases for your applications, whether single or multi-user.

Believe me, if you want to entrench yourself in a client, add a few recent layers from either the DotNet or Java stack, JQuery or Dojo or another AJAX framework, and get your network buddies who know the ins and outs of IIS or Apache, and glorify the heck out of your solution. In the mean time, a Delphi team using Delphi 2010 and the above mentioned frameworks would code around you with a solution that is just as fast, and much easier to maintain than any of the platforms with virtual machines and bloated frameworks.