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