Smalltalk & Squeak featured on Slashdot

Bijan Parsia bparsia at email.unc.edu
Thu Apr 19 02:33:42 UTC 2001


As is traditional, I shall quibble with some of what Paul says :)

I do so more from a spirit of not being as sure as I infer Paul is in what
I want from Squeak, rather than in the spirit that Paul is dead
wrong. Paul may be dead wrong, but I shant argue that :)

[snip]
> In the case of this post, I think the student had numerous good points
> that Squeak should address.

Paul, I think you're being generous :) I don't think anything would make
that student happy (which is *fine*; there is no tweaking of Perl or C++
which would make me happy with them; I *don't want* to be happy with
them; they should not try to mold themselves to my sweet spot (though, if
there were things they could tweak to make me, if forced to use them,
less miserable, and it wouldn't wreck it for the aficiando's, then I would
request that they be so tweaked).

> (Obviously the student and I might disagree
> about the value of the Smalltalk keyword syntax which I love and
> consider a real strength of the language -- now, if I could just merge
> it with Python's indentational significance which I also love.)

I remind folks of Michael Stark's Golgi work, wherein he had an outline
based code pane. It was very slick. The "turnstiles" followed smalltalks
syntax, such that you might have:

|var1
 var2
 var3
"the above could be collapsed into the '|' and it didn't need to be
closed"
[self connected
whileTrue:
[self doSomething
 self checkSomething
 self checkItAgainAndMakeSure
"These would collapse itno the '[', etc."

(Something like that.)


> In part,
> this is exactly what Tom in "Re: Announcing to the world.." was
> concerned about -- the rough edges of Squeak make it unpleasant for many
> people to pick up -- especially people used to other systems. Because
> Squeak does not clearly win in every category(e.g. modularity, speed) it
> becomes a "compromise" to use it -- not a "no brainer".

I think the scare quotes around 'compromise' and 'no brainer' are
important.

> Here are some substantial issues raised by the student with my
> elaborations:
> 
> The student wrote:
> > The Squeak IDE is one of the most frustrating pieces of software 
> > I've ever had to use. 
> 
> I've taught computer programming to biology majors for several
> semesters, and I've definitely learned that the "listen to your users
> but ignore what they say" applies equally for students giving feedback
> on a course.

Moreso for students.

[snip]
> > Slow, 
> 
> Very true, depending on your machine.

Perhaps, more importantly, depending on how you structure your
program. Somethings are easy to write slow, right now. Putting text on the
screen seems to be a big slowdown (e.g., writing to the Transcript). Try
a loop writing each line of a file to the transcript in Squeak and in
Dolphin. *Huge* speed diff.

Of course, Dolphin only runs on Windows ;)

[snip]
> Also, the lack of modularity makes it hard to put in place an
> alternative faster GUI.

Is this true? Right now, nearly the same code works for two radically
different UIs (MVC and Morphic) for nearly all the development tools
(e.g., the PluggableText, etc. classes). 

[snip]
> > and bloated as all hell. 
> 
> Right on. We've gone from a base system that was several megabytes to
> one that is about twenty. There are endless extra classes in the system
> contributing to learner confusion.

And excitement! I kinda *like* having a big system. I like bouncing
around.

No to say that slim is bad, but sometimes big is beautiful :)
[snip]
>  > But good luck trying to turn it into a binary to 
> > distribute to your friends, because you can't! 
> 
> Absolutely correct.

No, slightly exaggerated. C'mon. You can pretty easily make it two
files. That's not bad at all. Granted, if you want to share a lil utility,
you may end up in shrinkage hell, but that's a different issue (actually,
that's the priori issue! :))

> And this is a big issue for many people. There is no
> one click make an EXE. You can ship the entire system but for hello
> world or a text manipulation program it takes up way too much space
> (again lack of modularity)

Er..see above :)

> and there is more than one file that need to
> go (at least the EXE and the image) and in the minimal case you will get
> complaints on startup. Obviously Perl and Python have this issue too
> (although Python can be "frozen" into an EXE with a script).

And java, and vb, and....

Not to say that it wouldn't be nice to have it otherwise, but the person
was reaching on this one :)
[snip]
> Obviously it is stinging to everyone involved with Squeak to get remarks
> like these (after 4+ years since release)

Er..well, I'm involved and I don't *feel* stung. The *actual* issues
raised (as opposed to the silliness, "I can't imagine..." "I can't see
how...") are well known and can be showstoppers or minor quirks depending
on a lot of factors.


> but these issues raised do
> exist and they are one reason Squeak has been less successful than it
> will be.

And being less popular (which I think is the real key) that it will be
isn't necessarily a problem ;)

[snip]
> I want a development environment for the power programmer, and perhaps
> so does that student, and Squeak still lacks in many of those areas (as
> useable as Squeak is for someone willing to put up with its limitations
> and use it for the things that Squeak does well right now).
[snip]

Here's an interesting case story:

I've written an irc bot, called the DiaWebLogBot. It's used to publish a
collaborative weblog at http://monkeyfist.com/DailyChurn. Everyone who
uses it loves it. It's a bit slow, the code is ugly, and it doesn't
autoreconnect when my connect flakes out. But *everyone* who uses it,
loves it.

Thus far, it's been cloned twice, once in Python, once in Perl. Neither is
as full featured (well, I've been dorking with it for over a year, so no
surprise), and niether is as easy, imho, to get at the guts.

The python is pretty clean python, so I've been modifying it for a new,
rdf based varient. I'm just totally suffering using IDLE. Scroll up,
scroll down, oops, open another file, scroll up, scroll down, switch
windows, cmd-b...d'oh!, doesn't work. Guess I use find. Oh, got to scroll
to the top of the file. YUCK!

Frigging stack trace drives me nuts. No *sorry*, that code you modified
has nothing to do with the object, start over. YUCK!

Time to hit the docs. Oh *that* module. But I still don't understand the
function! Where's the code. It's in some directory, in some file. Find the
file. Open the file. Scroll up, scroll down. BLARGH!

I'd love to fix this in Python, and it's perfectly possible to do so, if
only I had the time :)

But it *does* very easily run headless on Linux :)

Python 1, Squeak 1? :)

Oh, I also planned to do a bot in Prolog, but there I'll have to do the
irc library from scratch. Uber-blargh!

I intend to backport the Python work back to Squeak. I'm, in the end, not
sure if I actually gained anything by modifying the Python bot (I had
intended to use some modules but, d'oh, they were going to be *hell* to
rip apart sufficently to pop into the bot module. YUCK!)

Does this mean Python sucks? Well, yeah, it probably does ;) But if *I*
were posting to Slashdot, I think I'd mention its strengths, too ;)

But, then again, I wouldn't post to Slashdot :)

Cheers,
Bijan Parsia.







More information about the Squeak-dev mailing list