views:

317

answers:

5

It has been a few years since I did any development for PCs (I usually do embedded software).

At that time I was highly proficient with (Borland, now CodeGear) C++ Builder. Time has moved on, C++ Builder has become extremely expensive and there are alternatives (MSVC stufio, NetBeans, QtCreator, maybe even Eclipse with the right plugins). Others?

Three things concern me (in no particular order), ease of use, additional GUI components and cross-platformness.

Ease of use - I want an IDE which helps, not hinders me. Good debugger, refactoring, jump to variable declaration, usage, that sort of thing ..

GUI components - when using C++ Builder I was impressed by how easy it was to develop additional VCL components and how many were available, often for free. Thus if I wanted a standard string grid where the cells also could contain pictures, checkboxes, etc, I could probably find one, or roll my own.

I am not sure what the current state of play is with respect to add-on components. Do other systems have anything like http://www.tmssoftware.com/site/ ?

Cross-platform - I personally use Linux for everything, but realistically, the majority of my users have Windows installations. So, cross-platform is "nice to have", "all other things being equal".

Now I have to pick a solution and stick with it for the next few years. Which one, given my points above (cost plays a role, but is not make/break)?

Thanks in advance for your help.

+5  A: 

I have used both C++ Builder and Visual Studio. Over the years I have always preferred C++ Builder over V.S. Builder and VCL just feels much better designed than Microsoft's products. (Even the Borland library source code just looks cleaner than anything that comes out of Microsoft).

The integrated debugger in Builder is truely integrated and quite intuitive to use.

I find Builder compiles much faster than Visual Studio. Builder 5 had a problem that made it unnecessarily slow, but at the time it was still faster than VC++ and the latest Builder versions have faster compile times. Accellerators such as TwineCompile make Builder even faster.

I've never tried to create custom C++ controls for Visual Studio, but it is fairly easy to do in Builder.

Last year, CodeGear released a free version of TurboExplorer (I haven't used it myself) which includes the IDE and RAD (although limited) http://www.turboexplorer.com/ TurboExplorer can be used for commercial apps.

I have not been happy with Java based IDE's where are always slow. I.e. SunStudio12 which is good (and free) but the UI is slow response. I use Code:Blocks on Linux which has reasonable usability, but haven't done any RAD work with it.

Roger Nelson
Thanks, Roger. That is valuable feedback
Mawg
+4  A: 

I never used C++ Builder but used to be a big fan/user of delphi. I normally work on server apps in c++, with some java. Reciently I started writing some small productivity apps for myself originally I used java, but then moved to Qt.

Now I love it. The library feels well designed just like vcl did in delphi. The signals/slots mechanism is great, I am still surprised how often I don't have to write code to wire up a dialog box. Using qt is easy and the code you write is very easy to read and create. I haven't yet had to write my own widgets, I think qt's model/view architecture splits the roles very well making the stock widgets very powerful. For example when using a QTableView most display and editing functions can be provided by the ItemModel, more powerful control is provided by an ItemDelegate. I have found these easier to reuse than writing custom widgets although it seems easy enough from looking at the documentation.

Qt creator is basic but does 95% of what I require, integrated project, gui designer, code, debug and help. Has support for CMake as well as qmake. It doesn't have advanced features like refactoring, but the intelli sense better than VS2005. However the next version of KDevelop looks very promising and will include these. You could also use eclipse if you wanted these features, or move between eclipse and qt creator as required. But I am very happy with qt creator.

On the cross platform issue, I develop my apps on Linux at home and tend to use them on windows in work. So far everything that works on linux works just work windows and looks like it was written for it too.

iain
+1  A: 

The strength of C++ Builder (and also Delphi) is the VCL GUI framework, it is easy to work with, and delivers true RAD development. There are a lot of alternatives to VCL which all have their strengths and weaknesses. The strength of VCL is the close ties with C++Builder/Delphi which makes it work very well with that combination. The downside is that it is propitiatory software, which means that you are unlikely to port your code to other IDE's or platforms without official support from Codegear/Embarcadero.

There is however some free alternatives out there, one of the more interesting being the Lazarus IDE. The Lazarus IDE is an IDE for the Free Pascal language, this is very similar to that of Delphi, I must admit that I am not a Delphi guy myself, so I am unable to go into too much detail about this. Lazarus have a GUI framework much like VCL called LCL. From the brief looks I've had on it, it looks very similar. There are several good things about the Lazarus/Freepascal package especially for your case. It is free, it can compile and build for both windows, linux, and mac, it has 64 bit support. Further more the compiler seems more modern than the Delphi one.

Lazarus running on Windows 7

Lazarus running on Linux (GTK2)

Lazarus running on Mac OSX

More screenshots can be found here: http://wiki.lazarus.freepascal.org/Screenshots

The problem with Delphi/C++Builder is that the VCL is not currently crossplatform capable. Although this is planned for future versions (as far as I recall) it is not yet implemented. Having noted that, there are some considerations as to whether the C++Builder will continue to be maintained or not, in here there is some comments on this: here.

Qt has been mentioned and it is indeed a very strong GUI framework and the Qt creator is a fine tool, personally though I like to have a very close bond between the IDE and the GUI framework like it is the case with the VCL, but that is very dependent on the developer.

Edit: Just a thought I had, when comparing C++Builder to other RAD IDE's it is easy to include IDE's for the .NET languages and Java. These use languages created for this purpose. C++ used in C++ Builder does, although in Borlands version slightly modified, not. This does raise an interesting question, is using C++ for RAD applications necessary and justifiable? Why not use a tool (language) that is written for the purpose. I am aware that C++ Builder is written for RAD development, but the language behind it was not designed for this purpose. If your need is truly rapidly developed applications, I would consider looking for other languages, but if you dependent on C++ for whatever reason, could be 3rd party libraries etc. Then C++ Builder is in the C++ world an excellent RAD development platform.

TommyA
Tahnks for a full and comprehansive reply. Just for the record C++Builder actually was soemwhat cross-platform when there was a prduct called Kylix for Linux (sorry, Mac users). This was free for non-commercial use and you can probably pick up a copy somewhere. It used VCL components.
Mawg
It is true mawg, that Kylix was build to be a cross platform development tool. But it did not use the VCL for Linux, instead it used CLX (I think that was the name) which is very similar to VCL.
TommyA
+1  A: 

Short answer is NetBeans. It is cross platform, it is easy to use, although it is made-in-java but still it is fast.

PS: If you also do or intend-to-do programming in java, it will be convenient to use/learn this one IDE for both.

Asim Ghaffar
It looks good, but how about 3rd or roll-your-own part compnents?
Mawg
A: 

You can also use wxForms for C++ Builder and use wxWidgets to create cross platform applications. It works with the existing C++Builder IDE and make use of the same form designer.

TwinForms