Smalltalk & Squeak featured on Slashdot
Richard A. O'Keefe
ok at atlas.otago.ac.nz
Thu Apr 19 05:41:26 UTC 2001
The student wrote:
>>> The Squeak IDE is one of the most frustrating pieces of software
>>> I've ever had to use.
Compared with what, I wonder? I've been using computers since 1974
and GUIs since 1984. Windows gives me screaming fits from frustration.
MacOS makes sense, but Inside Macintosh made Squeak documentation look
good. Metrowerks is a pain. I once spent a couple of hours trying to
write Hello World in IBM's Visual Age for C++ and failed. (Maybe a
printed manual would have helped...) I use Sun's Workshop moderately
I have to say that the Squeak IDE is a *dream* for a programmer to use.
Oh, I've got a list of about half a dozen things I'd like, but the
Refactoring Browser does most of them (judging from the description),
and when I finally decide I want them badly enough I'll write them myself.
(Like I now have a "Preferences makeHaloIconsLetters" method that puts
letters in the handles. Needs a bit of tweaking before I could think of
releasing it, but works well enough to satisfy me.)
Of course, it helps to have the old coloured books and LaLonde&thingy
and to be willing to try something new...
The student also wrote:
>>> and bloated as all hell.
to which Paul Fernhout replied:
>> 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 Bijan Parsia responded:
> And excitement! I kinda *like* having a big system. I like bouncing
What is "Bloat"? I would say that a piece of software is bloated if it
does in 1MB what could be done in 2KB. I would NOT say that a piece of
software is bloated simply because it takes a lot of space; perhaps the
space is used to good effect to provide useful services.
Squeak 3.0.1 has a 9MB image file. Nine, not twenty. Hey, 55% of the
bloat trimmed away with a single glance!
Using MajorShrinkFor3.0.cs, the image can be slimmed down to 888K.
(I know because I tried it.) The VM and shrunk image together come to
less than 2MB. I don't call that bloated.
So what we *actually* have in Squeak is a compact core (by today's standards)
plus about 8MB of compiled library code.
Is an 8MB library "bloat"? Well, compared with *what*?
How about Java? The 1.2 JDK for Sparc/Solaris has (and I have just
measured this) 10.5MB of .class files packed up in .jars. This
corresponds to 20.6MB of sources in /usr/java1.2/src.jar.
The 3.4 release of Quintus Prolog takes 41MB of disc space.
About 0.5MB for the Emacs interface (call it the IDE),
7.2 MB of documentation in Postscript form, 0.8 MB of demos,
2.6 MB of documentation in plain text form, 1.2 MB "VM",
4.3 MB of library, 5.1MB "image", 3.3 MB GUI toolkit (including
on-line help and demos), other stuff, including a non-Emacs GUI IDE.
SICStus Prolog 3.8.4: 100MB of disc. (Also includes book-size documentation
in several formats.)
clisp-2000-03-06 (unpacked but not installed): 18 MB of disc.
Clean 1.3 (lazy functional, Haskellish): 12 MB of disc.
Erlang 4.7.1 (includes copious documentation in several formats): 189 MB.
Nope, Squeak is about the usual size for a freely available programming
language and environment. It could still be bloated, IF a significant
fraction of the stuff in the library were useless or redundant.
There's a lot of stuff in Squeak that's irrelevant to *me*, but every time
I start thinking "this is bloat" I think of a past student who would have
been given a big leg up in a project if they had known about it.
Bijan Parsia wrote:
> Not to say that slim is bad, but sometimes big is beautiful :)
Size shmize. A 1MB program can be bloated. An 8MB program can be slim.
What matters is whether what you get is worth the disc/memory you pay for it.
There's an important difference between something like Erlang (free
concurrent/distributed functional programming language with a large
Open Telecom Platform library including things like CORBA, ASN.1, SNMP,
Web Server, GUI kit, replicated distributed database (not interface,
implementation), and Squeak. That's the programming environment.
Erlang software is made of modules, and the system doesn't know anything
about a module until it's loaded, so you can't use "reflective" tools
to *find* modules. You have to rely on PDF, HTML, or UNIX man-page
documentation, and poking around with Emacs.
Putting everything in the Squeak image *adds value for BEGINNERS*
because everything is findable.
More information about the Squeak-dev