At 17:34 +0100 2001.04.21, John Hinsley wrote:
I can't believe that Sun had this (in Self) and decided to go with Java.
Excuse me; it's late, I'm sick, and I've been thinking too much ...
But it seems to me that the state of our "science" today is very much like a primitive tribe. When someone breaks out in hives, or has a stomach ache, they first talk to their friends, but if they don't get help, they go and see the witch doctor. They are told to cross a bunch of sticks, dance around them, and sacrifice a sparrow. What happens? Well, quite often, the hives go away or the stomach ache gets better. But they have no idea why. Of course, the witch doctor likes it that way, or else people would not give him any beads.
When some software starts doing mysterious things -- like zapping my filestore or my computer refusing to boot -- I first talk to my friends, and if that doesn't help, I call tech support. (I've had some pretty desperate problems lately ;-). The tech support Wizard walks me through a process of muttering incantations, reinstalling something for the third time ... and, quite often, things start working again. I have no idea why. I wonder if the computer companies like it that way?
I said that I've been thinking. I'm trying to figure out _why_ I like to spend time in Squeak. After designing and studying programming languages for over 30 years, why am I back with Smalltalk-80? I think that there are several answers, but John is nosing around at least one of them, with the email to which this is a reply. He said "Morphic is too simple". That prompted the zeroth reason that I spend time here.
(0) Squeak is simple. Maybe too simple. As a language, it's like XP: it's the simplest thing that could possibly work. No protection, no syntax (above the method level), no initialization, no types, no packages, no modules, no to most of the things that I (as a language designer) thought were important.
(1) No Magic. If I want to know why true & 3 answers 3, I can go and read the & method for true. If I want to know why I'm asked for my initials when the moon is blue, I can go and read SystemDictionary>>openSourceFiles. It may not always be easy to figure something out, but I know that it's always possible.
(2) It's fully reflective. When I want to figure something out, I don't have to switch to another environment (browsing a source tree with a text editor). I can stay in Squeak and find what I need. (That's introspection.) Not only that, I can change what I want, and the system behavior changes. I'm not meddling with an image of the world, I'm meddling with the world itself. (That's reification.) About the only place where this is not true is in the process of building a VM, which may be why I haven't explored doing that.
(3) The development tools are not "special". Anything that I can do in a browser I can do with a doIt. If the tools don't provide a button for what I wan to do, I can fake it. A while ago I was wondering how many methods were understood by String. (I was trying to convince a student that it would be fun to implement tree-structured strings.) So I brought up a protocol browser, got a Morphic halo on the PluggableListMorph, inspected it and found the answer. Everything is an object, duh ... such a simple idea, yet I'm still being surprised by its profundity.
(4) Squeak isn't a language, it's a place. This idea was startling to me when I first read it -- go back to Alejandro F. Reimondo's mail to this list on 28th November 1999 -- a very thought-provoking posting. Despite all the power of human languages, they are an obstacle to communication as much as they are an aid. That's why we have to meet each other face to face, rather than sending email and writing documents. That's why XP encourages developers and customers to talk together daily, rather than sharing requirements specs. Can you imagine doing a woodworking project by talking to the tools and telling them what to cut? It might work quite well for cutting boards to size. But at some point I would need to feel the tools in my hands ... the feel of the plane biting into the wood and the way that I react to it are far too subtle to be put into words. I thought at first that Morphic scripting letting us build applications without programming was just a toy for children. But I was the child; it finally dawned on me that this was the way that all applications will be built in a hundred years. We are all pioneers here, I think ...
(5) Squeak is a community. A community in which I can risk saying stuff like this and not get laughed at. A bit like the world used to be in the early days, before computing became big business. So, thanks for listening, and sorry if this has rambled a bit.
Andrew