[plt-scheme] Scheme contradictions

From: Danny Yoo (dyoo at hkn.eecs.berkeley.edu)
Date: Wed May 3 02:18:13 EDT 2006

> Here now is the contradiction. A programming language called Scheme yet 
> there seems little scheme as a term refering to a goal there. I look 
> around and I see alot of people each with a different implimentation 
> pretty much repeating the work of each other.

Hi Glenn,

But this is not a new problem.  One could also flip this on its head, and 
say that Perl reinvents awk and sed, or Python reinvents Perl, or Ruby 
reinvents Python and Perl.  I don't yet see what logical "contradiction" 
you're refering to.  People like reinventing the wheel.


> I see a language like Ruby created by one guy in Japan already eclipsing 
> Scheme with 25 years head start.

That's understating things.  Matz didn't write Ruby and all the support 
libraries and frameworks by himself.  It's certainly not just one heroic 
programmer working alone.

You are comparing the popularity of languages, the mindshare that one 
language has vs others.  There might be something to what you are saying, 
though.  The Scheme language itself is simple enough for a single 
programmer to reimplement.  (Perhaps not well, but one could do it.)

But for someone to reimplement something like full Python or Ruby or Perl, 
for example, it seems to require a tremendous team effort.  Look at recent 
efforts at reimplementation, such as PyPy or Jython or JRuby: it's not 
just solitary person working alone.  Perhaps people who by necessity have 
to cooperate can eclipse a single person who is coasting.  Perhaps a 
"Worse is Better" phenomena is going on.  I'm not sure.


> When it comes to learning the language it is very difficult outside of a 
> classroom environment. There are SICP and HtDP but taken outside of a 
> classroom setting they take a great deal of determination to get 
> through.

I totally agree with you here.  But there are a lot of worthwhile things 
that require determination to learn.  Literacy is hard too; it's also very 
difficult to learn how to read without the support of a community.

Learning doesn't have to be in the classroom.  I think the key is to 
foster communities of people who teach each other how to program, a-la a 
writers' workshop approach.  We can look concretely at the tutoring 
communities around Perl to see what those folks are doing.

     http://learn.perl.org/
     http://www.perlmonks.org/

So perhaps the larger Scheme community might try to emulate that!  I think 
that's what something like the Schematics Cookbook could lead towards.

     http://schemecookbook.org/

But let's not say that all the other languages out there are inherently 
easy to learn; that's a silliness perpetuated by book publishers who love 
to use demeaning titles like "Programming for Utterly Hopeless Morons". 
I do tutoring for Python, and I know that learning to program well in 
Python --- in any language --- is a hard thing to do.


You bring up Logo as an easy-to-learn language that deals with turtles. 
You may be interested in "Computer Science, Logo Style":

     http://www.cs.berkeley.edu/~bh/v1-toc2.html

No turtles in sight.  There is actual intellectual content in Logo that 
you may not be aware of, and that content is just as challenging to master 
as in any other good language.  The point is that it may not be the 
difficulty of the language you're fighting: it might actually be the 
actual meaty (or gluteny, if you're vegetarian) concepts of programming.



> Students will be able to walk away from the course with either an 
> interactive website or a game instead of a series of fibonacci numbers.

Hold.  Have you even looked at "How to Design Programs"?  Really read 
though it: don't just look at the table of contents.

     http://www.htdp.org/

Take a critical look at it: don't just assume that all it talks about is 
Fibonacci numbers, or that it even mentions them.  (In fact, I can't even 
find Fibonacci numbers in the index, and my theory is that the authors 
have anticipated your complaint and have deliberately omitted it out of 
principle.)  And of the first examples in HtDP, some deal with wages and 
theatre prices.  I can't think of anything more motivating.  *grin*

Seriously, it really sounds like you're speaking without taking a cursory 
look at HtDP.  Try working through it honestly: it's actually a very good 
textbook.  You might also be interested in the paper "The Structure and 
Interpretation of the Computer Science Curriculum" which anticipates a lot 
of what you're saying:

http://www.cs.brown.edu/~sk/Publications/Papers/Published/fffk-htdp-vs-sicp/

The complaint you have is not one that's tied to Scheme: it's one tied to 
a pedagogy that's independent of programming language.  Concretely, one 
can apply the same pedagogy that concentrating on "irrelevant" problems in 
any language:

     http://mail.python.org/pipermail/tutor/2006-April/046304.html

Sounds similar, right?  It has nothing to do with language: it has to do 
with a particular teaching method.  I don't like Fibonacci either. 
*grin*


Best of wishes!


Posted on the users mailing list.