Take the 2-minute tour ×

I'm coming from PHP and Python background with little knowledge of C, I have done many web based application now I'm thinking of Desktop application for windows platform.

A friend told me to go for Delphi and others are saying C# is the best, well, what I'm looking for is

  1. Simplicity
  2. Productivity
  3. Good API documentation
  4. Speed
  5. Drag and Drop
  6. Multi threading & Good Network API


share|improve this question

closed as not constructive by gnat, Walter, Doc Brown, StuperUser, GlenH7 Oct 22 '12 at 18:03


4 Answers 4

C# generally is going to have a larger user base, more development in the future, and the tools for RAD development through Visual Studio are unbelievable.

  1. The syntax will be similar to that you used in PHP and C.
  2. Visual Studio with its tools and IntelliSense is extremely productive.
  3. MSDN
  4. Again, VS tools + Intellisense, but speed really comes from a familiarity of your language and its features.
  5. VS designer for WinForms, WPF.
  6. System.Threading and System.Net

I do not have much experience with Delphi, and I am just speaking about my experiences with C# in general. Where I work, I have extremely tight deadlines envisioned by non-programmers, and I am able to pump out line of business desktop applications extremely fast. In the last three weeks, I went from specification to deployment on two winforms LOB applications. The productivity for GUI development in C# with VS is just crazy.

share|improve this answer
Thanks, according to a post at daniweb.com/forums/thread54305.html, Win32 API integration and completness in Delphi surpasses even C –  elf1984 Dec 24 '10 at 8:59
@Elf: Yes, Lord Soth is right about that. Between the Delphi team and the JEDI community project they've done a great job on WinAPI completeness. And Delphi is actually better at talking to C DLLs in general than C is. (No need for .lib files, for example.) –  Mason Wheeler Dec 24 '10 at 13:44
you should really look into Delphi if you think that C# is the ultimate development environment for creating desktop applications fast. I personally hate it when I have to create desktop stuff with visual studio, but nowadays I don't always have a choice (unfortunately). –  Wouter van Nifterick Dec 28 '10 at 18:32
Visual Studio's RAD (form design) tools suck, frankly. –  Warren P Jun 12 '11 at 3:27
@WarrenP Could you please elaborate? –  Tjaart Oct 22 '12 at 9:47

Delphi, definitely:

  1. Simplicity - Delphi's syntax is based on Pascal, which was explicitly designed to be easy to learn, and it can deliver on that promise. C#'s is based on the C family, which... well... was not.
  2. Productivity - Delphi is a descendant of Turbo Pascal, and it still has the fastest compiler known to man, which will boost your productivity enormously. Plus it has the debugger Visual Studio wishes its debugger will be like when it grows up. Especially in the latest version of Delphi, debugging is much easier.
  3. Good API documentation - "API" is a pretty vague word these days, encompassing all sorts of things. I assume you mean libraries, and here it's sort of a tossup. Both the .NET framework and the Delphi standard libraries have good online documentation and mediocre, difficult-to-use offline documentation. (A consequence of the Delphi team choosing to use the same horrible help system as Visual Studio, which they will hopefully move away from in the next version.)
  4. Speed - Delphi wins easily. It compiles to native code (faster execution and much faster startup because there's no JIT phase,) and it doesn't use managed pointers so object access is faster and less cache-unfriendly.
  5. Drag and Drop - A built-in feature of the VCL.
  6. Multi threading - Delphi has a built in thread class, but if you want to do complex things with concurrency there are better options. Primoz Gabrijelcic, a Delphi community member, has been working on an excellent concurrency library that I've helped contribute to. It provides high-level support for common threading goals such as task pooling, parallel FOR loops and multi-stage pipeline processes.
  7. Good Network API - Delphi ships with Indy, a mature open-source library that makes Internet connections easy to set up and manage. We use it at work to provide the communications layer for an industry-leading app that you've probably never heard of unless you work in broadcast media.
  8. Deployment - This wasn't on your list, but it's worth mentioning. There are still systems out there that don't have the .NET framework preinstalled. By default, Delphi compiles its standard library into the EXE, then uses a smartlinker to remove parts you don't use, resulting in small EXEs that don't have dependencies on massive runtime libraries weighing in at hundreds of MBs that your users will have to download and install separately.
share|improve this answer
@Elf: There may be more C# jobs available, but there are also lots more people competing for them. Skilled Delphi developers don't have any trouble finding work. –  Mason Wheeler Dec 24 '10 at 14:36
C# is not based only on C++, but also on Delphi and Java. I too learned programming in Pascal, and I see very much of it's philosophy in C#. Regarding managed pointers you have got that backwards, there is no overhead accessing data through managed pointers, and changing them is faster than in a system using reference counting. –  Guffa Dec 24 '10 at 17:20
@Mason Wheeler: Your assumption is based on incorrect information. Managed pointers are not double-indirect at all, they are just regular pointers. The garbage collector changes the pointers when it moves the data around. Using double-indirect pointers for that wouldn't even work. –  Guffa Jan 10 '11 at 3:06
Delphi syntax being easy to learn is a completely subjective statement. I was infuriated by Delphi syntax, and decided against learning it for that reason. –  Tjaart Oct 22 '12 at 9:51
-1 : This answer is biased like crazy. The Visual Studio debugger is at least as good if not better than Delphi. Delphi documentation is inexistant compared to MSDN being the best documentation ever. –  marco-fiset Oct 22 '12 at 18:08

Both have all 6 points you want but I feel C# has the edge on most if not all.

To go through the points:

  1. Delphi requires memory management, so you could argue that alone makes C# simpler. Accepted answer mentions syntax here, well C# syntax is similar to both PHP and Java, so if you want to get up and running quicker from either of those backgrounds, then C# has the edge.
  2. Productivity, I think you get more done quicker in C#. The .net library gives you so much that in the bad old days, I'd have to look to 3rd party delphi components to provide.
  3. Documentation, Delphi's was always good, MSDN is better, plus you will find a larger community for support, see my Stack Overflow anaylsis below.
  4. Speed, Delphi might have the edge on this, but assembly trumps all so that's not usually a good reason to pick a language. One thing I would point out is that I've heard people cite that C# is interpretted. It is not, it never has been, it has always had a JIT.
  5. Drag and drop, available on both.
  6. Multithreading, Delphi is good but C# is excellent with build in constructs like lock(){} parallel extensions, and the new await.

Extra point, the question title is GUI programming, for this I am a big fan of .nets WPF, which, the only thing Delphi had that was half way close was Bold, which was a pain to tame and now dead.

Community size, comparing the number of questions on this and Stack Overflow on both the Delphi and C# tags you will see that the size of the C# community is much larger.

Stack Overflow:

  • Delphi 17K
  • C# 367K
  • Java 312K
  • c 73K

I've added c, to show that's not a problem with the languages age and Java just for comparison.

I'm not a C# or Java fan boy, I was a big Delphi fan, professional pure Delphi developer for 7 years, but they really screwed it up from 2005 onwards with thier ill faited foray into .net which screwed up the stability of the IDE for even native 32 bit compilation. Delphi 7 was peak of the language in my view.

share|improve this answer
How about a reply with that downvote? –  weston Oct 22 '12 at 8:49
I am not the downvoter, but I would say that you are not answering the question. Your are just assessing Delphi's popularity on stackoverflow. You sure make a point, but it is IMHO quite minor. Being the only one to use a technology is not always a bad thing. –  Simon Oct 22 '12 at 8:55
@Simon fair point, I've now answered all points and integrated the analysis of the number of questions into a wider point about community size. –  weston Oct 22 '12 at 9:09
It could be argued that language that results in more questions is more complicated to use. ;-) How was Bold similar to WPF? I've used WPF and didn't see any similarities. –  Jim McKeeth Aug 27 '13 at 15:48
@JimMcKeeth Both Bold and WPF provide a framework to bind data to UI controls so that when the data changes, the UI updates and vice versa if required. –  weston Aug 27 '13 at 18:56

When I was at uni, I was taught programming with Delphi. I am a bit rusty, but I am currently reading through a lot of Delphi code to port it to a C# application.

I much prefer the OO with functional leanings of C# over the procedural with OO leanings of Delphi. You should consider how you prefer to code when choosing between them. I don't think there is much in it when it comes to simplicity - just what you find easier. The same goes for productivity.

In terms of RAD (rapid application development) there is not much between winforms and Delphi GUI design. They remind me of each other.

WPF on the other hand is something I prefer over both for its declarative style.

I don't think there is much difference between the quality and coverage of vendor provided documentation for either C# or Delphi. I think that you will find more non-vendor information about C#, but that could just be because I've not really searched for much in the way of Delphi.

I've not had to do any threaded programming with Delphi, and any networking I did was years ago and I can't remember.

The .NET libraries for parallel processing, events and other threading work are good. So you won't be missing out there. There is a great deal of support when it comes to networking, so again highly recommended.

Overall I would go with C#/.NET. This is partly because of WPF, but also I prefer the code I write in C#. As far as I'm aware delphi doesn't have anything like Linq, which I find invaluable.

share|improve this answer
Thank you for your wonderful reply. which book did you read as a beginner? now i will be starting C# 4 and .NET 4 on VS 2010 –  elf1984 Dec 24 '10 at 12:04
Beware trying to port a Delphi app to C#. Every time I've heard of any company trying it, they've ended up validating every point Joel made in "Things You Should Never Do, Part 1" and it ended in disaster for the product and the company that owns it. –  Mason Wheeler Dec 24 '10 at 12:34
Sorry, I can't really advise you on a beginners book for c#4. I'm not sure I had one when I started c# (back in the 1.1 days. I'm sure there were some, but I didn't read one). When I started I think the first book I used was Teach Yourself C++ in 21 Days by Jesse Liberty, which I read before I started uni. It took me ages to get through it, but I learned a lot. Another good book I had was Discover Delphi, that was the book for the course. A book I recommend is Object Thinking by David West, as it really gets you thinking about OOP and OOD, also Effective C# by Bill Wagner... –  Matt Ellen Dec 24 '10 at 12:51
...They're not really beginners book, but once you have the fundamentals then they have great tips and advice on how to become a better programmer. –  Matt Ellen Dec 24 '10 at 12:52
thanks everybody, merry christmas –  elf1984 Dec 24 '10 at 13:34
