IDEs: How the Other Half Codes


Xcode, for those who don’t know, is the Mac OS X IDE (Integrated Development Environment). It is an application that creates other applications; the toolmaker’s tool. As a software developer myself, I use (and have written) many such toolmaking-tools, although nothing quite as ambitious and comprehensive as Xcode. As a matter of fact, in my professional life, I don’t even use an IDE like Xcode. I use the low-level pieces of which they are made, directly, which makes me increasingly something of a dinosaur.

What I mean is that I use development tools whose command-line interfaces and usability choices stem from a time before any graphical user interfaces existed, let alone from before they were popular. This means that instead of clicking a button titled “Build”, I end up typing sequences like this at a prompt in a terminal program:

c++ $SRCDIR/module.cc -o -shared $OBJDIR/module.so -I$EXTRAS/version2.2 -L$EXTRAS/lib -lprimary -lsecondary -Wl,-rpath,$EXTRAS/lib

Actually, because I am an expert dinosaur, I only type such a line once, in a script, which I contrive to execute automatically, with a minimum of fuss, so that in the future I am only typing either the word “make” or a key sequence like “c<ESC>p<RETURN>”. The entire experience is one of dense sequences of text tokens flowing to and fro, substitutions and expansions and multiple levels of interpretation accumulating, layer by layer, creating a sort of terse, expressive slang built from the ground up out of elementary principles. It’s efficient, and it works well, but aesthetically it is about as stirring as papier-mâché made of newsprint.

Modern IDEs are a lot different. Like any well-designed productivity application, they bring the power of multiple dynamic perspectives to a project. Relationships between different entities are displayed and updated as they change; the application communicates along multiple dimensions, using not only text but color, shape and motion. Things look clean and even beautiful. You get the feeling that some trusted person is in charge here. Moreover, it’s not like anything is limited or dumbed down. An expert like me can find and tweak any necessary setting by diving into the (rather huge) list of preferences.

What’s really weird is to use the word “modern” to describe IDEs. 22 years ago, when I was taking my second programming course in school, we used THINK Pascal for the Macintosh. Using that IDE felt like stepping into the future. But one year later, when learning C and Unix, it was back to green text on a black screen with a command line, and goodbye graphical interface.

Turned out that time trip was farther in the future than I had thought. It’s been text ever since, and that’s how it’s likely to be for a long time yet—except on the weekend, when I fire up Xcode and leave the sooty industrial zones of Softwareville to cruise around the well-manicured neighborhoods and office complexes of the programmer community.

Posted: Thu - June 28, 2007 at 11:12 PM        


©