Tuesday, June 02, 2009

The IDE vs Editor War in the Ruby World

Ever since I switched to Ruby programming last September to develop Rails web applications, I've been fighting an up-hill battle to convince other developers of the value of using Eclipse or IDEs in general.

Since Ruby is an interpreted language (with a transparent compilation step for optimizations purposes only), developers mainly rely on test-driven development to produce reliable code. Auto-compilation and verification of code is thus rendered for the most part unnecessary.

Additionally, given Ruby's support for attributes (via attr* methods) and no need to declare class variables, many of the source code generators used in Java are not needed in Ruby. After all, Ruby's philosophy is about producting the tersest most abstract code, free of boiler-plate repetitive code.

Refactoring with Ruby is often done manually, but given that there isn't usually a lot of code with proper abstraction, and given Ruby's method aliasing support, huge refactorings of the nature that ripples through the whole system are rare, and thus refactoring is quite easy to perform manually especially given the protection of the Ruby must-have unit tests.

So, what does that leave as far as tooling needs? Color coding, syntax highlighting, file lookup, search and replace, and possibly some autocompletion capabilities.

Well, these limited needs brought back the popularity of simple editors that support just these features. By simple editors, I do actually mean good old VIM and emacs as well as the new extremely popular Mac editor, TextMate.

After 10 months of pair-programming with different Ruby developers with varying habits and backgrounds, I got to do a pilgrimage through most Ruby editors and IDEs. So far, I've gone through TextMate, VIM, Aptana RadRails, Eclipse DLTK, NetBeans, and IntelliJ RubyMine.

Yes, I'm a shortcut freak, and I used to write Java programs in Eclipse mouse-less!!! So, how did other editors and IDEs measure in comparison as far as shortcuts and productivity?

I'll leave that to another post.

In the meantime, what is your opinion of the matter? Do any of you prefer editors over IDEs? If so what's your editor/IDE of choice and what are the reasons you like it? Feel free to mention different ones for different programming languages.


Blogger said...

Hi Andy, it will be very interesting to read about your way of using mouse-less eclipse. especially about navigation between files, classes.

Jacobean said...

Just a week or two ago, I wrote a blog post about my general preference for simple editors, particularly for JavaScript development and sometimes, for certain tasks, even for Java. If you're interested, you can read my post here:



Nirav Thaker said...

I think Editor is just a solid part of an IDE. Java editor is really what I like about in Eclipse. IMO, An IDE should do a lot more than just refactoring, syntax coloring etc..

Build/deploy/test cycle with Editor simply can't match with IDEs, this becomes even more painful with Editor only development when I'm writing web app which remotely deploys (Google AE app for example).

One can argue that given enough understanding of operating system commands, developing with Editors can be as trivial as IDEs but in a long run IDE can increase your productivity a lot (debugger, profiler, dependency management), so YMMV with Editor only development but not as much with IDEs. I use http://www.vimplugin.org/ for general text editing where Eclipse editors really suck at (e.g. JS)

bewhite said...

Usually I use NetBeans but sometimes it needs to much time at start to configure/parse all needed configurations, gems and projects. This is why when I need to edit something quickly I use gedit with Ruby addons. There are two main addons I can recommend:
1) Internal command line. This lets you to use your favorite tools like git, cap, script/console and rake.
2) Textmate-like colors and fonts.

Actually, you can search for more gedit plugins but even these two addons convert simple editor in very handy development tool.