Bruce used the IDE argument in the wrong direction with: Python IDEs:
I often get questions, mostly from Java programmers, about IDEs for Python. In Java there’s so much finger-typing that the language wouldn’t be feasible without an auto-completion IDE, so it makes sense that a Java programmer would want one when using Python. And they exist, but I don’t know many who use them.
I didn’t think that IDEs were there to just save a few keystrokes :)
Even Obie Fernandez the ThoughtWorker who loves Rails (well, one of them :) admits that IntelliJ IDEA is a different level to Textmate.
I use Textmate for my Ruby work and it is nice, but it isn’t close to IDEA wrt refactoring and such.
If you just look at the code editor side:
When I code in IntelliJ I can code in a different way. Type a couple of letters, hit one of the ctrl-space combinations, couple of letters, …. and when I am done I know its going to compile just fine. If I get a squigly I take care of it right there with an Alt-Enter. And then there are live templates (a feature that Textmate and company can pull off).
That is enough for me. And then you add on refactoring support etc, and it gets better and better.
A lot of people cringe at the term “IDE” as they think it is all about Wizards and generating code for you.
When I hear this kind of stuff from people of Bruce’s caliber, I wonder how much code they write anymore.
February 16th, 2006 at 2:12 pm
I’m pretty sure Obie is coming from a Java background, so I wouldn’t take his opinion on IDE’s as representative of the dynamic language community as a whole. I still don’t get the “refactoring” bit that Java types go on and on about. With Ruby I just use sub/replace.
What I personally use IDE’s for (mainly Eclipse) is:
1) Project management – helps me keep my files organized.
2) Version control – I can never remember the command line options
3) Debugging – Although I rarely need it, sometimes there’s no substitute for a GUI debugger.
Sometimes I’ll use the RDT editor (I prefer its code folding to gvim) or the test suite tools (right-click, run test suite), but for most of my *editing* needs, I use gvim.
However, some people can get by without an IDE just fine. That, or they’ve effectively configured their emacs client into a defacto IDE. :-P
February 16th, 2006 at 2:17 pm
I think that Emacs *is* an IDE :)
It is the most flexible one around.
The project management is key. In an IDE I don’t have to File – Open … hunt for file.
Rather I can hit a key sequence and type “MCT” to load “MyCoolThing” class.
February 16th, 2006 at 6:21 pm
“I still don’t get the “refactoring” bit that Java types go on and on about. ”
A refactoring Java IDE call find all callers. That’s the main thing. Reflection heavy code being the exception. Essentially refactoring java code is a big deal day-to-day and good IDEs make it natural to do. Also if you are using IDEA (in particular), it knows the semantics of the java language, ie it has a parse tree representation of your java packages as opposed to a clump of text files. All said as a heavy Python and Java user.
“I think that Emacs *is* an IDE :)”
I agree. But for *Java* work, something like IDEA or Eclipse bets Emacs hands down. For heavy Java editing, IDEA is simply a better Emacs – lots of key-fu, but combined with parse tree awareness of the language. For example, nxml-mode+schemas is for XML roughly what IDEA 1.0 was for Java.
February 16th, 2006 at 7:09 pm
I think that folks who haven’t really used a refactoring browser just can’t understand how it changes the way you code. Your design becomes so much more malleable and fluid, you can very easily try out different approaches just to see how it works. A good text editor that can find/replace across files just does not compare to all the things that IDEA or Eclipse (or Smalltalk!) give you with their refactorings.
February 17th, 2006 at 10:18 am
In my opinion there is no comparison between an AST aware IDE and plain text text editor.
In one particular case, we wanted to change all calls of form StringBufferExpr.append(StringBufferExpr) to StringBufferExpr.append(StringBufferExpr.toString()), where the StringBufferExpr are expressions returning StringBuffer. IDEA has this feature called Structural find and replace. We managed to do this in less than 15 mins (500K lines of code). It made over 600 such replacements.
I can’t imagine a plain editor or EMacs ever doing that.
February 17th, 2006 at 5:55 pm
“In one particular case, we wanted to change all calls of form StringBufferExpr.append(StringBufferExpr) to StringBufferExpr.append(StringBufferExpr.toString()), where the StringBufferExpr are expressions returning StringBuffer.”
A scenario like this just isn’t going to happen normally in say, Ruby, because of the dynamic nature of the language. A global sub/replace would work just fine in the scenario you present, afaict.
I should ask Rich Kilmer his thoughts, though. I think he has the unofficial ‘record’ for largest Ruby project that I can remember.
February 19th, 2006 at 5:04 am
I’m happy to be an “IDEA developer”,
Brian McCallister used this term in http://kasparov.skife.org/blog/2005/11/11/#good-enough
February 20th, 2006 at 10:04 pm
A Good IDE keeps your head out of the API docs and keeps it on your code, where it belongs. It does this by letting you look up method names, parameters etc without making you open a browser/book.
Eckel’s point is that because Python has less syntax to remember, the benefit you get from using an IDE isn’t as great (and may be small enough that you might as well not bother).
I’m not sure I agree. Any reasonably sized Python app is going to require the use of some 3rd-party API that you won’t be able to remember all the class names for.