Documentation... (was Re: Article in Wired)

Andrew C. Greenberg werdna at gate.net
Thu Jun 10 13:03:47 UTC 1999


>Documentation: How do I learn this thing?
>My daughter has expressed an interest in learning how to program. 
>Since we're taking a long trip this summer, we decided to take our 
>Mac on the road with us and learn to program. Currently, we're 
>considering Squeak or Python (no language wars, just I insist my 
>daughter's first language be cross platform and Squeak/Python are 
>two languages which interest me).

Why have "cross platform" as a requirement for a programming 
language?  And what is meant by that?  Clearly C is available 
everywhere.  Java is available everywhere, and both are FAR better 
documented on-line and off, than either of your examples.

Python isn't really cross-python once you get to trying to build real 
applications with user interfaces.  Tkinter doesn't behave 
cross-platforms, and doesn't much behave at all on the Mac without 
careful (and undocumented) understanding of its internals.  The 
up-and-coming GUI packages in Python don't support it.

I was working on a user-interface intensive program for my Wife's 
birthday.  Hacking Python then for over a year, I tried building the 
app in Python for several months -- got it working, but the result 
was a slow memory-hogging, awkward and intermittently crashy mess.  I 
moved the project to JPython, which worked far better (and was 
decidedly more fun to work in), got it working, but while not as 
unstable, its speed and memory requirements were unacceptable for my 
purposes (to deliver a spouse-friendly birthday application).  (I 
understand the latest JPython is much better, but haven't tried it).

I learned about Squeak in November and had a working final in time 
for her Birthday in about six weeks.  (Since her birthday was 
end-of-december, it had to be.)   The final result was a puzzle game 
and game editor complete with graphics, sound and music.

Here's the neat thing -- I could work on this thing ANYWHERE.  The 
program and the entire development system ran PIXEL-FOR-PIXEL, 
SOUND-FOR-SOUND identical on my little iMac at home and my PC at 
work.  The project would never have been completed on time and with 
its present quality had I not discovered Squeak.

Despite years of Java hype, I had never experienced a true 
write-once, run-anywhere App.  Only Disney has delivered this -- and 
they did it for free.


>Enter the 'killer app.' I was recently referenced to a product 
>called Zope <http://www.zope.org>, a freeware Application Server 
>that implements, among other things, a protocol called WebDAV 
><http://www.webdav.org> for Distributed Authoring and Versioning. 
>Turns out the product is written completely in Python and, to use it 
>fully you need to learn Python. So, my decision about whether or not 
>to learn that language is made for me. Time to hit the O'Reilly 
>books if I want access to this interesting product.

I'm not sure what facility to support a Web server has to do with 
making a language suitable for teaching one's daughter to program.  I 
am quite familiar with Zope, but was amused at the irony that, for 
all the "virtue" of this protocol, it hasn't helped www.webdav.org 
keep its website running (at least as of this morning).  Of course, 
if learning the protocol were interesting and important, you could 
just build something for yourself by reusing the http server that is 
built into the squeak image.

You can run a highly flexible web server directly from the core 
squeak implementation.  Try doing that with Python.

In short, I agree that Zope is cool.  So is Apache, by the way.  But 
neither of these facts informs the question how to teach one's 
daughter to program.  Zope and Python have excellent on-line 
documentation, but the O'Reilly books are awful (except as paper 
references and cookbooks for hints) as compared to the Smalltalk 
books.

There is no doubt that Guido's reference manual is superior to 
virtually anything out for Squeak on-line.  That will take time.  It 
took a very long time for Squeak.

And, by the way, there is a wealth of documentation available for 
Squeak -- its just that, at present, the coverage is spotty and you 
do have to mine for it.  that, too, will take time.

Guido hasn't evolved Python very much in the last year or so -- its 
been a highly stable, non-experimental system for awhile.  Squeak, in 
contrast, is not yet at that stage -- its creators are still tweaking 
it as I write this.  That is making it more fun for me, but you may 
need less fun and more stability.

If you need the latter now, clearly you will be happier with Python 
-- although more traditional environents provide far better stability 
with greater flexibility for building "real" applications.

I will say this, however.  The interactive and graphical capabilities 
of the Squeak environment make it, IMHO, a far mor attractive way to 
get the attention of your daughter.  Without agonizing over details 
of building a window, she can immediately start drawing all over the 
screen.

I have been trying to get my 8-year old son interested for some time, 
but to no avail.  I thought the interactive nature of Python would 
get his attention, but it really didn't.  On the other hand, he has 
been playing around with Squeak quite a bit.  I attribute much of 
this to the ready and interactive access to sound and graphics, which 
Python (at least as of the end of last year), really didn't have 
going for it.

Every language has its own virtues, but I'm not sure that Raymond's 
very interesting post greatly informs our documentation priorities, 
for the reasons that his criteria for selecting languages didn't have 
much to do with what we are presently trying to accomplish in this 
thread.

Perhaps someone wants to do a Squeak implementation of Zope.  How 
about Raymond?





More information about the Squeak-dev mailing list