As a result of using XCode 4.2, which I’ve started using for Stanford’s CS193P : iPad and iPhone App Development (Fall 2011) course on iTunes U, I’ve been thinking about how IDE’s have progressed over the years. The first IDE I used for industrial programming was Borland’s Turbo Pascal:
Looking back on it, there’s a (nice) strange kind of simplicity to it all… In fact, as you’ll see later, some IDE’s have not really progressed that much except they seem to of acquired more clutter! It’s amazing what you could do with this system, I developed a number of projects with this – a bookstore management system and a quite complex reconditioned car spare parts system. As a side-note, both these systems used B-Trees (not a database) and were extremely useable on the PC’s of the day.
So what’s changed? Umm…
- There are two windows of code rather than one on the screen
- There’s a fancy panel on the right to “Explore your Solution” – looks to me like browsing the file system ;-)
- Oh, and rather than text menus we have pretty pictures
Ars Technica made it pretty clear in their Microsoft keeps it old-school with a pricey text adventure game, Visual Studio 2010 article. To be fair, the above and the shots in AT seem to be using a theme called Darker Shade of Blue which does a great job of “retroising” your IDE should you hanker for the old days… So to be balanced, VS isn’t that bad as it can look like this:
Although ironically, it’s using Visual Basic. As you’ve probably gathered, I’m not much of an MS man, but then again I’m not an MS basher either – I think they’ve done some good stuff and are still pushing the envelope in some areas such as the F# Language. I just don’t happen to work much with their technology – what I do work with and have for a number of years is Java, J(2)EE, Spring, . . .
Not really that far from Visual Studio really, and I’m sure with a bit of theme tweaking you could “go retro” and play the “text adventure game” with it. So what’s going on here, what’s being represented between Turbo Pascal and now on these IDE’s? Just the fact that development has gotten more complex – configuration files, more Beans, annotations etc… Is this a bad thing? Not really, I’m sure I could redo my original Turbo Pascal apps a lot more quickly and reliably using either environment. But they’re not really that different, just more of the same…
What’s going on here??? A maze of twisty browsers, all seemingly alike? Seriously though, this is the ultimate visual representation of the Unix philosophy – a set of connected and usable tools. If you look on the lower left, we have the code for handling mouseUp events for a visual list!!! How many environments can you even look at this on? Also, note how this was got at through browsing the active processes – nice. Maybe the rest of the world will catch up one day . . .
Meanwhile, in the “real world”, I don’t think Jobs et-al had forgotten the sort of paradigm shift the Smalltalk approach took. In fact it’s obvious they didn’t because NeXTStep (and subsequently Mac OS X) was based around Objective-C. And what’s that, but a synthesis of C and Smalltalk – two opposite ends of “the spectrum”, but they seem to work. NS’s main proposition was really rapid development, so it all came down to the IDE:
WOW! This wasn’t nick-named “Gods Development Environment” for nothing! There was also a Class Browser (like with Smalltalk) and a build tool – all fairly connected along the Unix philosophy. I suppose the difference between this and Smalltalk is the granularity. When NeXT reverse-took-over Apple, these tools were then bought in to OS X as the development environment. Pretty much like-for-like, except with a Cocoa / Aqua look and feel. This brings us to the present day with Xcode:
I’m of two minds about this:
- It’s certainly not your father’s Smalltalk – all integrated between build, interface builder and class browser. Everything on one giant interface…
- Everything is on one giant interface :-) The flow is naturally from your project on the left, to your interface, code and inspectors on the right. It’s not really configurable like eclipse with its various views, but assuming you’re writing an app(lication) (and I’m not sure what else you’d be writing ;) it works really well and feels natural.
It’s the classic “you’ll do it the Apple way because we know best” and I’m thinking that maybe they do as it is nice to use. There’s just that nagging techie / twiddler bit of me that wants to be able to configure everything. Yet, when it gets down to it, with eclipse you have Perspectives, which really are pre-defined configurations of Views and you tend to stick with them after a few twiddles, but that’s just because you can.
So where are we headed? I don’t really know, but I have a few thoughts: The integrated bit is great, but there is also something about the tools approach of Smalltalk. How about if you actually made the Smalltalk browsers etc a bit more granular and then enabled people to plug them together however they wanted, so if you do want to have an ‘Uber IDE’ then you can. If you want bits, then you can also and they’ll hopefully communicate anyway e.g. an inspector would change it’s contents depending on what you were focused on and had selected within whatever browser / tool you were working in.
An interesting development since I wrote the original of this post a few months ago on my old site is Light Table
which represents an almost “back to basics” approach and it’s interesting to note that I’m not the only person cogitating on this as shown by Chris Granger‘s (developer of Light Table) recent All ideas are old ideas post. It will be interesting to see where this all goes…