On 5 January 2012 16:51, Ian King <IanK at vulcan.com> wrote:
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
All right, some interesting points there.
But, by way of seeking clarification - well, let's put it this way. I
am interested and very curious about Lisp, Scheme, Lisp Machines and
so on. Indeed I am, as a result of my reading, trying to research and
write an article on the history of Lisp Machines.
And yet, despite reading acres about this, I have yet to find *any*
coherent nonspecialist texts, guides, tutorials or explanations about
these languages.
For instance, the lambda calculus. What is it? What does it do, what
is it for, why is it special?
Closures: again, I have yet to find a readable, comprehensible
explanation of what they are, what they are good for, why they are
powerful and what strengths they confer onto a programming language.
If the teaching & reference materials that I have found so far are
unable to convey these core concepts, then there would seem to be two
possible conclusions:
[a] /all/ the materials that I've been able to find are extremely
poor, even the ones that are more or less universally agreed to be
very good
or
[b] these are complex, difficult concepts and a massive amount of
back-knowledge is necessary to understand it.
I would *REALLY* like and hugely value any pointers, ideally web links
but print references would do as well, as to these concepts.
But are there other possible explanations that I have missed? That
these things are easy but all the texts are rubbish?
--
Liam Proven ? Profile:
http://lproven.livejournal.com/profile
Email: lproven at cix.co.uk ? GMail/G+/Twitter/Flickr/Facebook: lproven
MSN: lproven at
hotmail.com ? Skype/AIM/Yahoo/LinkedIn: liamproven
Tel: +44 20-8685-0498 ? Cell: +44 7939-087884