Friday, October 22, 2010

A good IDE goes a long way

An IDE, or an Integrated Development Environment is the tool that you use to create software. A lot of the credit for the success of any development software goes to the IDE. Who would develop using Dot Net if it weren't for Visual Studio?

I primarily use two IDEs for my day to day development - Eclipse for all my WebObjects and Java work and Xcode for all my iPhone and Cocoa work. Eclipse is definitely the better of the two.

Eclipse is Open Source while Xcode is Apple's product (see, I am not biased!).

These days, an IDE does a lot more than just give you text editing capabilities. Code completion, refactoring, inline documentation, templates and more, all these make life much easier.

Code completion is one of the most important features for me and Xcode simply does a bad job. Let's say I type the first few characters of a variable or a method. Now, when I hit the key for code completion (Esc for Xcode and Control+Space for Eclipse), while Eclipse will show me a list of options, Xcode often fills the first available option which, most often is not what I want!

File organization is another area where Eclipse beats Xcode hands down. Eclipse simply mirrors the disk file system of your project folder. Xcode, on the other hand has no connection between the two. You could have all your files in one folder on the file system whereas the project could have everything organized in folders. This becomes a problem as you manually need to go and move things around when the number of files becomes large.

Of course, Apple fanbois will still swear by Xcode (as with anything that has an Apple logo on it), but I really hope Eclipse starts supporting Cocoa and Cocoa Touch! Or that Xcode 4, touted as the next best thing since the iPhone 4 lives up to its promise.


Abeer Bagul said...

Hi Kamal,

Actually, mirroring the file system on disk, as Eclipse does, is great for Java based projects since these projects entirely live inside the IDE.

But for advanced projects, esp in the embedded space, the XCode approach is much more mature.

E.g. In CDT Eclipse, the main complaint is that projects are built outside the IDE using complex makefiles, and the requirement that everything should be inside the workspace is a major pain.

In fact, only the project definition should live in the workspace, everything else can be scattered all over the file system.

Kamal D Shah said...

I had no idea that you were so tuned into software Abeer! But yes, point taken!