[plt-scheme] Scheme contradictions
> 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!