For some years now, I've done most of my development in UNIX-style text environments. The advantage of this type of environment is the suite of text tools. I'm certainly not the first programmer to toss together AWK scripts for massaging source files.
In contrast, when I started working seriously with popular Windows and Macintosh IDEs, I felt like I'd been handcuffed. The bevy of general-purpose text tools were gone; in their place were semi-graphical tools for building specific types of application objects. The irony is that if these tools are good, they'll help you build those types of objects quickly, so you'll spend 90 percent of your time not using the tools. This means that, even with the most feature-rich IDE, I spend most of my time in a fairly minimalist environment: a second-rate text editor, a window to hold compiler error messages, and a window listing my source files.
As far as I can tell, tool vendors have become so entranced by the idea of "visual" that they've lost track of a fundamental point -- real programmers work with textual source code. Notice I didn't say "source files." In semi-graphical environments such as Windows and MacOS, files are rapidly becoming an anachronism. Users want to work with documents, not files. In this respect, developers are like any other class of users.
It's a big jump to stop working with files and start working with structured source code. For instance, does your C++ IDE -- with its integrated source control -- let you safely edit one method of a class while another programmer edits another method of that same class? Probably not. Can you look at a single integrated display and see at a glance which methods contain compiler errors? Which classes have pending bugs? Which projects have been frozen? Again, probably not.
Admittedly, the problem is not just the tools. C++ still has a lot of unstructured baggage from its C roots (preprocessor macros are the worst offender), and you'd have to lose much of that before you could really build the environment I envision.
The good news is that Java seems to have gotten rid of that baggage, and there are some interesting new tools coming out for Java. This is partly due to the variety of backgrounds feeding into Java. As one example, the developers at Objectsoft (http://www.objsoft.com/) wanted Smalltalk-style source editing for Java. So they wrote the BrewMaster IDE to provide a structured view of Java source code, with integrated source control that works at the level of individual class members. This is a big step up from typical C++ environments with their clunky "class browsers."
It all comes down to building the right tools for your environment. It's no surprise that Smalltalk -- which has promoted object-oriented programming and GUIs since the late 1970s -- should have cleaner graphical object-oriented development tools than Windows/C++. UNIX-style text tools work well in a UNIX-style text environment. Now we need to find good tools for working with textual source code in a graphical environment.
--Tim Kientzle