Squeak as total computing environment
There are four fundamental reasons why Squeak is not easy to
comprehend, and they are related to each other:
1. it is a total computing environment
2. it therefore involves a programming language
3. the programming language is radically object-oriented
4. object-oriented languages are often "explained" in misleading terms
Now let's explain what is involved in these points
1. it is a total computing environment
It is this fact that makes Squeak so totally different: Instead of
working in a radically simplified environment of widgets each of which
has a behavior of which you do not have the code and do not get the
full explanations, and that you can only change a little, you have an
environment in which you can do everything a computer is capable of,
in any way you please, only restricted by your own understanding of
the environment and the programming language, for what you are working
with is not a set of widgets but the programming environment of a
universal programming language, where everything is fully given to you
to understand and change.
And the fact is that, apart from Smalltalk, which is a precursor of
Squeak, there is no total computing environment like it - and any
alternative, like C++ or C# or Delphi, is radically different, because
these are merely programming tools to write programs, and indeed to
write predominantly (though not necessarily) programs as collection of
widgets, and not at all themselves total computing environments
designed to work with a computer.
2. it therefore involves a programming language
This is a direct consequence of the previous point, but it means
that the actual environment one works in is extra-ordinarily powerful,
and - it is this that makes Squeak so different and quite unlike a
widget-clicking environment.
Programming languages are intrinsically difficult - for they must
mediate between the natural language of human users of computers, in a
formalism that is simple enough to be processed by a computing
machine, yet similar enough to a human language to be used and read
and indeed programmed by human users. Also, the language of Squeak is
different from other programming languages and is used in a different
kind of environment.
3. the programming language is radically object-oriented
The programming language is Squeak, which is Smalltalk + Morphic.
In many ways, Smalltalk is the mother of object-oriented programming
languages, and indeed it is a direct precursor and the inspiration of
the Apple and Windows interface. Yet the Squeak approach
to object-oriented programming is quite different from - say - Delphi or Java or C#
or Visual Basic, all
of which are nominally "object-oriented". In fact, these
other "object-oriented" programming languages have taken
over some techniques and ideas that started (mostly) in Smalltalk - but
they do not
immerse the uses in a total computing environment made from objects,
in which the user has the full code of all the objects in the
environment, and can directly access and change the code of any object
that is working in the system, that is itself entirely composed from
objects.
4. object-oriented languages are often "explained" in misleading
terms
The final fundamental reason that makes Smalltalk and Squeak hard
to get is that Smalltalkish languages normally, and since the early
1980-ies, have been "explained" in terms of metaphors and English that
is quite unhelpful amd misleading and that obscures the real beauty of
the code it seeks to clarify. These standard explanations of
Smalltalkish code explain code in terms as if the code itself is
speaking to the user and as if the code has the knowledge and desires
of a human being. Thus, the normal explanations of code in
Smalltalk and Squeak have been on the pattern of "I am a foobar that
knows how to foo though I desire to fee if I am fussed (thanks to
polymorphism)", which in fact is categorical nonsense: Code and
language have no understanding whatsoever, and cannot speak for
themselves as human beings can, nor do they know, understand or desire
things.
Fortunately, something can be done about the last point, and I have
heard that some people involved in Squeak are rewriting the current
explanations of Squeak in terms much closer to ordinary clear English
than has been the practice in Smalltalk environments since their
inception.
If this succeeds, Squeak will be delivered from a lot of unclear "explanations"
of its code that in fact were obfuscations, and indeed Squeak will be
considerably easier to understand - which is in the interest of
everybody.
Maarten
Maartensz
Sep 17, 2002