Fog Creek Software
Discussion Board




Quality C++ IDE

I've been a Java developer for the past two years, out of necessity (that's where the money's been).  Now, however, I'm determined to get back to coding in C++ full-time (or, as close as possible!).

My problem though, is that I've been spoiled.  I found IntelliJ, and my productivity in Java jumped by at least 50%.  It "just worked", and I benefitted greatly.

Now, however, after a cursory look at the state of C++ development environments, I'm near horrified.  MSVC++ is obviously the standard on that platform, and it has good code-completion, but I've always been uncomfortable working in it.  Project Builder on OS X has a lot of nice features (the 'build and go' functionality is amazing, or so I've been told), but no code-completion, no refactoring.

So, any suggestions?  Essentially, I'd like to have IntelliJ for C++, with all of the great code-completion, refactoring, symbol lookup features that it provides.  Wish, and ye shall recieve? :-)

tool wimp ;)
Friday, March 26, 2004

might have to wait for whidbey

apw
Friday, March 26, 2004

Might we know why you have decided to go back to C++ at a time when others are moving to java and C# from C/C++? :-P

Seun Osewa (afriguru.com)
Friday, March 26, 2004

I write applications and do consulting to groups that are decidedly cross-platform: there is a pretty even mix of Windows and OS X boxes these days, with a smattering of linux as well.  C# is therefore useless to me, and I've lost most of my previous hope that Java would become useful for production-quality graphical applications.

C++ is, therefore, my last resort (and an old friend that I miss :-)

tool wimp ;)
Friday, March 26, 2004

Borland C++ Builder

Visual Studio .NET also has C++ development, for both .NET and Win32 platform

MX
Friday, March 26, 2004

Borland C++ Builder 6.0 is excellent.

Oxana Seglova
Friday, March 26, 2004

... but no longer supported.

Frederik Slijkerman
Friday, March 26, 2004

Try Eclipse with the CDT plugin:

http://www.eclipse.org/cdt/

Giovanni Corriga
Friday, March 26, 2004

Yes, the latest version is called something like C++ Builder X, or something. :)

And IT IS supported.

MX
Friday, March 26, 2004

> ... but no longer supported.
Meaning?? I write almost all Windows application in it!

Oxana Seglova
Friday, March 26, 2004

I heard that an upcoming version of IntelliJ will support C#. IntelliC#? :-)

runtime
Friday, March 26, 2004

>Project Builder on OS X has a lot of nice features (the 'build >and go' functionality is amazing, or so I've been told), but no >code-completion, no refactoring.

Apple's XCode (requires 10.3) has code-completion.  Maybe you could give that a look?

John Volk
Friday, March 26, 2004

Ah, someone just mentioned Visual Slickedit -- that would be ideal, if they had an OS X version.  I'll have to check that out.

It was also my impression that Borland was going all C# with their C tools.  I'll check them out again.

tool wimp ;)
Friday, March 26, 2004

I would recommend "ed" under Linux. It's very fast.

?

Jimmy Jo-jo
Friday, March 26, 2004

I must be a Luddite, I keep finding myself going back to emacs, although for Windows only work, I would (and do) use the VC.net IDE.  It finally has most of the features that I need.

It is an interesting time to get back into C++.  There is a lot going on with boost http://www.boost.org, and it seems for better or worse there is a push to add garbage collection to the standard language. 

The freak accident that the template language happens to be turing complete, has lead some to use it as a language construction platform.  For an example of this, check out the http://www.boost.org/libs/lambda/doc/ library or spirit http://spirit.sourceforge.net/

I'm up in the air about all this.  My feeling right now is that while this is a neat from a academic standpoint, in production it is a nightmare.  Compilier errors are impossible to read, syntax becomes inconsistent (again look at spirit), and compile times go through the roof.  I personally haven't seen the claimed productivity boost. 

christopher baus (www.baus.net)
Friday, March 26, 2004

I suppose I'll have to explain to many people over the next months my motivations for going back to C++. :-)

The cross-platform angle is the key.  I'd still be going full-bore with Java if it had resolved its UI issues, or if I had any confidence that it would do so satisfactorally in the near future (hopefully along with its absurd desktop deployment options, and a horde of platform-specific gotchas).  C# is certainly better for windows-only development, but that's not where what my clients want (yeah, I know about mono....no, I don't want to base my livelihood on it).

Sorry, don't want to start a religious thing here (I'm still going to be using Java for web stuff for the foreseeable future).  I just hope I can find a way to not take too much of a productivity hit in the transistion, and a great set of tools will help.

tool wimp ;)
Friday, March 26, 2004

I'm a head developer at a medium sized CTI software company.
My boss walks in one day and asks for "An IP PBX using the SIP protocol", that was the spec.
One of the first jobs was to write a SIP parser stack, the first attempt was hand coded, brittle, and hard to understand.
Obvously this was not going to fly, enter spirit (the boost parser library), hundreds of lines of code colapsed into just a few lines, it was  fantastic!, hand parsing code is a thing of the past.
As the project developed, we used more and more of boost (lambda, file system, regex, mpl, date time, auto pointers), devleopers were activley encouraged to learn boost.

Sure compile times get large, but customers do not care about that.
But what they do care about is getting a rock solid, fast system.
Boost allows the code base to be very tight and consise.
The "new" C++ is a very powerful tool, Joels comments about 3 different string classes, and useless Meyers books just go to show how out of touch he is.

Just my 2c.....

Craig
Friday, March 26, 2004

I think Joel was referring to how Microsoft has changed the way they handle strings in their own API's, not how they're handled in C++ proper.

tool wimp ;)
Friday, March 26, 2004

True, string handling in Microsoft APIs (COM arrgghh!!) is shite.

Craig
Friday, March 26, 2004

Going to go out on a limb here...

What about Python?  Between Tkinter and wxPython, you have cross-platform GUI abilities.  Between (WinPy|PyWin) and IDLE you have GUI IDE's, and I'm fairly sure either IDLE or some wxPython IDE will run on OS X.  It's as fast as Java, as object oriented as Java or C++, and it'll run on just about any platform that has a GUI (even some Nokia phones).

Mind, I'm not trying to insult C++ or Java, and I am a Python neophyte.  However, from the things I've read and the tinkering I've done, Python sounds like what you need.

On the other hand, vi is my favorite IDE for *nix and Notepad for Windows.  *ducks*

Andrew Burton
Friday, March 26, 2004

Andrew:

Whew, that'd be quite a jump.  I've long been intrigued by Python, but it's definitely qualifies for 'fringe' status (i.e. it's all open-source at this point, which is nice if you want to be on the bleeding edge, but generally not so great if you want to build and deploy commercial-quality desktop apps).  Not to mention the fact that I've only tinkered with Python, and it'd take me 6 mos. to a year of real work to get myself to the point of being confident about my abilities.  C++ is, as I've said, an old friend.

What GUI toolkit I use is a completely different question.  wxWindows is a candidate, as is Qt, as is *maybe* designing the apps such that the UI's are done in Cocoa for OS X and VB on Windows, with core shared libraries/DLL's holding the main application magic.  I'll take that leap when I need to.

tool wimp ;)
Friday, March 26, 2004

I'm still not convinced that the lambda library is a good idea.  It bothers me that I can't read syntax of a language I've been using for 10 years without doing 2 days of work to understand a library like lambda.

christopher baus (www.baus.net)
Friday, March 26, 2004

Is not the lambda syntax simpler that conventional C++ functors?
std::list<std::string> l;
std::find_if(l.begin(), l.end(), _1 == "Blah"), seems very consise to me.

Craig
Friday, March 26, 2004

So, as far as I can tell, the major IDE's out there that may interest you are Microsoft's Visual C++, Borland's C++ Builder, and Metrowerks' Codewarrior.  I am sure there are many others, but these appear to be the major IDE's.

Visual C++ seems to be used the most to develop commercial applications, perhaps because it has the most tools, and because people tend to like the interface.  I do not know how the whole .NET thing fits into this.  Anyone care to elucidate?  What's different between Visual Studio 6.0 and Visual Studio .NET?

C++ Builder seems to be the easiest IDE to learn and become comfortable with, although it is not as flexible as the Visual C++ environment.  It sounds like this is the best choice for the hobbiest, though it can be used to make professional level applications.  Does anyone have any idea how stable Borland is as a company?  If one gets comfortable with this IDE and then Borland disappears, how hard would it be to transfer one's skills to one of the other environments?

Finally, Codewarrior seems to be developing quickly, but still lags behind the other two on Windows.  It would probaly be a good choice if you want to develop for both Macintosh and PC though.

What do you all think of this synopsis?  I'm facing a similar question myself.  I have a reasonable amount of programming background, but I have done little work in making free-standing applications in Windows.  What is the best way to learn how to do this?  It seems to me that Builder may be the fastest and most satisfying way to do this while Visual Studio is probably the best choice for someone who wants to get a job programming.  I'm a mere hobbiest, so perhaps Borland is the best choice for me.  Any advice or thoughts are greatly appreciated.

Thanks!

somanyquestions
Sunday, March 28, 2004

I am the owner of my own company, and I am also a good C++ programmer. I like the language a lot, and written a lot of software in it.

However, from my experience:

- Good C++ developers are hard to find because the language is complex and unforgiving.

- Good Java, Delphi, VB developers are a lot easier to find.

This is why my company does new development in Java and Delphi, whenever I can.

There are many types of applications that can be written faster using Delphi or Java.

By writing in Dephi or Java, you get a lot of extra safety. By this, I mean I have fewer problems like:

- The developer forgot to free some objects, and the app leaks memory and Windows resources

- The developer used pointers extensively. The app now uses a complex dynamic structure with lots of pointers, and has a pointer-related bug which is extremely hard to track down and requires a very good and expensive C++ programmer.

C++ certainly has it's place, but for many apps, another language such as Python, Delphi, Java is a lot more suited for the job.

Entrepreneur
Sunday, March 28, 2004

Fair warning. Borland C++Builder 6 is a good IDE but it has many bugs and Borland does not support it any longer. Instead, they've churned out C++BuilderX which is a Java IDE without support for the VCL library that made prior versions of C++Builder so attractive. Users have been complaining all over the place and Borland has not made any statement at all since over six months. I will never buy another Borland C++ product again.

Frederik Slijkerman
Monday, March 29, 2004

Tool Wimp: have you ever heard of JGoodies? It'a a set of libraries used to develop desktop Java apps with an outstanding result.

Give it a try, it certainly changed my mind about stand-alone Java applications.

http://www.jgoodies.com

RP
Monday, March 29, 2004

> What's different between Visual Studio 6.0 and Visual Studio .NET?

Visual Studio .Net has support for writing .Net applications in Managed C++.  However, it does not force you to write .Net apps, you can still write plain old C++ apps, Win32 apps, or MFC apps.  And the C++ compiler is more standard conformant than ever.  I think the latest VC.Net is now one of the most standards conformant compilers for C++ available, and with good optimization performance too.

Unfortunately, it doesn't seem that my current code in VC6 is the most standards conformant code ;) so I haven't bothered transforming any of my code over yet.

Keith Wright
Monday, March 29, 2004

Recent C++ with Boost & STL is a great language.  My day job is in Java, but I am a competent C++ programmer and see things all the time that make me wish for C++. 

However, I think that C++'s niche really is in systems level programming where performance is the primary concern.  If one is writing full-scale applications, garbage collection is pretty key.  While you can implement GC yourself with various C++ libraries, it is always possible to break out of the mould and do 'bad things.' 

I am very tempted by languages like Ocaml which have pretty good library support with some really nice advanced type inference features. 

As far as Refactoring IDE support at the level of IntellIJ or Eclipse, I really think that because of C++'s compilation model (no formal modules, includes, heavy use of the preprocessor, lots of errors resolved only at link time etc.) and because of the fact that C++ syntax is very difficult to parse... nobody seems to have actually accomplished this.  I think it's a really tough job.  C++ would be such an amazing thing to work with if refactoring on the level of IntelliJ's was possible.

Ryan Daum
Monday, April 12, 2004

Have a look at Magic C++ ( http://www.magicunix.com ), a visual remote Unix and Linux C/C++ IDE under windows. It looks just like Visual C++ and supprots for editing, compiling, debugging etc.

8route
Friday, May 28, 2004

I see , I have wasted sometimes to find an alternative to Visual Studio.NET ( it's the best ) on Windows And I found something :
- Dev C++ , which is good , but code-completion sometime not work.
- Octopod for C++ . ( seems promising , it support MinGW,Cygwin , VC6 compiler and code complete )
- VisualSlickEdit ( not testing it yet , )
Sorry I don't know about Linux IDE .
I started to think that why just VS.NET  is the only IDE you can choose on Windows , or anything else ?

Nam
Friday, June 11, 2004

Try this http://lab.msdn.microsoft.com/express/visualc/default.aspx

Anonymous
Tuesday, July 27, 2004

*  Recent Topics

*  Fog Creek Home