views:

4455

answers:

13

I've decided I want to get more into native code development with C++. I'm trying to decide if I would be better served using CodeGear C++ Builder 2009 or Visual Studio 2008. I currently use Delphi 2007, so I'm very comfortable with C++ Builder's IDE (its the same as Delphi), as well as the VCL and RTL.

I've never been a big fan of MFC (from the first time I played around with it in the VS 6.0 days), but haven't taken a close look at it since then.

I'm interested in hearing from some experts that have experience with both IDE's, whether they are the most recent versions or not.

Right now, I'm leaning towards C++ Builder because I believe the VCL is much more robust and easier to work with than MFC --- but as I said, it's been a while since I've used MFC. I'm not interested in building programs that rely on the .NET Framework because I'm partly teaching myself native development. Is MFC still king for Windows C++? Or is WTL or ATL the big thing?

Any C++ gurus out there want to share their opinions?

EDIT: I understand MFC is not the only gui toolkit for Visual Studio. However, I'm looking for some recommendations based on GUI toolkit + IDE. For C++ Builder, there is only 1 real option, which is C++ Builder + the VCL. For VS 2008, it's VS + MFC/ATL/WTL/QT....confusing for me since I don't know much about them.

+11  A: 

Visual Studio and MFC are not the same. I use Studio all the time and I avoid MFC like the plague. You can use WTL, ATL, Win32 or any number of libraries to create apps without MFC.

ctacke
If you aren't using MFC, then which other GUI libraries do you prefer?
Mick
+1 for WTL. It's not official supported but one of the best GUI lib's I've ever worked with (third after VCL, second after TurboVision)
Nils Pipenbrinck
Typically WTL (though I'd use straight Win32 or roll my own before choosing MFC myself)
ctacke
+10  A: 

Coming from Delphi, you'll find the VCL straightforward to use with C++ Builder. There are a few oddities, like C++ doesn't hide the fact that TObjects are all really pointers (which Delphi hides from you), and some things like array properties are accessed differently.

Two or three years back, I was looking for any way out of C++Builder, but now, with recent releases (and Embarcadero's purchase of Codegear), I'm happy with the product and the direction.

You'll find the number of string types and the assorted potential incompatibilities quite painful with C++Builder, but you'll get used to it! (std::string, char[], wchar_t[], TCHAR, AnsiString, WideString, UnicodeString and String to name a few)

Personally I'd vote for C++ Builder - because of two-way RAD and the VCL, although it may not be the best way of learning modern C++ idioms.

Roddy
+2  A: 

I second going for C++ Builder, given that you already know Delphi. MFC has not changed much since the VS6 days, so code written using MFC still looks like shit. However, VS has changed and is now quite a good IDE.

Also, keep in mind that C++ Builder is not stable as a product line. There have times in the past where it was not maintained/its future was not clear etc. So you're taking a chance if you want to build something that lasts.

+7  A: 

The simple answer is that for pure C++ development it has to be VC++.

To expand: as a pure C++ development environment you simply cannot beat VC++, the debugger is better, the IDE is superior (all IMHO, of course). I've used it to develop libraries that I then use from C++Builder because of these reasons.

However once you start into UI development, or anything that you can solve using the VCL or components C++B is the better choice. Compared to the VCL, MFC or ATL are horrible by comparison, and so that leaves you to use .NET, which is probably a better option, but not

I'm not sure that I'd recommend building a new product using C++B or Delphi based on the last few years of 'direction' from the vendors. However that appears to be changing for the better, but until a little more time has passed it is hard to tell how the promises translate into reality.

Richard Harrison
Do you mean the free version (Visual Studio Express) too? I found it too limited.
quant_dev
+1  A: 

When it comes to windows development nothing really tops Visual Studio. It is very feature rich and has an excellent debugger, not to mention the vast community of users to help you with any problems you may encounter. If a company's development tools for their own operating system weren't the best for it, I'd fear their status in the software world. But if you don't need the extra features and absolutely need a RAD tool with drag & drop (besides MFC) C++ builder isn't too far behind. Using the delphi environment prior is just an advantage for you.

John T
+4  A: 

I haven't used C++ Builder for years but on the topic of C++ debugging, Visual Studio 2008 is way out in front of other IDEs and previous VS especially if you use STL containers as it makes it very easy to inspect their content.

However, on the GUI side, C++ is now very much a second-class language for Microsoft. The way of the future is WPF and C++ is not supported as a XAML-friendly language: We will continue investing in C++/CLI to enable developers to expose native C++ assets to the managed world and vice versa. We believe that pure .NET development is done best using a .NET focused language such as C# or VB. Investing in C++/CLI will be mainly in the native-managed interop areas.

So, to create a modern-looking C++ GUI, your best option may indeed be VCL - if VCL continues to make such possible ;-)

Andy Dent
+2  A: 

Just for the hell of it, can we throw in eclipse to the mix as well?
I just found working in eclipse to be better than working in visual studio.

Unless you are using VS2008 with winforms, the gui support is through windows templates (typically from resources) which is old hat and you probably don't want to use. So the gui support in VS2008 isn't that special.

As for gui toolkit, perhaps see What is a good GUI/widgets toolkit

Greg Domjan
A: 

The one thing about last C++ Builder by CodeGear - I mean 2009 version - is that its updates can really make you hate this IDE.
After having installed the 2nd update, I found out that if/else block DOESNOT WORK PROPERLY. It can enter IF statement but cannot enter else one - and it doesnot depend on the situation - this language instruction simply stopped work at all. The time it took me to figure it out was about two or three hours - and I started to develop the needed win32 app in VS, I consider it is more reliable than the CodeGear product. The 2nd feature I dislike that you can`t switch off Unicode support and have to use ANSI versions of win32 functions EXPLICITLY (e.g. SendMessageA(...)) which is very boring. I barely meet the deadline to finish the job using VS2008.
It s just my experience, the choice to make is yours

chester89
Do you have a QC report number for the if/else problem?
Roddy
Also, if you set the option for "TCHAR = char", then you'll get the ANSI win32 calls. set it to "wchar_t" for Wide Win32 calls.
Roddy
+4  A: 

If you're doing pure C++ development on Windows then it's hard to beat VS. The compiler is fast, quite standards-conforming and produces well optimised code. The debugger is the best on any platform. The IDE is OK.

It's also clearly the most widely-supported compiler toolchain on Windows. Download any open-source project/library and, if Windows is supported, it's likely to have been built and tested using VS. Its popularity also ensures that it's the most useful to have on a resume.

What does Builder give you? A reasonable GUI library. Well, that's good but there are many other decent GUI toolkits out there (wxWidgets, GTK, Qt etc). Many are open source and cross-platform.

However, these days I find it better to restructure my applications to provide an API and then build the GUI on top of it in a different language. C++'s strength is not in GUI development. At least not today...

I'd choose - and recommend - VS over Builder.

MattyT
+2  A: 

Well, you can use Eclipse + MinGW + Qt4 + QT Eclipse Integration and you get all of the stuff: debugger, visual GUI designer, etc.

Mind that Qt4 is dual licensed: Open Source and commercial license.

Also you can combine Qt4 with Visual Studio (even with Express) and use all goodnes VS gives you.

For me Qt4 is the way to go and VS over Builder.

Marcin Gil
+1  A: 

I loved C++ Builder a couple of years ago. It was fantastic. It was a way better with its VCL than VS with its crappy MFC. Then things have been changing with every year.

Builder has been going down; 1. Builder hasn't been updated with any real functionality. 2. Borland abandoned the idea of rewriting VCL in C++ for use with Kylix and Builder 3. CodeGear mess and uncertain future of Builder put many people off the product.

VS has been getting better; 1. IDE has been improved a lot 2. Compiler from the least standard-compliant one on windows platform became the most standard-compliant (not counting GCC on MinGW of course) 3. .NET emerged and there was Managed C++ and then C++/CLI to make it possible to use this framework from within C++

We got new, strong players 1. Eclipse 2. Qt Creator

and new GUI toolkits

  1. wxWidgets
  2. Qt4 now has also open source license

To summarize; Builder is dead because Borland

  1. was thinking Delphi is so wonderful they don't really need anything else to earn money
  2. has fallen into Java hype and invested too much resources in it
  3. didn't understand great power of C++ and instead stack to pascal, which has always been academic language with no real products created with it
Piotr Dobrogost
Qt doesn't have true native ports like wxWidgets does. What we mean by this is that even though Qt draws them quite realistically, Qt draws its own widgets on each platform. (http://wiki.wxwidgets.org/WxWidgets_Compared_To_Other_Toolkits#Qt)
Mick
"1. Builder hasn't been updated with any real functionality" That was true in 2004, when it looked like Borland would ditch C++Builder and go with C++BuilderX instead. Many things have happened since (C++Builder 2006, 2007, 2009).
Moritz Beutel
A: 

can you advice a book about MFC (beginner i think). thanks.

Mishgun_
+1  A: 

C++ Builder is far superior than MS-VS when it comes to UI based development and Database oriented application. MFC sucks!! However VS has better debugging capabilities.

Sharad