Re: Scheme as a religion
- From: "Tom Lord" <lord@xxxxxxx>
- Date: 3 Jan 2006 20:53:54 -0800
To the other replies you are getting I'll add some hacker lore
and historic perspective:
Only fifty years ago the idea of a programming language was
still something of a novelty to most people working with
computers. It was an idea that had to be invented and that
didn't make much practical sense until machines became powerful
enough. It was back then that lisp was invented, initially as a
paper-and-pen notation for reasoning about programs (and
initially not using the parenthesis syntax you see today). See:
http://citeseer.ist.psu.edu/steele93evolution.html
and seek out the McCarthey paper it cites.
As you'll learn, being an "avoid student of computer science" (I
love that typo), we nowadays have a fairly systematic and in
some areas very deep understanding about the nature of
programming languages and their implementations. You are right
that there is a lot in Javascript and other languages that is
similar to lisp in general and Scheme in particular --- what you
will hopefully learn over time is how to understand and describe
the similarties and differences in very concise ways, focussing
on "deep stuff". But I'm not here to dish the academic lessons
-- I'm just giving you a hacker map. Oh, speaking of which:
grab yourself a copy of the Scheme standard and note the
appendix contain a semantic definition of the language.
Understanding why people think that that appendix is (at least
historically) important -- tracing down and reading some of the
original materials that relate to it -- can give you a lot of
perspective. If you venture into Church, meditate a bit about
Strachey, gosh rest his soul. Great Scott, man, these folks
drew the first maps.
Anyway, a bit over a scant 30 years ago there was an explosion
both in the freedom researchers had to explore the possibilities
of programming languages and the math tools they had to
understand where they were going. A mere 30 years ago --
imagine that! Heck, I'm older than that.
Because everything was so new every research institution was
pretty much on its own. There was no "download GCC" let alone
"pick one of N browsers that contain a Javascript interpreter".
Stanford had its programming tools. MIT had its. Abstractly
speaking, this era of programming languages was like the western
expansion of the U.S. in the 19th century: vast territory wide
open to pioneers. When a sub-field of math is in that stage you
can expect fundamentals to be discovered and discovered they
were. This is where Scheme enters the picture and, bringing it,
a very gifted writer.
Guy Steele, who you may have heard of from Java fame, was a grad
student at MIT in the early seventies. He was just down the
hall from and interacting with --- well, half the damn world as
far as computer science is concerned. Glomming around around in
recently exploding language-theory space, immersed in the
well-grounded practicality of a lab that maintained pretty much
its entire stack of software tools, in search of a thesis having
something to do with the hot topic of compiler construction --
but wanting (one presumes) to get the hell out of dodge without
having to implement all of PL/1 -- Steele took the lisp of the
time and some ideas from more disciplined languages of the time,
looked for simplifications, and came up with Scheme (with a
little help from his advisor, et al.).
What made Scheme so interesting, back then? A number of things:
One thing not to ignore is Steele's thesis, available at a
library near you. Make like a bunny and go read a copy -- it's
fun. If the library is closed when you get there, do a lap in
the meantime, Frenchy. Maybe that's a load.
Steele showed how a Scheme could be reduced to a very small core
of basic constructs and, thus reduced, could be well treated by
an optimizing compiler. He was worried about how to achieve
parsimony in a compiler -- to make it a human-scale program --
and he found a neat trick that explained why function calls and
goto were more similar than different. Reading the old thing
won't lead you to the forefront of modern compiler construction
(and, indeed, there are more efficient routes to learning that
material) but -- damn it's nicely written and invites much idle
contemplation. If you look around you might even find a copy of
his compiler on-line (it take some work to run it in a modern
scheme, it's slow as heck, it's a bit buggy, and I hope for your
sake you've seen cleaner code -- still, like reading Chaucer for
English students, it's a good exercise). It's not a good work
to read to learn any major bit of CS (though, at your stage,
you'll pick up many minor bits and a general attitude). It's a
good work to read to learn a bit about being an intellectual.
Of course, while you're rummaging through the stacks, you better
go read the "lambda the ultimate...." papers. There's enough
on-line about these already that that's all I'll say.
Scheme seems, from my perspective, to have startled the people
around it with its elegant simplicity combined with the
seemingly fundamental notes it struck. Let us know when you
grok how Scheme relates to something called "Hewitt's Actors
Model". Talk about programming patterns....
You asked about "Scheme as religion"? That's where it started
-- it's discovery/invention struck a really deep note. Nobody
expected that. 14 years after it was written Steele's *thesis*
was still being handed around in the hacker undergound as a work
of art. You'll eventually understand how remarkable it is that
anybody bothers to read a thesis that many years later, let
alone pass it along to friends in the manner one might pass
along an obscure Hendrix bootleg. (Oh, speaking of Hendrix:
avoid "Tiny C" except for comparison purposes.)
So: first approximation -- yeah, Scheme is nothing special.
Many modern languages are informed by it. Some of its mystique
is just echoes from history because, in the early days, Scheme
was pretty startling. The same parsimony that made it so
interesing back then makes it a handy vehicle for some
contemporary (or nearly so) researchers. It also as
B.H. remarks (I'm taking his word for this) makes it an
efficient vehicle for teaching Big Ideas.
Lemme change gears a bit and shift away from historic narrative
for two last points:
1) GET OFF YOUR PARENTHESIS PHOBIA AND LEARN EMACS. No, knowing
how to move the cursor around doesn't count as knowing Emacs --
that counts as knowing how to use Emacs as if it were VI.
Look, yr program source texts represent trees. Parens make it
really simple for your text editor to perform tree transforms.
Learn emacs really well. Spend 6m on it. Learn the lisp modes.
Ok, sure -- there are two valid points of view here. Read Larry
Wall on why Perl syntax is so cool for the other one. He's not
wrong but, really, lisp syntax is a heck of a lot more human
friendly than you might realize at first glance. There are few
things quite as pathetic as watching a programmer who doesn't
really get emacs try to edit lisp code, though.
2) Let's talk about quality.
What separates the true scheme hackers from most (not all)
other hackers is a deep care for quality.
Go read "Zen and the Art of Motorcycle Repair". It's a
terrible book. It's heavy handed -- pretentious even. It's
dull. Where it reaches for hights it sinks to lows and is
basically trite. It has exactly one redeeming virtue and,
alas, it's a big virtue: it'll give you a sense of what some
of us righteously and appropriately mean when we toss around
the word "quality". In tht regard, it'll help you to
appropriately think about most commercial programming efforts
(including the quasi-commercial bulk of the so-called "FOSS
community") as the work of irresponsible, insane bozos. Get
a grip on quality. Aim for a bike you can Own.
Think about the literature and history hints I've given you
above in that context -- in the context of care for quality.
Lemme add the word "craft".
Lemme add the phrase "human scale".
Do with those what you will.
Scheme is a big ball of mud but, with these hints, you can
start to grok why this particular mud smells so good to some
of us. (Plus, you can start to read all the *later* and
often very interesting Scheme literature I haven't given you
hints about.)
-t
.
- Follow-Ups:
- Re: Scheme as a religion
- From: H.
- Re: Scheme as a religion
- From: philrand
- Re: Scheme as a religion
- References:
- Scheme as a religion
- From: H.
- Scheme as a religion
- Prev by Date: Re: cons discussion from a newbie
- Next by Date: Re: Scheme as a religion
- Previous by thread: Re: Scheme as a religion
- Next by thread: Re: Scheme as a religion
- Index(es):
Relevant Pages
|