hello,
Have you tried looking at : http://www.gekko-software.
Thanks.
Louis
Main Topics
Browse All TopicsI am using Delphi 2007 and I face some problem to find developers for delphi. I am thinking to move to C++ or C# because it is easier to find programers.
So what are the deffernces between Delphi, C# and C++?
Which is better to use?
What API is good to use and is will known?
Thank You,
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
hello,
Have you tried looking at : http://www.gekko-software.
Thanks.
Louis
If you are coming from a Delphi/VCL background, you'll like .NET (C# or VB.NET) better than C++.
C# is a managed (gargage collected) language implementation with better support for drag and drop, event-drive programming like Delphi, as opposed to C++.
C++ takes a long time to become productive for GUI applications (whether you use MFC or some other framework). As much as I love C++, we find we are not as productive writing apps with it and only use it when total performance and memory size is paramount. Otherwise, C# in the .NET Framework is a much more productive environment for business apps.
The downside to C# is protection of intellectual property. C# is semi-compiled to .NET/CLR bytecode, but is easier to decompile, and there is a lot of metadata stored in the assembly to support things like reflection. So if you are writing a commercial application, at least plan on investing in an obfuscator or full .NET assembly compiler.
That is where C++ has advantages. The binary executables are tight and fairly secure against all but the most advanced decompilation technology.
For business apps, .NET wins.
For proprietary, sensitive technology, C++ wins.
For memory usage, total speed C++ wins.
For productivity, .NET wins.
C# and C++ are widely being used, depends on the project u work on.
based on the "product" u wish to provide, u can investigate which technology is best for your needs and which environemnt is best suited to accomplish that.
so there's no straight answer to your question.
i'm pretty sure that you'll have better chances finding C# developers...
good luck
People claiming that C++ is not well suited for GUI applications have never used anything beyond WinAPI or MFC.
Check Qt http://qt.nokia.com/produc
>>People claiming that C++ is not well suited for GUI applications have never used anything beyond WinAPI or MFC.
A statement that is very presumptuous and totally unsupportable.
I've implemented C++ GUIs with several other frameworks, on Windows and UNIX platforms INCLUDING Motif / X-Windows and Qt.
They are still inferior in the RAD arena to Visual Studio .NET or Borland Delphi (which perhaps you have never used?).
I am a long time Delphi developer (starting within 2 months of Delphi being released to the world ;-). I have, of late, been forced into doing some C# development. I will offer my opinion from that viewpoint.
Personally, I do NOT like C#.
Delphi is a RAD tool; C# is NOT a RAD tool. It requires a lot more in the way of handling things at a lower level in order to get to where you want to go. In many ways, C# does not have the same consistency toward things that Delphi does . (For example, an Integer variable can be converted to a string by IntVar.ToString() but a string cannot be converted to an Integer with a corresponding StringVar.ToInt().)
C# does not _really_ compile, at least, not to native code. It compiles to a "Common Language Runtime" (CLR) representation that is then interpretted in order to execute it. This is supposedly an advantage because it can then be run on any system that has a CLR engine; however, if you are working strictly in a Windows Environment, is it really an advantage?
C# hads all of the "advantages" over Delphi that C++ does . . . which, again, IMHO, is note really any. I have serious questions regarding security issues when the CRL can be reverted to highly readable source code using "reflection" (which is touted as an "advantage" of C# over Delphi). This means that anyone who can get to the "executable" can convert it to source unless it is "obfuscated" . . . which is another step that you have to do.
I can see advantages for C# ans ASP.Net for web based development. However, I cannot see advantages if you are NOT developing web based applications.
As for finding Delphi Developers, we are still out there and available . . . for a fee. ;-) (We may not be for sale but we can be _leased_. ;-)
>> People claiming that C++ is not well suited for GUI applications have never used anything beyond WinAPI or MFC.
LMB, there is a world of difference between claiming it's not well suited and claiming there are languages better suited. You absolutely cannot deny the learning curve of C++ is far steeper and since I'm pretty sure this question is business oriented, where time is money, I'm sure the asker would prefer a realistic answer rather than once guided by your personal preferences.
You need to think about the askers need, not your own C++ ego.
> They are still inferior in the RAD arena to Visual Studio .NET or Borland Delphi (which perhaps you have never used?).
Actually I used both. I must admit that I'm not aware about every feature in their latest versions, but I'm fairly sure there are no equivalent for many Qt features (well, unless you buy some third party library).
@8080_Diver:
I wont detract from Delphi. Borland did it right, and has been for years, except for their choice of base language. Pascal is the only thing that held Delphi back, in my opinion. History has shown that people wanted a C-like syntax. But for people who were willing to try it, developing Windows apps in Delphi has always been a joy, and the projects we did with it resulted in on-time deliveries and easy maintenance.
But regarding your statement on C#, I think you haven't spent enough time with C#. There are orthgonality issues with any language.
The case you use above really isn't an orthogonal case. Int -> String is not the same as String -> Int. One way is guaranteed to succeed, but the latter is not. Converting ANYTHING from a String may fail due to parse issues, simply because a String could hold anything. So C# does have int.Parse and int.TryParse for cases when you do or don't care about an exception being thrown. This doesn't make it an inconsistent language, to me. You are actually talking about API and not language structure. Many languages do string conversions in an API, at least C# provides it.
Regarding the CLR and bytecode, well, I'm on your side. I wish C# was a fully compiled language and also do not like the requirement of a fat runtime on my target platforms. For a Web app, the whole reason I would NOT choose C# is that platform independance is very important in a server environment, so Java or Perl usually fits better.
Good points though.
mrjoltcola: You are only comparing C++ and C#
IMHO :
> For business apps, .NET wins.
Delphi is second, but some people would put it first, it's more a matter of taste.
> For proprietary, sensitive technology, C++ wins.
Delphi is second, .NET a bit behind
> For memory usage, total speed C++ wins.
except for drivers and embedded systems, where C++ is unavoidable, there is little gain with C++ compared to Delphi. Both are compiled and well optimized. .NET/C# is far behind
> For productivity, .NET wins.
I would definitely put Delphi 1st, .NET just a little behind (ok, I wouldn't go for holly war if you really wanted the other way, it's again a matter of taste). C++ is far far far away.
So, to summarize
- C++ is off for everything except low-level / cross-platform
- I would add there that for cross-platform but high level, Java is the choice, even if it hurts me to tell so (I hate it)
- Delphi and C#/.Net have the same target : RAD, for Windows. Delphi is a little bit more productive and much more efficient. The first advantage is lessened by the fact that there are fewer developers available (but generally the few there is are good ones, which is not always the case with popular languages). Second advantage is lessened because modern CPU can handle the overhead most of the time. For C#, we might add that it's growing and improving everyday.
The choice between those 2 is difficult. It really depends on your difficulties to find Delphi developers, and the amount of code you'll have to port
@LMB: I am a fan of Qt. I never said Qt was bad. It has improved drastically over the years. I used it in the early days too. But at one point we could not do mobile device deployment with Qt. Now they have a Windows CE target. But with every technology/IDE/framework, once you get into a project, you find bugs, issues, nuances. And you need fast support. Not getting an answer, or having a code sample available can mean days instead of hours, on simple tasks.
I am an independant software development firm. We evaluate frameworks YEARLY. In other words, every year, I sit down and look at the state of technology:
C++, Java, .NET, Perl, Ruby, Rails, Spring, Struts2, etc. etc.
Is it productive?
Is it gathering dust?
Are there 3rd party productivity add-ins?
Is there support?
Can I deploy on the platforms I need?
Can I hire developers that know it?
Oracle. What are they doing this year? Oops, they are buying more companies, so choosing Oracle still means I have to choose between Sun, JBoss, etc. They now have 4 different Java app servers.
Microsoft. What are they doing? Oops time to try WPF. CLR gets fatter and fatter. Tried a WPF framework, Telerik and other vendorrs have bugs and missing features in their WPF versions. My customers only have .NET 2.0. WinForms isn't dead yet!
So there is a big mess of worries trying to keep up. For that reason, its good to have a fully featured, proven environment to develop apps with. From all of the ones I evaluate, I keep coming back to Visual Studio 2005/2008 for my apps, and Eclipse/Java/Perl for server-side.
And we have to be honest. When is the last time you had an easy time teaching someone to master C++ enough to be productive in a business environment? It is the language of power and responsibility. Neither necessarily means you will get the project done fast.
I will also propose that the future of languages is moving into the scripting style syntax. They are more productive and expressive.
Two things can make a drastic difference in productivity, and both are about expressiveness for common idioms:
1) First class list and hash notation.
2) First class regex notation.
Does Delphi, C# or C++ have those? No. So you simply type more characters and have to remember more APIs.
The fact of the matter is, a guru level Perl or Ruby hacker will run circles around a C++/C#/Java/Pascal programmer for _getting the job done_ fast.
As to whether the program will run faster -- that is a different story. But in many cases, it doesn't matter.
I agree 120% with 8080_Diver on all points.
I haven't tried enough C#, I admit, but it's because some things I though for granted were not always there.
There are still some Delphi developers out there.
mrjoltcola:
> Borland did it right, and has been for years, except for their choice of base language.
> Pascal is the only thing that held Delphi back, in my opinion.
> History has shown that people wanted a C-like syntax.
Well, I've used C for a lot of things, it still have its use (or C++, they really are the same breed). but it's SYNTAX ???? That's the worst-yet-succeeding thing in all the computer history. A complete mystery for me why does programmers sticks with that lousy, bug-generating, unreadable garbage. History and mass decision has proven to be more wrong than right, whatever the subject and time, so I'd be prudent with that kind of argument.
Delphi has a perfect syntax (not prone to errors due to spelling or one small character misplaced), easy to learn, for anybody that can understand the OO and events principles, and easy to read, even if not written by you but a complete newcomer.
Don't take my statement to extreme. I agree, some of C's syntax is problematic.
When I say C-like, I mean in the sense of curly brackets instead of BEGIN END BEGIN END BEGIN END.
Don't believe me, ask the world? :) They voted already. People are comfortable with certain aspects of C syntax structure.
There is something to be said for code density over explicit wordiness.
>>Delphi has a perfect syntax
uh-oh. I think we have a left-winger... :)
>>not prone to errors due to spelling or one small character misplaced
Also lacking in expressiveness and flexibility.
>>easy to learn, for anybody that can understand the OO and events
Most of the worlds apps are being written by programmers that are past the learning "how to program" stage, and have moved to the productivity stage. At that point, they want expressiveness, power, flexibility, not "easy to learn" syntax.
>>C# development has been leaded by the same guy who developed Delphi.
This is just a fairy tale.
I worked with Borand Delphi 1,2 and 3 (than it was alreasy In...something). I worked with Borland Pascal before (that was v.3, 5, 5.5, 6.0, 7.0).
I mean at that time I was the biggest fun of Borland products.
I agree with all nice things you said about Delphi (especially when you compare it with C# :)), but...
We all took the direction proposed by evilrix - the GUI. I think many people work with Delphi because of the databases. You forgot that Borland is a father of such things as dBase, Interbase; it was really very easy to make an app in Delphi with an acceptable standard GUI that connects to an Oracle, SyBase server and launch the stored procedures on it.
Now I'm also a big fun of C, C++, and even GUI apps, at least for Windows, I'd prefer to make only with C or C++ and Win32 or OpenGL.
Just because a "standard acceptable GUI" is not for me. When I really need this boriing "standard GUI", or let say this rapid development, I use WTL, ATL, MFC. It is possible to make a very nice GUI application for Windows Vista or 7.
Whatever we will say here, the man who worked with delphi for years, will like only Delphi for next few years. With all my respect to Pascal, only C++ gives a real freedom. And such things as MFC, STL, Boost, ... just reduce this freedom.
mrjoltcola,
History has shown that people wanted a C-like syntax.
I think that this is only because Microsoft developed the C-like syntax and forcedit on their market. The Java syntax, while C-Like, also came from a C background and then Microsoft jumped on that band wagon, too.
The origins of C (then C++ and finally C#) caused the C programmers to use short, cryptic names for everything and then they touted those as "more efficient and easier to learn". Admittedly, Delphi tends to have more verbose names for things and to be more oriented toward "human understandable lnaguage" (e.g. IF condition THEN BEGIN . . . END ELSE BEGIN . . . END rather than IF condition { . . . } ELSE { . . . }); however, I am not sure that is a bad thing.
As for my not having spent sufficient time in C# . . . I do agree that I haven't spent enough time in C# to learn to appreciate it (although, I wonder if there _is_ sufficient time for that ;-). However, that is part of my point. I do not find the different handling of the string to int and int to string conversions to be intuitive; however, I _do_ find having similar functions (e.g. IntToStr() and StrToInt() ) to _be_ intuitive . . . at least, once you learn that there is a function for one, you can guess that there is a similar function for the other. ;-)
> For business apps, .NET wins.
Delphi is second, but some people would put it first, it's more a matter of taste.
IMHO, kind of depends on the nature of the Business Apps . . . if it is NOT a Web App, then I would tend to think that a truly compiled app would win.
> For proprietary, sensitive technology, C++ wins.
Delphi is second, .NET a bit behind
IMHO, Delphi and C++ tie for first and C# comes in a more distant 3rd.
> For memory usage, total speed C++ wins.
except for drivers and embedded systems, where C++ is unavoidable, there is little gain with C++ compared to Delphi. Both are compiled and well optimized. .NET/C# is far behind
Agreed (although, I have written low level drivers in Delphi ;-).
> For productivity, .NET wins.
I would definitely put Delphi 1st, .NET just a little behind (ok, I wouldn't go for holly war if you really wanted the other way, it's again a matter of taste). C++ is far far far away.
I think that .Net is more than "a little behind". Although, I have accumulated a couple of Hot-Key Tools (e.g. GExperts) that make my coding more productive and better than even the assistance provided by Visual Studio.
Many of the Delphi programmers that I know of who have gone over to C# were motivated bya business decision that was out of their hands. The mind-set of the 2 languages is sufficiently different that it is difficult to switch back and forth (I know because that's what I get to do ;-) and, therefore, once in the C# world, most Delphi developers that I know of who made the switch have stayed.
I have the opportunity to work with several C# developers and many (if not most) of them tend to be less rigorous in their development than most of the Delphi programmers I have worked with. Admittedly, they are also younger but they don't seem to have the design capabilities that the Delphi developers I have worked with have . . . they just want to start coding as hard and fast as they can.
> Most of the worlds apps are being written by programmers that are past the learning "how to program" stage, and have moved to the productivity stage. At that point, they want expressiveness, power, flexibility, not "easy to learn" syntax.
Actually most of the world apps are written by people that have no idea what a pointer is, or why the hell does 1.3 print as 1.299999.
>>I think that this is only because Microsoft developed the C-like syntax and forcedit on their market.
Microsoft didn't develop it. C and C++ came from the guys at AT&T Bell Labs (UNIX). It was designed as a systems programming language, and succeeded at that.
At the time, it was the best alternative.
On the contrary, I would vote that Borland itself furthered C/C++ with Turbo C++. Do you remember? It was in every university computer science department way before Microsoft came in and took over through better marketting and subsidies.
>> Delphi has a perfect syntax
I thought the same when switched from Pascal to C and next time when switched from Delphi to C++.
Now I agree with my teacher saying that Pascal just ruins the programming thinking. It is very difficult to switch the way you are thinking when you are programming.
If you remember the language was developed for the universities and schools, for studying. I'd say, the try to make commercial projects in it was a mistake.
>>Many of the Delphi programmers that I know of who have gone over to C# were motivated bya business decision that was out of their hands.
True. The business decision of continuing to write your apps in a language and framework that is mainstream and supported and not apt to be discontinued. Borland failed as a language company and sold its language stuff to Embarcadero. They canned the original JBuilder right after I paid 2,000 per license for v2007 and moved it to the Eclipse framework. So what happened? We all just stopped paying for JBuilder and moved to Eclipse anyway!
Borland was the best. Why did it go the route it did? I don't know. I am a long time Borland fan, every since I saved my money to buy my first Borland C++ compiler in my freshman year in college. I propose that Microsoft AND the open source generation both contributed to Borland's demise.
Business owners must make strategic decisions that have more involved than the fact that their programmers have been using the technology for 15 years and are comfortable with it. Programmers leave the company. Companies fail. Support costs $$. Customer's upgrade or change their OS or ask for new features. We try to stay close to the herd while not getting involved with stampedes.
Anyway, I've said my 23 cents, this has been a fun discussion. I am a fan of all languages and frameworks mentioned here, INCLUDING Delphi and Qt. I'm also a fan of programmers who have mastered their tools. I am not religious on this subject, but just passionate and opinionated. Hopefully you have enjoyed my comments as much as I have enjoyed yours. These rare passionate threads are great.
:)
>>I have the opportunity to work with several C# developers and many (if not most) of them tend to be less rigorous in their development than most of the Delphi programmers I have worked with. Admittedly, they are also younger but they don't seem to have the design capabilities that the Delphi developers I have worked with have . . . they just want to start coding as hard and fast as they can.
I think it is probably that the Delphi guys are older and wiser and have more design experience. The young kids haven't been around the block yet.
@pgnatyuk,
only C++ gives a real freedom
Actually, REAL freedom comes from Assembler! ;-)
@mrjoltcola,
I am aware of the origins of C (I also remember the attempts at A and B ;-). However, Microsoft really developed the environment for writing in C and C++ and, I believe, provided the first really viable compilers for the market place. I do remember Borland's C++-Builder and I liked it better than the MS IDE and langage. (I also remember creating a Tiny-C self-comiled compiler and using it. ;-)
At the time, it was the best alternative.
Well, at _that_ time, I was writing in assembler on a real-time, interrupt-driven system and C wasn't the best alternative. Later on, I used CBasic-80 (a _compiled_ version of BASIC for the Z80 systems) and C _still_ wasn't the best alternative. When I moved to the IBM PC/Microsfot environment, I was using Turbo Pascal and some versions of Prolog and C _still_ wasn't the best alternative. In fact, even when I had to develop a printer driver, I used Turbo Pascal and then Delphi because C _still_ didn't seem to be the best alternative. ;-)
As for my being a long time Delphi user and, therefore, just not wanting to change. Actually, when I first heard we were converting to C# and I did a little reading on it, I was kind of excited because it looked good. However, as I came to realize that it had inherited many aspects of C++ that made it less intuitive to work with and that caused it to require more lines of code to get things done, I became less enchanted with it. I have now reached the point where I can code in it if I have to but I'd rather not (sort of like I can code inCOBOL but I'd rather not ;-).
For that matter, though, if the apps are desk top and not web and you really want a bunch of programmers to be available . . . why NOT switch to COBOL? THere are some really good COBOL compilers for the WinTel environment and the same code can also be run on the IB<M Mid-Range or MainFrame boxes? ;-)
>> I'd say, the try to make commercial projects in it was a mistake.
Never had problems to sell my applications made in Delphi, and even those C# lovers can't beat the productiveness given by Delphi (and admitedly a long list of units and tools made over time, by a lot of people and myself). I love nothing more than selling a 2 weeks job as the equivalent 2 months some "cheaper" and "more common" C# developers can do in the market.
In fact, Delphi does not restrict creativity, it enforces some good habits, and as Diver said, and I agree, Delphi newcomers tends to be better faster than C++ or C# newcomers.
and definitely, BEGIN ... END is better than { .. } . I love the argument "it's quicker to type { }" , as It tells me not to bother arguing. How many mistakes have produced a single { misplaced yet unseen or missing, and how many man*years of work lost since C has been invented ? That's just an example of the better productivity provided by C language and all descendant : C++, C# and Java. IMO, All crap for those same little so-called features.
Again I'm siding with Diver point of view. There have always been people trying to convince the rest of the world that C, C++ and now C# is the best. Main argument for the two last ones being that it was close to the former, but it never quite worked for me as a pro argument.
I'm reassured now, there will ever be at least 2 Pascal/Delphi lovers/users in the world, whatever happens to CodeGear (say, if it's bought by Microsoft - God forbid !)
I hope Delphi lives forever. It is a gem.
But if you think I've been trying to convince that C, C++ or C# is better for everything, you missed most of my points.
No one is better than the other, in most cases. There are pros and cons. Some of the pros and cons have nothing to do with the language syntax and all to do with the company or marketting force behind it and the qualityand strength of support, communities and 3rd party SDKs.
When deciding which is "better" you must first qualify what your requirements are. We are not discussing OS kernel development or device drivers or hardware assisted encryption, or I would be recommending C++. I assume the asker is making a business decision, regarding business apps.
I think you will see that both evilrix and I started out by cautioning _against_ C++ for GUI / business app development, and we are both strong C++ advocates, otherwise.
we cannot convince anyone in anything.
We all have very different tasks, have different expirience, ... and this is good.
The language does not matter. We receive a task and we choose the tools. For one task the best choice is Delphi, for another task it is assembler. The decision about the tools in many cases comes from the marketing people, from he management.
Once, about 8 years ago, I had to work on a Venture - you are happy to not know what is this. I remember Power Builder - compare to Ventura it is a great thing.
Woa, do you people have any clue how long it takes to read this whole question ?
I'm a long (long) time delphi developper and got a few courses in C++ and C#
The longer you develop in a certain language, the more experience you have
Usually you will have built a vast library of functions/procedures for all sorts of tasks
Depending on the tasks you are given and if the new task is similar to one that can use stuff of your library,
the faster the new project will run.
The basic problem when changing languages is that you just don't have this library yet.
You need to build it again, or gather it from all over.
We have a few teams for each type of job.
Delphi for fast production/machining/monit
VB.Net or C# for anything website.
But i think with Embarcadero Delphi is getting a boost again.
You should see more developers pop again soon.
Providing they start giving courses again. Because that's a current problem too.
Not many courses given = not many developers around.
But for your future, learn C++ or C# by all means.
It's just one other extra way of doing the job.
Since you are a program manager/business owner, you have to decide whether you are going to develop code for native execution on Win32/Win64 systems or 'managed' code in the .Net framework.
Are your Delphi applications currently running as Win32 or .Net?
Recommendations will depend on your answer to that question.
================
In the .Net environment, you can hire any .Net capable developer in any of the languages. Once a unit is compiled, you can render it back into the .Net language source code of your developer's choosing.
My opinion is that Delphi is still supreme, and I've indulged in C++ and C#.
You're having trouble finding developers? That's your flaw. Any programmer can use Delphi, no experience necessary to be productive and use Google to search for answers from more experienced developers. But hey, if you don't mind being hostage to Microsoft, by all means jump on the band wagon. The more the merrier and safety in numbers, right...
@samenglish: try to build an application for a WM device, a radio modem, barcode reader in Delphi. :)
You are talking only about the personal computers. Even there, make a fastest code you can that reads a trivial huge structured binary file in Delphi, then make the same in C and compare the speed. And of course you know a million examples like it.
When the time, memory and CPU loading are not important, when we talk only about a fast development of a pc application, when...., so it can be the best choice to use Delphi.
You know when in Delphi you will spend more time for a project? When you will need to make a network connector like ICQ has. If you will start a video game in Delphi.... I'll say you really know Delphi. :)
> If you will start a video game in Delphi
oh, with DelphiX, the mix Delphi + DirectX is great for games. Ok, maybe not the big ones that need huge 3D/Physics engines and a team of 100 to get something for masses, but most probably it's because the interfaces to the famous engines have not been wrapped conveniently yet, and again the curious fact that Delphi is viewed as not qualified for these tasks. I've made a few myself (strategy board games) with decent interface and (2D) graphics in no time, thanks to RAD and DirectX.
Business Accounts
Answer for Membership
by: evilrixPosted on 2009-10-28 at 09:18:17ID: 25684928
If you are using Delphi I presume your application has a rich GUI? C++ isn't really the best language for this. Although there are plenty of frameworks if you are just targeting Windows and you want a rich GUI app with Rapid Application Development you are probably better off looking at C# as an alternative to Delphi.
C++ is more about writing lower-level, often cross-platform solutions that demand speed and low resources.