www.talios.com

The Power of Smalltalk IDE's

Published: 5:12 PM GMT+12, Sunday, 11 December 2005

So it seems that every man and his dog is commenting on the power of Smalltalk IDEs in response to Cedric's interview with Vanguard Technologies.

Now I'll admit that Cedric is partially wrong, and that all the Smalltalkers are right, Blaine Buxton writes:

I generally look at Smalltalk's IDE as playing with a live patient. You are in the middle of a living and breathing system that reacts immediately to you. There's no shutdown, compile, restart, and retry. It's all happening right here and now. It's an incredibly cool experience especially when you realize that you can execute any code and inspect the state of the system.
Sure, alot of the time Smalltalk gives you this "everything is live" scenario, the problem I have is when Blaine (and others) say "there's no shutdown, compile, restart, and retry" which goes all out the window when you start asking them about deploying an application.

I've been using Dolphin Smalltalk from Object Arts off and on for the last year for a small windows project, to get an executable you strip the running image down to the executable you ship to clients.  As part of this "stripping" process, all the classes and methods that are unused in your application are (as they process implies) stripped/removed leaving you with a nice small redistributable application.

A problem I've often encountered with this is that often methods or classes that I'm using, but don't reference directly in code (class names set in config files etc.) also get stripped causing a problem that only occurs at "run time" - a state of the application where all the wonderfull "everything is live" functionality of the image isn't available.

There's no means to update classes on the fly because the compilers been stripped out, I could include it - but then I'd be violating Object Arts licence aggreement.  My only hope of debugging any problems is to take a generated .ERRORS file (stack trace, thankfully one that includes all local variables at each point in the stack), load up the image, load the strack trace into Ghoul and hope I've not changed the source too much.

To say that Smalltalk is the holy grail is somewhat misleading.  Sure the IDE's are functionally the same, if not superior IN SOME AREAS - they also leave ALOT to be desired.

I upgraded to Dolphin 6 shortly after it was released, but must confess to not having had much time to experiment with it yet, thou I did check out the newly implemented intellisense completion.  One of the biggest reasons why people say they like intellisense is that it lets them explore a class's methods without moving their concentation away from the code block there writing, however a minor stumbling block is when it offers me methods that don't exist...

In a workspace I entered the following:
#('1' '2' '3' '4') p
and was offered a method called print. But when executing that I get an error saying the method doesn't exist on an Array....



DOH!  When your autocompletion gives you the wrong information it makes it more than worthless, I hope I don't get people saying 'oh but its because the IDE doesn't know what object you're wanting to complete...' cause that'll be playing right into the arms of pro-static-typing....

Smalltalk IDEs may have provided all these wonderfull features for the last 20 years or so, but they also seem to have sat stagnant with the thought that they don't need to improve.

Comments (4)

Sure you can complain, but I found Dolphin X6 inspiring - and you know what I put my money where my mouth is and invested some time in bringing Dolphin up to Eclipse/IntelliJ/VS standards (ok its a little bit short - but i'm one guy and I've only invested 1 weeks train journeys to and from work - so about 5 hours).

Day one, I fixed auto-complete to have Define All-Temps (also added Ctrl-Enter to define current temp)

Days 2-3, I augmented the tab key so I can tab from error to error (handy after completing a multi-keyword method, you can tab from undefined parameter to undefined parameter).

Day 4 I added Alt-Up/Down so I can navigate through the tabs in history order (that one took me a bit longer as I was unfamiliar with the TabCards and extendedAccelerators).

Day 5 I recorded a flash demo and took some screenshots.

Not bad for a weeks part-time work (I'm sure I probably did a few hours here and there at lunch). However my point is that the foundation is there and its not magic. Smalltalkers need to stand up and start making a bit of noise, with a bit of polish to show people whats possible.

Its all there, its really easy to do - and the end result is really, really productive!

I called it Intelli-Dolphin, and you can find it at: http://www.pobox.com/~macta/dolphin.html

Tim

left by Tim Mackinnon . Thursday, 15 December 2005 9:41 PM

afaik until ~90 Smalltalk wasn't much of a team development tool - you could save source code to a file, and someone else could load that file into their Smalltalk IDE but...

Then came OTI's Envy/Developer:

- the source code repository was now a multi-user database not an individuals Smalltalk image

- version control was fine-grained method-level

- version control was completely integrated with the Smalltalk IDE

For example, you Accept a method change in Dolphin, and the result of that action is to compile the method *and* create a new edition of that method in the source code repository.

Method-level source control - not file level source control - promotes continuous integration ;-)

left by Isaac Gouy . Wednesday, 14 December 2005 4:56 AM

To say that Smalltalk is the holy grail is somewhat misleading.

To say that X is the holy grail is to invite healthy skepticism ;-)

Smalltalk IDEs may have provided all these wonderfull features for the last 20 years or so, but they also seem to have sat stagnant with the thought that they don't need to improve.

The Smalltalk IDEs the 80's did not have all of these wonderful features:

- "A Refactoring Tool for Smalltalk" (pdf) was presented at OOPSLA'96

- iirc SUnit didn't appear until the late '90s

left by Isaac Gouy . Tuesday, 13 December 2005 3:46 PM

You're explicitly allowed to redistribute the compiler for Dolphin (DOLPHINCR006.DLL) so you cn compile code in a runtime environment. The only things you're not allowed to redistribute are the development tools code in the image. A complete list in in redist.txt in the install dir.

As for the intellisense, it's lacking, definitely. But it does a better job when it has more context to work with.

If I had this in a method:

var := #('1' '2' '3' '4'). var p.

When I hit this in the debugger and autocomplete on : var print The list shows: printCyclicRefOn: printOn: printPrefixOn: printString printSuffixOn:

All valid for the receiver. Hopefully the autocomplete will improve since, as your example shows, there's really no reason it couldn't have figured that one out.

left by John . Monday, 12 December 2005 8:15 AM
Add Comment