That Other Use for Squeak
Mark Guzdial
guzdial at cc.gatech.edu
Mon Jul 3 14:32:03 UTC 2000
At 6:11 PM -0400 7/2/00, Paul Fernhout wrote:
>I've been thinking myself along the lines of using Python's
>indentational block structuring with Smalltalk's keywords, and a minimal
>of punctuation to create an easy reading notation. The key:word: syntax
>of Smalltalk is one of its most brilliant features IMHO, and the one
>most other language users do not appreciate.
>
>So in "Paultalk" :-) notation, for example, if I understood your
>requirements correctly:
I don't think that there's much evidence or experience showing that
Python-esque languages are REALLY any easier to learn/use than any
other Pascal, C, or HyperTalk. Syntax clearly plays some role (and
I'm very excited by the new alternative syntax work that Dan has
implemented!), but so does semantics, and we may have to challenge
some basic language structures and assumptions to make a language
that REALLY works.
- In general, our current kinds of explicit control flow are hard for
novices. T.R.G.Green did a wonderful set of experiments in the 80's
where he showed that things like "break" statements did wonders for
improving the usability of the language, and Elliot Soloway showed
that some radically changed while/repeat loops (e.g., conditional
test at the bottom of the loop) were also much better for some
problems. AppleScript tried to improve on HyperTalk by using some of
these lessons and reducing conditionals and looping.
- In the UK, Prolog was much more popular than here in the States,
and the reports I read suggested that students "got" it in ways that
US students were NOT getting Pascal and Logo. But I never heard of
any controlled studies, and it's certainly the case that Prolog has
died off in favor of more traditional languages. Prolog successfully
avoids lots of explicit looping and conditionals by building it into
the syntax and basic flow of the language.
- I just taught a workshop to ed tech researchers on log file
analysis, and the language that I introduced was AWK. Some of my
colleagues challenged me: "Why not teach Perl? It's Awk on
steroids!" But look at the syntax and semantics for Awk. Every line
has the form:
/pattern/ {action}
For each line in the input file(s), each pattern is compared, and if
there's a match, the action is evaluated. This is REALLY simple, and
most tasks can be completed without explicit looping or conditional
constructs.
I don't mean to imply that the basic concept of control flow is
beyond people -- rather, the current ways we express and teach it
don't seem to work. HyperCard/HyperTalk is a great example of
"almost." HyperCard succeeded, IMHO, because of the functionality it
provided, not because HyperTalk was all that easy to learn/use.
People were motivated to learn enough HyperTalk because they wanted
to build stacks. Now if you could combine the functionality of
HyperCard with a language that was REALLY easy to learn/use, you
could seriously change programming for the rest of us.
I do suggest (as in the last point, about AWK) that looking at
specific tasks and the languages that map well to those tasks may be
a good starting point. Maybe what we need is a single language with
a metaprogramming level that allows the language to be easily tuned
to specific tasks. That would mesh well with the evidence of people
like Bonnie Nardi on how people REALLY use things like spreadsheets
-- that most people never create spreadsheets, that some people
create spreadsheets but never write macros, and others write macros
for others. A good metaprogramming layer would allow the
syntax/semantics to be tuned for others to make their ad hoc
programming easier.
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
|