[plt-scheme] Scheme contradictions

From: Glenn Ambrose (glennambrose at hotmail.com)
Date: Tue May 2 21:05:25 EDT 2006

It is funny how one is tempted to write or talk about things not fully 
understood. I have given in to temptation and have writen about my 
observations which true or false are the observations of an outsider wanting 
to get in.

As a High School teacher I have had the thought that the internet is a fine 
tool to aid the learner. The plan was to make a site that: introduced the 
concepts, tested, gave feedback, allowed me to know what areas the students 
were having difficulties so that I knew to rework those pages and showed the 
relationship of one concept to another. So I started to learn HTML. Then I 
wanted to make it look presentable so I learned CSS, mathML. To do the 
testing, give feedback and get feedback I needed to learn: SQL, MySQL, PHP, 
Apache, RDF and a bit of Javascript. All this just to make a website and I 
will, no doubt, come across other languages and systems that I will have to 

Looking around on the net I discovered DrScheme. Here we have a server, 
servlets, continuations (don't understand but the concept sounds good), a 
way to present pages and connect to a database. All seems great. The 
language I like, despite what others might say I like the parentheses. The 
'(' to start and a ')' to finish; makes sense. Also to me it keeps the code 
neat and readable. The prefix notation, again makes sense, it places all the 
important information first and puts everything else into context. So 
basically for these reasons and others that I have learned about along with 
the near religious devotion that Scheme/Lisp programmers show have sold me.

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. I see a language like Ruby created by one 
guy in Japan already eclipsing Scheme with 25 years head start. Scheme is a 
language that seems made for the web but is unable to create a unified, 
concerted effort. In the other languages like Ruby, Python, PHP (all started 
by one person) a single unified community pops up and quickly there are lots 
of applications and documentation to help the learner. Looking on 
SourceForge I could hardly find a calculator that was written solely in 
Scheme. So looking at Scheme from the point of view of web-programming, an 
area of great interest for me and much of the computing world, the Scheme 
community is divided in it's effort. In this one area, there is: laml, 
WebIt, DrScheme's own x-expressions, Swindle (though apart of DrScheme is 
still different from the x-expressions), BRL. There are probable other 
methods out there but my question is why is there no effort to pool peoples 
time and effort and work towards one system that could provide more to 
everybody concerned?

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. 
Compare this to Logo, you start out drawing little pictures and writing 
small conversations you can have with the computer. Fun and interesting. 
Netlogo, make a landscape with a hundred little turtles that will run up the 
nearest hill, all in one sitting. Fun and interesting. Visual Basic, make a 
simple calculator, that looks like a calculator. Interesting. Scheme, write 
a series of fibbonacci numbers. Unless your name is Fibbonacci this isn't 
interesting. People would be willing to put up with a lot of boredom if 
there is a pot of gold at the end as learning Java demonstrates. There are 
so many different types applications that can be created with the language. 
Scheme has no pot of gold though I feel that there is one there to be found.

People seem to learn best when they are persuing a goal. As web-programming 
and games have such wide appeal why are these not used as vehicles for 
teaching Scheme. 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. More motivating don't you think. The code of the website or game 
could be preexisting for the student which as the student learns more about 
the language they will be able to taylor more and more of the website/game 
to there own wishes. There will also be a large stock of professionally 
written code that the student can model, read and learn from.

At the moment much of the documentation already out there assumes much from 
the user already. The documentation for Webit, PLT-web-server and such are 
not written for someone just learning and definately don't come with the 
hand holding that javascript, PHP or any other of the more popular languages 
come with. Scheme documentation is very terse. I realise that detailed 
documentation and tutorials would be very time consuming to produce but it 
also seems to be a difficulty of having everyone working alone and 

I am practically a blank slate where programming is concern so what i have 
written is just my uneducated observation. As an observation Scheme does 
strike me as a great language, a universal key of languages. So as not to 
critise without a solution I would like to help with documentation or in 
some way that a blank slate can help.

Posted on the users mailing list.