That Other Use for Squeak
Mark Guzdial
guzdial at cc.gatech.edu
Sun Jul 2 18:53:56 UTC 2000
All the discussion on the "Ship it with Squeak" and "Belling the cat"
threads has reminded me of my more favorite use for Squeak.
There are at least two uses for programming. The common one that
most people optimize for is building applications or other software
to sell. The other one is "ad hoc" programming, where you use
programming for yourself, perhaps for learning or maybe just
demonstrating ideas (the way people sketch today). (As people I
pester on the SqueakAudio list know, my current personal focus is
learning computer music with Squeak.) It's not at all clear that
these are similar kinds of activities or even if you'd want to use
the same language for both. For the former use, you worry about code
repositories, adequate documentation of your interfaces, and well
factored code. For the latter...Ha! Who's going to see my code? I'm
throwing it away as fast as I write it!
More seriously, the issues of how one creates an expressive,
easy-to-learn, and widely-applicable programming language for the
latter kind of use are not explored much nowadays. Those issues used
to be hot, and programming language experts used to explore different
languages that helped people in different ways. Nowadays, efficiency
and provability seem to have taken over programming language
conferences, which are much more former-use issues than latter-use
issues. Maybe because former-use has more economic benefits than
latter-use...until you get close. Then the common-daily-use market
is MUCH larger than the applications market.
Andy diSessa, a longtime proponent of "Computing Literacy," tells a
great story about what it takes to make programming really take off
in the common-daily-use sense in his book "Changing Minds." Newton's
intellectual achievement of inventing calculus to demonstrate his
scientific points about motion was astounding. But Leibnitz invented
calculus at about the same time, and it's his notation (the dx/dt
stuff) that we use today. Why? Well, Leibnitz's notation is easier
to use and it makes expressing some hard theorems almost simple. But
does it matter all that much? It took almost two hundred years for
Calculus to become commonplace part of the curriculum. It was in the
early part of the 1900's that teachers tried to teach Calculus to
undergrads, and succeeded enough that later classes assumed Calculus
knowledge: it became infrastructural. But what if, Andy asks,
Calculus was 10% harder? What if it was harder to teach it and
people were less successful learning it? Would it have still become
commonplace?
It's an interesting conjecture, but I'm not sure that I agree with
it. Andy is using the story to argue that "Once we get the right
notation, perhaps programming WILL become commonplace." Yet, it's
clear that we are hopelessly unsuccessful teaching programming, and
we still require a great many undergrads to study programming.
(Everyone at Georgia Tech must take a first course in Scheme.) The
fact that we are hopelessly unsuccessful teaching programming is
quite well supported in research and experience. Only about 30% of
the students who come out of a college-level intro to programming
class know how to write a program to average positive integers,
avoiding the negative ones until a flag value comes in. Only about
50% of the CS majors in their Sophomore year can write that one
without screwing up the negative or flag test. (If you're a teacher,
I challenge you to try this or a similar test on your own students!
We just did at Tech last year, and we're all still reeling from the
results.)
The part I completely agree with Andy on is that common programming
languages are nowhere easy enough to learn yet, and I hope that the
right notation does lead to common-daily-use. And while I applaud
the efforts to come up with a Squeak that's great to write
applications in (and my group would certainly use and perhaps
contribute to such an effort), it's the potential for using Squeak
toward that common-daily-use that I find so intriguing and daunting.
Mark
--------------------------
Mark Guzdial : Georgia Tech : College of Computing : Atlanta, GA 30332-0280
Associate Professor - Learning Sciences & Technologies.
Collaborative Software Lab - http://coweb.cc.gatech.edu/csl/
(404) 894-5618 : Fax (404) 894-0673 : guzdial at cc.gatech.edu
http://www.cc.gatech.edu/gvu/people/Faculty/Mark.Guzdial.html
More information about the Squeak-dev
mailing list
|