The Weekly Juan #4: "Smalltalk,
Direct Manipulation and End User Programming"
Aaron Reichow
revaaron at bitquabit.com
Wed Nov 15 02:50:19 UTC 2006
On Nov 10, 2006, at 2:08 PM, Jecel Assumpcao Jr wrote:
> Juan Vuletich wrote on Wed, 08 Nov 2006 21:55:22 -0300
>> Well, I don't know many Self programmers. In addition to John's
>> opinion
>> (crucial for me), I have a good friend who worked a couple of
>> years on
>> an application written in NewtonScript.
>
> Note that NewtonScript is a cross-development system, which makes it
> feel very different from a native development environment
> independently
> of any other of its features. Just try something like
> PocketSmalltalk or
> Resilient to see what I meant.
That's true to some extent. While most of my NewtonScript programming
was done on the Newton itself using NewtDevEnv, an on-board IDE, I do
have some experience using the cross-dev tools that run on a host Mac/
PC. I seem to recall that in addition to the stale code and GUI
layout you were working on, you could also be connected to the Newton
and its live object ecosystem- it lacked the ultimate power even
Smalltalk-80 has, but it was closer to ån image-based Smalltalk way
of doing things than writing C. You had access to live objects, etc
if you were connected to the Newton when doing development. If you
added a VNC server for the Newton and a tool like ViewFrame, you got
even closer- it is cross development, but nothing like you have with
Pocket Smalltalk, which is 'dead' rather than 'alive' like your usual
Smalltalk.
>> He felt the same as John: the
>> browser is a great way to organize code.
>
> I agree. But to repeat what I said before, as we move to a more
> modular
> and open system we will lose Squeak's "show me everything"
> features. The
> system browser will only show you want you happen to have loaded in
> this
> particular image, not something that is on SqueakMap; sending
> #allInstances doesn't let you see stuff that might live in some
> project
> you haven't loaded yet and so on. This future can't be avoided and it
> would be a good idea for our tools to adapt to this new reality.
But how far along do you want to travel down this path? If I were
building a Smalltalk-ish environment for another dynamic language-
REBOL, some Lisp, Python, whatever- my code browser wouldn't show me
the classes of everything and everything ever written for it. Don't
get me wrong- it would be cool to have a way to do this for certain
situations, but in the end, I want to see what I got. If I need some
functionality, I go find a package, load it, and then look at it.
Am I misremembering, but doesn't VisualWorks have something sort of
like you're describing? That is, you have what is in your image, you
have stuff on a server somewhere, but you also have a bunch of cached/
downloaded packages in a goodies folder. I have a vague recollection
that VW will show you the stuff in that goodies folder, but greyed
out- you can right click and load it, and then it's real. I might be
hallucinating this, but if it isn't a possibility, this might be a
possible model for getting what you're talking about.
About the #allInstances comment- do I really want to see all the
instances of some class across all published projects on SqueakMap? I
mean, there are cases when this would be awsome, especially if it
were transparent- but that seems to be more the domain of a peer to
peer Magma system, something entered in intentionally, not the
default behavior when I'm looking around at the code and objects in
my system. I think a massively distributed system would be
incredibly cool- but I don't think it makes sense just yet.
>> Besides, code based development
>> (i.e. not relying on the assembly of objects in a certain image)
>> eases
>> team work and version tracking.
>
> Here I must strongly disagree. Back in 1997 I had two trainees working
> for me and doing some simple Self programming. Given that you can open
> more than one window on the same Self world and the cross computer
> features of the X Window system, they would sit at two different
> workstations on the same room (but with voice chat they could have
> been
> very far away with the same effect) and engaged in very intense pair
> programming (a bit different from how the Agile folks do it).
> Unless you
> had seen it yourself it is hard for you imagine how much fun this was
> and how productive they were (not counting crashes - the system should
> have been a bit more robust). All this using live objects.
I can second this, actually. I did some work like this using Squeak.
We had a machine which was running Squeak and Nebraska but with no
local keyboard/mouse/display. We both connected to it and worked. We
usually were on at different times and generally waited til the other
was off, but we did do simultaneous coding a handful of times- and it
worked pretty well.
This is hard to wrap your head around if you've not used a system
like Morphic, in Self or Smalltalk. I don't think most other GUI
toolkits have the possibility for multiple hands. It's a shame,
because this sort of forward thinking in Morphic seems to buy you a
lot of cool stuff for relatively little cost.
> Sure, this is a total pain if you depend on CVS. But this is like
> saying
> Mac text files are totally useless just because you have to edit them
> with Notepad.exe. Don't confuse the limitations of your current tools
> with inherent limitations of a certain style of development.
Well said. I might have to copy this for future reference- I often am
trying to say precisely this to people new to Squeak in #squeak or in
real life.
Regards,
Aaron
More information about the Squeak-dev
mailing list
|