views:

228

answers:

4

I bought Delphi 1 when it came out - and was hooked. When BCB came out (around D3, iirc), I switched, mainly because I have used C/C++ professionally for a few decades.

I have "been away" for 7 or 8 years and am now returning. I still have BCB 6 & Delphi 7 (not to mention Kylix).

I always felt more comfortable with C++ than Pascal - purely because of work-day familiarity. But, realistically, iirc, most 3rd party VCL components are coded in Delphi/Pascal. And I think I used to have problems debugging Delphi components from BCB, but I could well remember wrongly.

Anyhoo, now I am back and intend to use VCL components / hack the code of same / debug them & code a few of my own.

Given that I am slightly more comfortable with C++, is there any compelling reason to choose Delphi over BCB, or is this just a case of how long my particular piece of string is?

+5  A: 

I think it really depends on what your goals are more than anything else.

Are you trying to market your skills ? Go C++ or, better, drop Delphi/BCB and go C# (it's cheaper and easier to market even if arguably not as efficient).

Are you writing a product you want to sell and maintain yourself ? I'd say go with what you're more comfortable with but the point is that the VCL market pretty much sees BCB as a second-class citizen. It'll be harder to maintain in the long run so it will depends on the expected life cycle of your products.

Do you just want to write for your pleasure ? Go with whatever you like best, really. Nowadays, it's often harder to learn the framework than the language so since both Delphi and BCB share the same one, you won't lose too much time investment if you change later on.

Finally, if you're starting a business and expect others to have to maintain and extend your code later on, do go with something else and pick a product where finding competent programmers isn't that hard (C#, java, PHP)

Stephane
+1 very balanced answer IMHO
Smasher
1 agreed with Smasher - this is a good answer, all things considered!
robsoft
+4  A: 

I would say use the language you are more comfortable with.

Delphi does tend to get a more attention from Embarcadero, BCB (ECB?) was seriously neglected for some years in the mid-noughties but seems to have been fully rehabilitated since the buyout a couple of years ago.

Alan Clark
So, no technical differnce? Not more diifcult to debug Pascal VCL controls to which I have the source when I am using BCB? I doubt that it works the other way. BCB can compile Pascal, but can Delphi compile C++ ?
Mawg
Of course there are technical differences, you've mentioned a couple, but when it comes down to it if I wanted to program in C++ I would use BCB and if I wanted to use Pascal I would use Delphi.
Alan Clark
+2  A: 

I'm originally a C++Builder user, but I have come to learn and love the Delphi language. I use both frequently, each in its own domain: I prefer Delphi for UI-centric code (components) or when I want to use modern language features (generics, anonymous methods, RTTI, class polymorphism), but C++Builder when I need to interface with 3rd-party C or C++ code (which happens frequently). Even when using C++Builder, I can write a part of my application in Delphi.

My suggestion would be to generally prefer Delphi for component development. You can use Delphi components in both Delphi and C++Builder; components written in C++ restrict you to C++Builder.

The newer IDEs (BDS 2006 and above) have both Delphi and C++Builder integrated. Debugging Delphi code in a C++ application now is a breeze.

However, if you already have existing components written in C++, I'd just maintain them in C++Builder. There's no reason to migrate them over to Delphi unless you want to consume them from Delphi as well.

Moritz Beutel
+2  A: 

Being a C++ developer myself I have spend great time with the C++ Builder (BCB), it is an excellent tool for rapid application development. The VCL framework has its obvious advantages, and provides a C++ developer with an excellent tool for building applications rapidly. Obviously a lot of things has happened over the last couple of years, and the competing frameworks have grown way more mature, wxWidgets and Qt to mention two are both providing a lot of what VCL provides, but does so while maintaining compiler independence.

I find this is extremely important for a few reasons:

  1. Firstly the Borland/Codegear/Embarcardero C++ compiler lacks a lot of the more modern features of many competing compilers. It is not as standard compliant as many other compilers, I can't count the number of problems I used to have compiling the boost libraries in BCB, although they seem to have fixed many of those problems.

  2. Secondly I must admit that I have a shed of doubt concerning the Embarcardero commitment to the BCB product. It is my personal belief that the BCB product is only used by a very marginal audience, and isn't bringing in enough money to keep the product properly maintained, at least compared to its Delphi relative. I fear the BCB product will cease to exist within the next 3-4 years. I must emphasize though that this is my own personal fear, and only based on guesses.

  3. The first two combined provides a worst case scenario where you are stuck with a framework where switching compiler can turn out to be impossible. The Delphi compiler however I believe will be around for much longer, given the (guessed) larger userbase, the performance of the compiled code will be close to that of the BCB but with a larger userbase the amount of support to get, will be larger, and easier to find.

Having said all that, I still like the BCB, and as mentioned by Stephane it really boils down to what you need. Since you are determined to use the VCL it will probably not be important to find a more cross compiler based framework, or perhaps you have already done those considerations.

If you like the C++ language then I'd use the BCB, if you like a language with a larger userbase, and where support is easier to find in that language I'd choose Delphi. But then again, most likely you will have bought the RAD Studio and have both compilers, then why limit your self to one language? If you already know one language switching to another language should be quite easy. Especially when the language you know is C++, and in particular when you have worked with Delphi before as well.

I like to say that you have to choose the right tool for the right job. Therefore perhaps the question shouldn't be what tool should I use, but what tool fits this particular job, if you are planning on writing high performance code utilizing lots of multithreading preferably optimized for multicore architectures, then most likely it will be neither BCB nor Delphi that you will be looking for. If you are looking for cross platform development, and you don't like the idea of Java, then perhaps the Pascal language in the shape of the Freepascal/Lazarus combination will be your best bet.

If you want to develop applications rapidly, like to utilize databases, want to have a fancy GUI window and don't really mind some code overhead, then I guess your bet on the VCL framework might be the best choice for you, and to be honest all things considered, it doesn't really matter whether it is BCB or Delphi you use in that case.

So if all other considerations boils down to a few choices where they are technically even candidates, choose the one you like the most, and feel you are most productive in.

TommyA
Re. cross-platform: it seems the next Delphi/BCB release will also target Mac/Linux (32bit). Also, I don't think BCB will go away anytime soon, esp. considering that a future 64-bit Delphi/BCB compiler may have a shared compiler back-end; at least this is suggested here: http://edn.embarcadero.com/article/39174
PhiS
@PhiS: Never take what Embarcadero say at face value: we're stioll waiting for Delphi64...
Stephane
@Stephane: Agreed on both points. x64 is long overdue. But it seems at least the cross-platform stuff is under active development, see e.g. http://blogs.embarcadero.com/eboling/
PhiS
Mawg
@mawg: to be honest I think the .net framework might have more 3rd party components, and with good help from the language it is - in my opinion - easier to develop components in, but the problem might be compatibility with existing code. Besides the VCL is a good framework so there is nothing wrong with wanting to use it.
TommyA