I own a software development company. We develop software for other companies who brand under their name/titles. And we also have a couple self branded titles in the Accounting/ERP market. Our accounting software is roughly 60% of our business and written in C++ Builder.
Those who know, realize C++ Builder has had a very rocky road in changing hands from Borland, to CodeGear, to Embarcadero and possibly a few times in between. C++ Builder has screwed us a number of times on our accounting software. The QuickReports was notoriously buggy, Their XML build description is not tightly coupled to the GUI causing builds to not work -- generally buggy interface.
Over the past 8 years we've steadily made inroads to remove our reliance on the VCL and buggy components however, some 3rd party VCL components are just not easily replaceable still. We use a GRID package from Developer Express - great product.
I'm just about at a crossroads and with the latest version of C++ Builder XE on the market I'm having a hard time justifying the price when you look at the crappy history of this product.
So I'm looking for advice or steps anyone else followed who might be in similar situation and successfully made the switch to Visual Studio.
We've slowly moved most of our application to wxWidgets except for the Developer Express tools. And we've written our own TSQL abstraction we can port as well.
Any thoughts or suggestions? Have you moved your project to Visual Studio or have you played around with the new Builder XE to find many of its previous shortcomings now gone?
Looking for "been there, done that" advice.
We upgraded from C++Builder 6 to XE a year ago. Very happy with XE. The move to UnicodeString was not too difficult. We also converted all our BDE code to BDExpress (DBX). That took a long time and lots of re-write, but was well worth it. The thing to remember is that neither is perfect. As the saying goes, The grass always looks greener on the other side of the fence. If you want development efficiency, use C++Builder and the VCL. If you want very long term security, or easily find programmers, then Visual Studio. My opinion: Keep what you like and replace what you don't. For example, keep C++Builder and replace QuickReport. BTW, if you've made a decision, please let us know.
We are in a slow move to VS2008 and wxWidgets. For every component that can be purchased for C++ Builder (Developer Express, etc) our plans are to hire someone to build that one piece or hire the component maker to build a wxWidget component for us.
C++ Builder is the best way to program visually on windows at the moment though. However, no x64bit support and no mac, linux support. Supposedly they are going to build a crossx version... how long can we wait?
Moving to wxWidgets has its advantages one of them being that you will not be bound to an IDE like C++Builder or Visual Studio. C++ Builder has had several problems, its main strength being the VCL framework, which in my oppinion is still among the best GUI frameworks around for C++. The problem ofcourse being that it requires C++ Builder, which to put it mildly does have some problems with stability and compiler performance.
However Visual Studio is not the ultimate IDE, the latest version is at best buggy, and many of the RAD tools you're given by C++ Builder simply do not exist in Visual C++ (unless you are willing to go for the .net languages).
I can perfectly well understand your wish to make your code less dependant on C++ Builder, to tell you the truth I kind of doubt it will continue to be around for long myself. However from what it sounds like in your post, most of your development really relies on rapid developed applications, and in the C++ universe C++ Builder is one of the best tools around for this particular requirement.
Personally I never really thought of C++ as the best solution for Rapid Developed Windows GUI Applications, perhaps your focus shouldn't be on finding a different IDE, but on finding a more appropriate language, I would suggest Delphi, by using Delphi you will be able to compile you're existing c++ builder projects, and even reuse your existing VCL components.
Delphi will - I trust - be around for longer than C++ Builder, either in the form of Delphi, or in the form of Lazarus (IDE for freepascal) which is even cross platform and gives support for 64 bit development.
If however a change of language is not an option, I would stick with C++ Builder for now, but not upgrading to the XE version, which I simply do not think is justified by the price tag. (Given ofcourse you already work on a relatively new version).
What @casablanca said, but you should also consider very good alternatives, if you say that you're not satisfied with the programs you're using now:
One word of warning: the Visual Studio Debugger is regarded as "as good as it gets", but you pay for it. 1-4 above are all free, and highly acclaimed products.
I've started as C++ client-side engineer for Windows. I agree with comment about that MFC is pretty bad. In several of my projects we've written our own UI engines with XML-driven templates instead of using MFC so graphic designers can play with UI without need of software engineers.
In my personal opinion C#.Net is the best for Windows UI development. IDE is great. Coding UI in C++ requires way too much effort. You can still keep pieces of C++ that require high performance.
PS. Just noticed this on wiki page for VCL. ".NET is modeled after VCL, since one of the main architects of the first Delphi versions, Anders Heijlsberg, went to Microsoft and was one of the main architects of NET there"
Most answers here mix compilers, IDE and library (and question has important subtext: how to choose environment for business/GUI applications). Question and answers mix Visual Studio languages and project types: C++ with poor support to GUI, C# with wonderful ecosystem etc... (Basic, F# etc) all under Visual Studio umbrella.
GUI libraries:
MFC is library, really quite ancient and low productive. Its low level wrapper over *.RES and WM_Envents. Probably still cannot be compiled without MS C++ (and maybe licence prohibit this)
VCL is library most important to Borland/Enbecaro philosophy and market share in one area: build GUI applications. Seems be good use portable opensurce GUI libraries, but almost all have not so good support in clickable IDE
IDE:
Personal feeling seems best answer. Agree, only producer IDE has optimal constrol over own GUI compoments. Many independent IDE is cited here, I will be short.
Compiler:
Brland C++ compiler many year was far from c++ standards (cant compile main stream c++ code like boost). I believe many goals are contradictory: coexistence with Object Pascal code or C++ standards.
To tell the true: most project from C++ Builder worlds don't require to use highly "hackers" code like boost and similar, personally I treat Borland/Embecareo C++ language as independent language partially based on C++ (partially on VCL). General this world is closed (more and more), no drivers, no compatible libraries, no modern network protocols etc.
My opinion: MS C++ compilers (in the past and now) better support standards.
I was (maybe good) Borland C++ programmer. Now I use C#/WinForms Visual Studio (sometimes, rare Java SWT or Swing) and Microsoft C++ to low volume C/C++ non-GUI projects
Final words: are You limited to C++ syntax, or can switch? I yes, switch to C#. If must be C++ and high productive GUI, pay (more and more) to Embecadero