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
|