Scheme as a religion



As an avoid computer science student who hopes to attend to UC Berkeley
next fall, I started watching the Berkeley webcasts of 61A (taught by
Brian Harvey, based on the SICP book), and watched a few of the
original lectures by Abelson and Sussman available off of the mit site.
I also googled "Scheme" and "SICP" to see what comes up...and have come
to the conclusion that Scheme seems as much like a religion as a
language. The general concensus I get is that it is widely admired by
academics who seem to thoroughly enjoy criticizing the limitations of
other languages while extolling the virtues of Scheme, and not so
widely respected by and sometimes scoffed at those in the industry who
use commercial languages like C++ and Java.

I am torn somewhere in between the extremes, but the purpose of this
post is that there are some evangelical aspecs of Scheme that I don't
get, in that the concepts don't seem so novel to me. Of course, that
could be a function of the year (2005); if the concepts presented in
Scheme were once new, they aren't anymore. The first time I watched
"Citizen Kane" I didn't get what was so great about it; after taking a
film history course I could better appreciate that the film broke
several barriers. Now in 2005, those barriers don't exist, and so
without the history, some aspects don't seem very amazing (it was the
first film to use deep focus, for instance, which isn't new now.) A
similar metaphor may exist for Scheme.

To me, Scheme seems difficult to grok on first reading (or even second,
or third) comprehend by it's rule of relying so much on single
parenthesis. (Yes, I think the LISP nickname of "Lots of Irritating
Single Parenthesis" fits). It seems to me that there are scripting
languages that are easier to read and write that teach many of the same
concepts.

For instance, two of the concepts taught in Scheme are first-class
objects and recursion. Both of these are present in JavaScript which I
personally find much easier to use, because there are () and {}
available, each used for a different purposes, and explicit keywords
like "return" that specify what gets returned from a function, as
opposed to Scheme's implicit model (things get returned for being
listed last, but not always). Also, Scheme sometimes uses what I
consider "trick notation" to call a fuction/procedure, in that if you
add an extra set of parens around something, you call it as well as
define it, whereas in JavaScript the notation is more explicit with far
less room for confusion. Scheme backers defend the language by saying
"sure, it's hard to read sometimes, but look at the all of the things
it can do," pointing to things like first-class objects and tail
recursion. But I'm not convinced. Convince me; I haven't been
converted. It's not that I want to be converted (to being an
evangelical Schemer) -- it's that I want to understand why others are.

-----------------------------------

As a last note: not to evangelicize JavaScript either, there clearly
some areas for which JavaScript does not teach the same metaphors. The
only way to create linked lists, for instance, is to create your own
linked list data structures, whereas in Scheme, the whole weird car,
cdr, cadr terms can prepare the student for linked lists. But as to why
beginning programming students have to be exposed to terms like car,
cdr, cddar, caaddr, etc, I don't get that either. Please don't tell me
that those names are in the least way transparent or aid in
understanding. The nomenclature alone is a stumbling block to the
powerful concepts for which they stand.

.



Relevant Pages

  • Re: Scheme as a religion
    ... Only fifty years ago the idea of a programming language was ... programming languages and their implementations. ... similar to lisp in general and Scheme in particular --- what you ... Think about the literature and history hints I've given you ...
    (comp.lang.scheme)
  • Re: Scheme as a religion
    ... I'm a newcomer to Scheme. ... I started programming early, on Apple's Hypercard because my family had ... brand new C# had a consistency that I found lacked in other languages ... instance you can have lists of functions, or list of list of functions, ...
    (comp.lang.scheme)
  • Re: Scheme as a religion
    ... academics who seem to thoroughly enjoy criticizing the limitations of other languages while extolling the virtues of Scheme, and not so widely respected by and sometimes scoffed at those in the industry who use commercial languages like C++ and Java. ... Even some of the concepts which have since been adopted by other languages haven't always been properly implemented -- closures in Python are one example, and the arbitrary limitations on recursion in many languages is another. ... Javascript does have those, although their power is hampered by some other restrictions of Javascript, so they aren't as nearly as useful as they might otherwise be. ...
    (comp.lang.scheme)
  • no value in Scheme
    ... I can't honestly tell anybody to use advanced programming languages. ... It wouldn't be so bad if Scheme were industry standard, ... with the crappy inelegant C++ shit I already had to start with? ... entire computer industry is complete shit. ...
    (comp.lang.scheme)
  • Re: Scheme as a religion
    ... two of the concepts taught in Scheme are first-class ... Both of these are present in JavaScript which I ... and there's no tail recursion. ... languages are in the same league as Scheme as functional languages. ...
    (comp.lang.scheme)