On 1/5/12 7:52 AM, "Liam Proven" <lproven at gmail.com> wrote:
[snip]
I have read the first few pages of The Little Schemer,
generally
hailed as the best introduction to Scheme there is, and I found it
completely incomprehensible - and I am a skilled computer professional
with around a quarter century of experience. If I can't follow it, I
really do not believe that a random person with neither interest or
aptitude for it will be able to.
And that statement goes to the heart of this conversation: once one has
been 'indoctrinated' into one paradigm it can be devilishly hard to wrap
one's head around another.
My first language was FORTRAN IV (on Hollerith cards), my second was BASIC
(again, on Hollerith cards, then an ASR33). When I learned C (from the
K&R book) I had the usual struggle with pointers until the 'moment of
enlightenment' after which I used them with no more thought than any other
construct. Later I was exposed to Prolog, again having a struggle to set
aside almost everything I'd learned to that point and being rewarded with
a new way to look at applying information technology to solve problems.
Lisp/Scheme was a similar personal evolution, and was enabled by exposure
to functional programming. FP seems to spawn a religious fervor, but
frankly so did OOP in the early days of C++ ("this will fix EVERYthing!"),
and fortunately I was able to (eventually) grasp the value of a new
paradigm without drinking the Kool-Aid. And I learned my first language
in the mid-1970s, but only 'got' Lisp/Scheme in the last couple of years.
These things don't necessarily happen overnight, but YMMV.
So I empathize with your discomfort with Scheme, but I disagree that your
experience validates the belief you hold that because you are not grokking
it, 'normal folks' can't/won't grok it. You are already part of a
distinct cohort: experienced users of information technology. How can you
map your experience onto the broader population? And while your knowledge
born of long tenure grants you many positive attributes in this field,
there are down sides - such as this one, that you look at Scheme through
the lens of your own experience and say, "that's just so wrong."
It would certainly make for bad [BASIC | FORTRAN | C/C++ | etc.] but once
you have the 'moment of enlightenment' it seems very consistent and
elegant. For example, I far prefer prefix or postfix notation to messy
infix notation that requires a table of operator precedence a page long!
My first Lisp text that made sense to me was one published by DEC, aimed
at experienced programmers. I switched to Scheme because, as I've said
before, I felt it was not as bloated and bowdlerized as so-called Common
Lisp. When I later picked up "Little Schemer" I found it interesting, but
a bit tedious at points, probably because of the challenge of overcoming
'normal' thinking about programming. :-) But I agree it's a good book
and can help one achieve literacy in the ways of Scheme.
So I think you or anyone else *can* learn to program in a Lisp-like
language and come to appreciate its value. Your addendum about that
person having "neither interest [n]or aptitude" is another matter
entirely. And I don't mean that unkindly: my daughter wants me to learn
to ice-skate?. -- Ian