[Edu-sig] Python & Smalltalk (was Re: OLPC related: pyGTK)
Paul D. Fernhout
pdfernhout at kurtz-fernhout.com
Thu Dec 21 14:00:05 CET 2006
ajsiegel at optonline.net wrote:
> Squeaks pretense issues, and its licensing issues, are - by the way - not unrelated
> when you look at it.
Sometimes I think something like that myself. :-)
But, to elaborate on your point a little more (in a toned down way :-):
Smalltalk came out of an industrial research lab (Xerox PARC). The people
who invented and then built it and refined it were paid industrial
employees working in the scope of their duties on company time (though
very unusual ones, even by such R&D standards. :-) Its subsequent history
for decades involved mainly development by commercial organizations
(either as Smalltalk or also as the Macintosh OS which in some sense was a
Smalltalk-derivative, but Steve Jobs just got the window system because he
left too soon. :-).
http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html
"One of the best parts of the [1979] demo was when Steve Jobs said he
didn't like the blt-style scrolling we were using and asked if we cold do
it in a smooth continuous style. In less than a minute Dan found the
methods involved, made the (relatively major) changes and scrolling was
now continuous! This shocked the visitors, espeicially the programmers
among them, as they had never seen a really powerful incremental system
before."
And:
http://americanhistory.si.edu/collections/comphist/sj1.html
"Steve Jobs: ... That's the real gem. I'll tell you an interesting story.
When I was at Apple, a few of my acquaintances said "You really need to go
over to Xerox PARC (which was Palo Alto Research Center) and see what
they've got going over there." They didn't usually let too many people in
but I was able to get in there and see what they were doing. I saw their
early computer called the Alto which was a phenomenal computer and they
actually showed me three things there that they had working in 1976. I saw
them in 1979. Things that took really until a few years ago for us to
fully recreate, for the industry to fully recreate in this case with
NeXTStep. However, I didn't see all three of those things. I only saw the
first one which was so incredible to me that it saturated me. It blinded
me to see the other two. It took me years to recreate them and rediscover
them and incorporate them back into the model but they were very far ahead
in their thinking. They didn't have it totally right, but they had the
germ of the idea of all three things. And the three things were graphical
user interfaces, object oriented computing and networking. Let me go
through those. Graphical interface: The Alto had the world's first
graphical user interface. It had windows. It had a crude menu system. It
had crude panels and stuff. It didn't work right but it basically was all
there. Objects: They had Smalltalk running, which was really the first
object-oriented language. Simula was really the first but Smalltalk was
the first official object oriented language. Third, networking: They
invented Ethernet there, as you know. And they had about two hundred Altos
with servers hooked up in a local area network there doing e-mail and
everything else over the network, all in 1979. I was so blown away with
the potential of the germ of that graphical user interface that I saw that
I didn't even assimilate or even stick around to investigate fully the
other two."
Essentially Xerox Parc in 1976 (thirty years ago!) invented the computing
landscape most of us use now, and Alan Kay was part of that. What we have
seen since is mainly just the dispersal and magnification of those ideas
(often in a warped or dumbed down fashion, e.g. C++ instead of Smalltalk;
XML instead of Lisp).
Smalltalk's demise as a major player on the commercial scene in terms of
VisualWorks and its predecessor ObjectWorks (*the* leading Smalltalk
product, and still the most comprehensive and definitive and most
cross-platform -- excepting perhaps Squeak is more cross-platform in
theory) was mostly due to greed and mismanagement IMHO by a now defunct
company (the current VisualWorks owners bought it cheaply from them).
IBM's VisualAge Smalltalk's demise, on the other hand, was mostly due to
IBM's decision to back Java (shortsighted and unfortunate I think as IBM
had the clout to push Smalltalk syntax through to the masses IMHO).
Smalltalk is still actively used by many, but is more of a niche player at
the moment (like, say, OCaml or Haskell or Common Lisp), having been
eclipsed by Java. The support community for Smalltalk was (at first)
mostly commercially oriented, and remains so to some degree. While there
were academic users, and in the past decade, especially with Squeak, the
number of people using it for academic or free or open source type
applications has grown, that has not been the bulk of the history. Even
Squeak's most recent evolution was driven by work at Apple and then at
Disney, with the Smalltalk principals reprising their roles as employees
of large industrial research and development labs, with the licensing
ambiguity that sometimes entails in navigating for-profit corporate waters
in an emerging free-and-open-source way (i.e. Alan Kay claims Disney is OK
with the Squeak changes done there being released, but there is no "peace
of mind" letter from Disney signing off on them I am aware of, or related
licensing statement in the code).
Python on the other hand, was started as a hobby by one person who was
based in an academic research lab. It was always given freely. Excepting
one bobble with licensing issues (which was corrected and involved a
not-for-profit), the licensing situation has always been pretty
straightforward from a free software perspective (and is even now GPL
compatible). For most of Guido's time with python (except the last few
years) he was affiliated with one of two non-profits. Even now his job is
at a pro-"open source" corporation which is also releasing several other
free and open source projects. The community that grew around Python,
while with many commercial users, had a very different emphasis to it.
Part of that early community spirit was also from the "Monty Python"
humorous yet playfully radical themes (although Guido has said by now he
has heard enough Monty Python jokes. :-) Python also has one core
definitive free code base as a reference standard implementation (even as
there are spinoffs like Jython).
Personally, I feel Smalltalk is the better syntax for kids to learn as
that purpose was what it was supposedly designed for (if you ignore that
most adult programmers come from Algol syntax and have trouble adapting to
the syntax initially); Smalltalk keyword: syntax is certainly the easier
syntax to use to maintain large bodies of code using powerful tools and is
easily extendable by the end user programmer for many new uses including
new control structures and iteration concepts; Smalltalk historically also
has the better development tools (in part due to the syntax) and also has
a better library architecture (e.g. Streams, Magnitude) and better VMs and
garbage collection(especially in VisualWorks, and less so in Squeak), and
also has benefited from a culture of Smalltalk all-the-way-down (as Squeak
exemplifies); Smalltalk has a powerful notion of bracketed nameless code
blocks and is a tour de force of one paradigm (objects and message passing).
However, Python has the better community (from a free and open source
perspective), better license and licensing history, and better breadth and
modularity of libraries; Python also is more easily taken up by adult
programmers who already know C or a similar Algol-style language because
of its Algol-like syntax and also because you can use familiar
text-oriented tools like emacs or vi or Scite with it (which makes it
easier for it to gain commercial acceptance as a new thing); Python code
is clear and concise and maintainable because of the decision to use
significant indentation instead of braces or brackets (like Occam); Python
also is a standard defined by a reference implementation, which is much
better than a standard defined by an ambiguous or incomplete textual
specification; Python is easier to do small projects in for people who
only know a little of the language, so in that sense it has an easier
learning curve as a system.
I feel, especially with Ruby's increasing popularity [as effectively a
Smalltalk with Algol syntax plus some other bells and whistles], that the
*themes* in Smalltalk are the future of most programming. Even Python
continues to get more Smalltalk-like, such as the "new classes" changes.
Yet, I want to write some programs now, as part of a free and secure
ecosystem of such programs. :-) Ironically, in my own case as a typical
Smalltalk programmer, because of my own history as a Smalltalk developer
working on commercial projects with commercial versions which nonetheless
included source as most Smalltalks do, I am in some ways "contaminated" by
that experience and the current overly broad reading of copyright and that
puts into potential question anything I develop which is a
Smalltalk-derivative (unless I do it very, very carefully, say by using
mostly GNU Smalltalk sources); not to say I ever would use such commercial
code, just that I might face the effectively impossible task of proving I
had not if there was any coincidental similarity at all (which is a much
smaller problem when I am working with something very different like Python).
If I perhaps oversimplify, essentially the choice right now is between
elegant syntax, uniform abstractions, and powerful tools, embodied in a
system originally designed for kids by big corporate R&D (Smalltalk)
versus practical syntax, uniform community history of freedom, and
powerful economic forces, embodied in a system originally designed for
adult programmers by an academic researcher as a hobby project which grew
beyond initial expectations (Python). :-)
Both languages along with their communities have different strengths and
weaknesses, and also both have subcultures which are in opposition to the
main (e.g. mostly commercial Smalltalk has several free versions, mostly
free Python has heavy proprietary commercial usage where no doubt such
users have large interesting and yet proprietary libraries). That the
strengths and weaknesses are so different in different areas and that one
must also assess where trends are heading when embarking on big projects
is why I am in conflict about which to use (especially for writing
educational simulations), and that is why I tried to mix the best features
of the two in the PataPata experiment -- though perhaps ended up with the
worst features of the two in some ways (Smalltalk's . :-).
Barring moving that PataPata project forward somehow, I am left with a
situation that I either have to put a lot of work into a free Smalltalk
(Squeak, GNU, A Little Smalltalk, Bistro, Sharp Smalltalk, etc.) to make
it more to my liking (e.g. mainstream widgets for Squeak, build tools for
GST or Bistro, etc.) or I have can use Python + GTK or wxWidgets or Jython
+ Swing out of the box, and just accept greater maintenance issues down
the road (e.g. debugging and modifying a running program is so easy in
Smalltalk, in Python it doesn't quite work right, even with tools I have
built to make it easier [posted to the Jython list]). While I haven't made
a big point of it, in the past, my choice of Python in the past has also
been motivated by the "contamination" issue I mentioned above as well. It
may well be the deciding factor once again, sadly -- ironic to not be able
to use and improve a wonderful thing you have experienced precisely
because you have experienced it.(*) :-(
Happy Solstice.
--Paul Fernhout
(*) Note: most people may not be as concerned about such a theoretical
"contamination" issue as I am, since obviously this is a major problem for
almost all Squeakers, and most likely for all the major developers on that
project. And, on a practical point, I can Agree with Alan Kay who
maintains that most copyright issues are not settled by any sort of logic
(more by jury emotion in reaction to vague or inconsistent laws) and so
there is at least some justification for ignoring *potential* problems
related to the edge of copyright. Still, I feel better avoiding even the
appearance of potential controversy of that sort (I navigate too many
oceans of controversy of other sorts, e.g. unschooling, transcending war
through sustainable development, designing self-replicating space
habitats, returning to a a gift economy, etc.. :-)
More information about the Edu-sig
mailing list