This post originated from an RSS feed registered with Python Buzz
by Ian Bicking.
Original Post: Where Smalltalk Went Wrong
Feed Title: Ian Bicking
Feed URL: http://www.ianbicking.org/feeds/atom.xml
Feed Description: Thoughts on Python and Programming.
In a recent post, Christopher Petrilli speculates on `why people don't
get Smalltalk`__. This response remains only half-baked, but I'm
choosing to let it go anyway. To quote:
Also, it reminds me a bit of what happened when I worked on Zope
and the ZODB (Zope Object Database), which contained almost
everything originally for the system. People wanted to work on
things as though they were files. There were two reasons for this.
First, the tools sucked in Zope. A HTML textarea is not an
acceptable editor. This was eventually resolved with FTP and
WebDAV support. The second, though, was an innate distrust of the
object database for some reason. Even though it was an
append-only, transactional, recoverable, storage system, people
would rather store it in a brain-dead file system because they
felt it was "safer." Irrational, completely and totally, and much
of the same criticism is launched at the concept of system
"images" in Smalltalk.
I think it's wrong to underestimate the problems with Smalltalk's
system image and the ZODB. In fact, I'd say the image is perhaps the
biggest problem with Smalltalk.
Well, starting from causes, I think Smalltalk's insularity is its
greatest flaw. This is in part because Everything Is An Object, and
objects have fairly specific conventions. There's a considerable
barrier between The Rest Of The World and Smalltalk. It's not just
that the syntax looks weird to people -- though that doesn't help --
but it also looks weird to other programming languages. You can't
easily map C or other libraries into Smalltalk. You can't make
analogous interfaces to the interfaces found in other languages -- you
can't even make a freakin' function! Sure you can do everything you
need to without functions, but you can't directly map other system's
APIs onto Smalltalk syntax, which means you can't map people's past
programming experience, or their past programs. (It doesn't help
either that Smalltalk's OO nature encourages everything to be a
framework, instead of building mere libraries, but that's a topic for
a different day)
These could be resolved if someone really wanted to do so (though no
group of people seems to want it enough to effect the basic culture of
the language in order to break down that insularity of syntax). But
the image provides other problems. The image isn't strictly required
-- I believe `GNU Smalltalk`__ has no image, or at least got along
without one at one time, and the Smalltalk-ish Objective C has no
image. But the image has become an almost fundamental part of the
Smalltalk environment, and the environment is hard to disassociate
from Smalltalk itself. You can't write scripts for Smalltalk, except
for scripts that work in the Smalltalk environment (doIt kind of
scripts). You can't run Smalltalk from the command line or as a CGI
script. (This is true of Java too, but Java succeded despite this due
to extreme effort on Sun's part.) It's also hard to isolate a
"program" in Smalltalk -- it's all one big heap of code, you may have
added methods to Object, who knows what. This
customization/localization of the environment is something where
Python has successfully resisted, Ruby is backtracking on, while Perl
is commiting suicide to allow total customization based on Wall's
personal philosophy and that language's bizarre community.
I'm sure Smalltalk has tools that solve this too. But I think those
tools are basic prerequesites to a successful language, and I don't
know if the Smalltalk community has treated them as such. Many of
Smalltalk's tools seem to be so commercialized that it doesn't seem
like it matters much. Some happy Smalltalkers in the financial
community get to try all this stuff out, while the larger world
doesn't have access -- and so the rest of the world stopped caring. At
least the part of the world that was willing to pay attention to cool
technical stuff. The corporations that could shell out the cash aren't
what drives technology advancements, because they are too concerned
about risk, and anyway, corporations don't create things, only people
do.
Well, that's a long diatribe. And I feel like I have only just
begun. Anyway, I think Smalltalk is too perfect. Its ideas may one day
have their time. Maybe the idea of a "program" will go away some day
-- I personally would shed no tears if it did. But Smalltalk doesn't
offer us a path from here to there, and the world isn't willing to
jump all at once.