Integrated Development Environment: Unix

jjohn on 2002-01-17T22:15:35

Just ran across an interview with James "Javaman" Gosling where he explains about his work with the new cross-platform IDE, netbeans. In particular, this crack made me laugh:

And IDEs are generally targeted at low-end developers--people who are not experts at writing code. And if you look for tools that are oriented toward (those) people, you basically find nothing. The No. 1 tool (in that area) is Emacs, and I was kind of the guy responsible for the original Emacs, 23 years ago. One of the things I find frightening is it's still around, and in many ways it hasn't really changed. Is that the best you can do for a (low-end) developer?

Although this will out me as an Emacs user, I say "if it ain't broke, don't fix it." Emacs is still around (and being actively developed) because for many users it works. It's stable, supports many programming languages (i.e. syntax highlighting and block indenting) and is copiously documented. Why not use it?

But the issue here really isn't Yet Another Editor war. All that I've said about Emacs is equally true for vi. The beef I have is really with the popular implementations of an Intergrated Development Environment. My sense is that the early success of Borland's QuickPascal for MS-DOS, with its "advanced" editor, online language help and integrated debugger, prompted application designers to think "every programmer needs this for their own language." In a way, this is true. However, it is meaningful that this was an MS-DOS product. MS-DOS was never taylored to the developer, but rather to the business application user. Therefore, a stock install of MS-DOS was a barren and lonely place for a programmer. What else was a PC coder to do in the eighties?

As free Unix clones became available in the nineties, many of us got our first glimse at an operating system appointed for programmers. Help facilities like man, text munging tools like awk and sed, filesystem tools like find, a rainbow of text editors and free version control systems like RCS all put the anemic MS-DOS environment to shame. There was never a need in Unix for one monolithic application designed to faciliate coding; every aspect of Unix is geared towards it. Editors need only provide access to these other tools to be an "IDE" in the DOS sense of the word.

So, Gosling's scorn of Emacs is a bit surprising to me in the context of programming. The editor is only a part of the picture. Building a whole application just to faciliate programming is sort of weird from a Solaris guy. The problem is that the Windows environment is openly hostile to programming. I certainly got that message loud and clear, which is why I develop in Linux.

One final point about IDEs in general. The core activity of programming is, oddly enough, text editing. Why is it that IDE editors in Windows (and I suspect netbeans to be only marginally better) have such a paucity of advanced editing features? I need the

TAB
button to indent based on the semantics of my language. I need rectangluar cuts. I need multiple buffers for cut text so that I can recall them all later. I need to be able to pipe a region of text into an external command, like
wc
or
perl -wc
. I need to be able to easily open a shell to run test harnesses. I need dynamic completion of words (for the love of God, don't make me type more than I have to). Most of all, an editor better not make me touch that phuqing mouse while I'm thinking! My motor skills are piss poor and I don't need additional distractions while coding.

In conclusion, it's clear to me that Unix and its frequent companion tools constitute to the most robust and stable IDE I've ever run across. Although it isn't the easiest IDE to learn, it is certainly the most powerful around, bar none.


Mousey Mousey Badtouch

TorgoX on 2002-01-18T04:00:09

Most of all, an editor better not make me touch that phuqing mouse while I'm thinking

This is very very true. One must learn the key shortcuts. Of course, when one switches OSes, many of them change. A hyoomon I used to work with was bent about the fact that all her favorite MSWin shortcuts didn't work in MacOS BBEdit. After a bit of random gefingerpokening, I found the equivalent of the shift-Home and shift-End that she missed so much (it was probably shift-control-Up or something horrid like that). She was so thrilled that she, without warning, sidled up to me konsole chair and hugged my with her tallowy primate arms! I hissed and clicked.

Moral of the story:

  • People are very (and rightly) attached to their keyboard shortcuts, because taking your hands off the keyboard is annoying.
  • Do not touch the programmer unless you are instructed to do so. Otherwise it is a BAD TOUCH.
BTW, everyone who uses MSWin should monkey around in the "Accessibility Options" control panel. The MouseKeys option is handy (altho you WILL have to read and probably hardcopy the help pages that explain how the numeric keys will relate to the pointer mode) for the ambitious. At least turn on the ToggleKeys -- it's just a feature that makes the Num Lock, Scroll Lock, and (most importantly) the Caps Lock keys go BEEP when you turn them on, and BOOP when you turn them off. It sounds exactly like the Pong sound effects.

AVOID MISSING BALL FOR HIGH SCORE.

When bored, you can just sit and go BEEP BOOP... BEEP... BOOP BEEP BOOP... Computers are fun.