I'd be interested to hear your views on which IDE is best for developing in C++ - Eclipse orMS Visual Studio. What are the positives of each and what are the negatives? Many thanks
Mairi

I use neither! I use Gedit for C programming and Kdevelop for C++....Why? IMHO, Kdevelop is the best/simplest IDE out there. Plus I really appreciate Kdevelop's code completion algorithm.

I've used both. I had to use Eclipse for a class that I took, but I use VS otherwise.

The compiler Eclipse uses seems a little more "strict" than the MS compiler, but I don't really like the layout of Eclipse. IMO VS's layout is more intuitive and useful. I also have, and occasionally use, Code::Blocks but I have similar arguments about it.

I haven't really used the RAD functions of any of them, I currently only do console applications. Perhaps there are differences there that make a big difference.

On MS-Windows I use either VC++ 2010 Express or Code::Blocks. On *nix (rarely) I use Code::Blocks. Never had a reason to use Eclipse. In the early years of programming (1980s and 1990s) I used a text editor, something like Notepad or VI and compiled everything from the command line using eiher batch file or makefile. That was before IDEs became so good.

I think it depends on your level of skill and what kind of projects you do. I can only give you my perspective on the ones that I am familiar with:

Eclipse: I had to use it for a class (in Java) and have used the C++ version a little bit too. I think it is too simplistic, which is probably good for a beginner and that's probably why profs often suggest it. It is poorly integrated with external build systems, it is too intrusive, it's code completion sucks, it is poorly integrated to GUI programming, but it's free!

VC++: It's not cheap (unless your company uses it or you have some student discount, like MS e-academy). It is certainly very complete but also quite complex. I was surprised at how poorly integrated it is with build systems (but maybe I just don't know enough about VC++, I just know I had trouble with this). In VC++ 2008, the code completion is really slow and often useless, but I think it is better in 2010, which I haven't used much. Apparently the code refactoring utilities are really good too in the 2010 edition (I don't think the Express edition has it though). I think the main problem with VC++ and many other MS products is that it is very heavy weight (basically, a Code Blocks install is less than 100 MB, while MSVS is like 6 GB or something ridiculous like that). I also despise the rigid integration with all other MS products, like many programmers, I don't like the bizarro world of Microsoft's crazy products and heavy platforms (.NET, C++/CLI, F#, SilverLight, etc.) it's like, every year, they come up with 5 new massive software platforms with no obvious benefit or use and requires heavy installations and add-ons to Visual Studio. Since I'm a cross-platform programmer (like many in this growing trend), this is all useless to me.. just wasted GBs on my hard-drive.

Code Blocks: I haven't really used it much, but I hear a lot of good stuff about it. It is light weight and cross-platform. As far as I know, the code completion is sub-par though and it offers no integration to GUI programming. I imagine that the integration to build system is decent.

KDevelop: I use this IDE all the time. I love it. Code completion is great. Integration with build systems is good (not perfect though, but better than most). Integration with GDB, Valgrind, SVN, GIT, CVS, etc. is all great too. It's even integrated with Qt Designer for GUI applications. It doesn't have code refactoring though, and it is only for Linux, but it's free and actively developed by an open-source community.

QtCreator / Designer: I haven't used this one too much, but, again, many people seem to use QtCreator for all their C++ programming (even not GUI related code). It's cross-platform, free, and pretty easy to use for Rapid Application Development (RAD).

Borland C++Builder: As a legacy, I have to mention that I have programmed for many years for windows using Borland products. When it comes to RAD, nothing beats the Visual Component Library (VCL) that C++Builder offers. The compiler is also very fast compared to other compilers (at that time.. not so much anymore). Of course, it is no longer being developed, so it is outdated and cannot be compared to its latest competitors. It is now being developed under CodeGear RAD Studio (or something like that), which I haven't used, and it is probably still a very nice IDE.

I have use Code::Blocks for a long time (code completion was close to absent in the old version, but improved greatly in the latest. If you stick to nightly builds it's even better).

I still use C::B if I have to develop on Linux, but for Windows I switched to VS. I get it for free from my uni so cost was not a consideration.

I develop drivers for Windows as well, it was easier to get the WDK build environment to work with VS than it was with C::B. Also, together with the Visual Assist X plugin all the code completion and colouring is great.
Beside that, there is a nice VS plugin that allows you to debug a VM from within the IDE, it even deploys the driver for me automatically.

I used KDevelop on Linux a long time ago, and did not like it but that is probably because I put no effort in trying to understand it, so ignore that opinion.


In any case... if you're starting out just try some IDE's and see which one _you_ like, in the end that is all that matters.

(Edit: okok not if you work at a company, so they force the environment on you... judged by your question that is not the case ;))

Thanks to everyone for their interesting comments - very useful and comprehensive.

I know a number of you have at least tried a number of different IDEs in the past but have you ever used more than one IDE on a specific project, say to give you code quality benefits?

I think the burden of multiple IDE's is (hardly) ever worth it. It already annoying to keep build settings synchronized between Debug and Release build (I always forget to set important options in the 'All configurations' tab).

And with the current state of IDE's(don't forget about plugins/extensions for those IDE's!) I think it is hardly necessary

I know for java (i haven't used it alot for c++) that you can get emulators for blackberry and things like that in Eclipse

Thanks to everyone for their interesting comments - very useful and comprehensive.

I know a number of you have at least tried a number of different IDEs in the past but have you ever used more than one IDE on a specific project, say to give you code quality benefits?

It's pretty difficult to use more than one IDE on a project. The major reason being that each one has its own version of a "project system" and none of them are compatible. You basically have to completely rebuild your project settings and configuration if you want to change IDEs.

I know of at least one library that has command-line make files which support multiple compilers on both MS-Windows and *nix. The authors of such libraries created a makefile for each compiler they decided to support. Its quite a task to keep all those make files synchronized.

>>each one has its own version of a "project system"
This is why I emphasized the importance of IDEs being well integrated to build systems. Personally, I use cmake to manage the builds (release, debug, and all the configurations). By using a build system that is independent of the IDE, you get the benefit of not having to tweak the configurations for each IDE and/or OS you are building your project on. There are other build systems besides cmake that are either for one platform or cross-platform, but I find that cmake is the easiest to use. When using an IDE, you can (if the IDE integrates cmake) import the cmake configuration and have the IDE rely on that system instead of its own "project system", this makes it a lot easier to use multiple IDEs and to program for different platforms.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.