[plt-scheme] Scheme contradictions
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
learn.
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
separately.
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.