From: Nicolas Neuss on
Nick Keighley <nick_keighley_nospam(a)hotmail.com> writes:

>>�(Also the
>> �difference in accessibility to Scheme or Python is not large, IMO.)
>
> having learnt both of those... Good beginners books seem to be thin on
> the ground for Common Lisp. This may not actually be true but finding
> scheme and python starter books is much easier.

Yes, it is somewhat true, there is nothing like SICP or HTDP for CL (PCL
is directed more to the programmer experienced in other languages). But
I find it a unfair to blame CL as being hard for beginners when it is
just a little more complicated than Scheme. At least, I think one could
rather well transfer the SICP approach to CL. I'm even thinking about
doing exactly that for a 2-hours-a-week course this summer.

>> 3. Where it does not, there are either important reasons, or you can
>> � �easily adapt it to your needs.
>
> Lisp may be wonderful but beginner friendly it is not.

Compared with what?

> But maybe I lack taste.

:-)

Nicolas
>
> --
> Nick Keighley
From: Thomas A. Russ on
Duane Rettig <duane(a)franz.com> writes:

> On Jan 8, 10:30��am, Ron Garret <rNOSPA...(a)flownet.com> wrote:
> > In article <87y6k87q3e....(a)ma-patru.mathematik.uni-karlsruhe.de>,
> > �Nicolas Neuss <lastn...(a)math.uni-karlsruhe.de> wrote:
> >
> >
>
> > > 2. It does cater to beginners at least as much as the very popular
> > > � �languages C or Java, and surely much more than C++. ��(Also the
> > > � �difference in accessibility to Scheme or Python is not large, IMO.)
>
> This depends very much on what group of beginners you're talking
> about. Lisp in general is not forgiving of anyone who approaches it
> from a background of preconceptions about what constitutes a
> programming language (preconceptions that are usually gained from
> learning and perhaps even becoming an expert in other languages). For
> this group of Lisp beginners, it requires a suspension of knowledge,
> or even an un-learning, in order to learn Lisp as it was meant to be
> learned.

I recall hearing from the guys teaching the Scheme course at MIT
(Sussman & Abelson) that high school students how had NOT had any
previous programming experience had an easier time with the class,
especially at the beginning. It was all of the work of unlearning the
other ideas that made those with some exposure to programming have a
difficult time adjusting.

So, I agree that there is an additional threshold to be overcome if you
have deep-seated and strongly held ideas about how programming languages
have to be and act. [Remember the big flamefest a few months back?].

Now there is certainly a very strong reaction to a (hopefully small)
subset of beginners who show up in this newsgroup with arrogant views on
how a language should be and end up having difficulty with lisp. I
think a lot of the experts find an attitude of "knowing how it
should or must be" to be particularly galling. Especially since most of
the experts have experience is quite a wide variety of languages.
Generally much more than the some of the "critics" who post here. So it
sometimes gets tiresome to be lectured by the ignorant who are often
unaware of their ignorance -- but too arrogant to recognize this.

But I can imagine that the reaction of the experts (which sometimes
includes me) can be a bit off-putting. But I don't really know of other
newsgroups where you have the same level of participation, particularly
by some people (not including me) who were deeply involved in the
design, implementation and standardization of Common Lisp or who are the
builders of major extensions of their own.

On the other hand, there is also a huge amount of effort that these same
experts will expend (often to Kenny's amusement) when the approach is
one that demonstrates a real interest in learning and a willingness to
listen to different ways of approaching a problem with an open mind.

--
Thomas A. Russ, USC/Information Sciences Institute
From: Kaz Kylheku on
On 2010-01-11, Thomas A. Russ <tar(a)sevak.isi.edu> wrote:
> Duane Rettig <duane(a)franz.com> writes:
>
>> On Jan 8, 10:30��am, Ron Garret <rNOSPA...(a)flownet.com> wrote:
>> > In article <87y6k87q3e....(a)ma-patru.mathematik.uni-karlsruhe.de>,
>> > �Nicolas Neuss <lastn...(a)math.uni-karlsruhe.de> wrote:
>> >
>> >
>>
>> > > 2. It does cater to beginners at least as much as the very popular
>> > > � �languages C or Java, and surely much more than C++. ��(Also the
>> > > � �difference in accessibility to Scheme or Python is not large, IMO.)
>>
>> This depends very much on what group of beginners you're talking
>> about. Lisp in general is not forgiving of anyone who approaches it
>> from a background of preconceptions about what constitutes a
>> programming language (preconceptions that are usually gained from
>> learning and perhaps even becoming an expert in other languages). For
>> this group of Lisp beginners, it requires a suspension of knowledge,
>> or even an un-learning, in order to learn Lisp as it was meant to be
>> learned.
>
> I recall hearing from the guys teaching the Scheme course at MIT
> (Sussman & Abelson) that high school students how had NOT had any
> previous programming experience had an easier time with the class,
> especially at the beginning.

Which implies that this was less so away when moving away from the beginning.

> It was all of the work of unlearning the
> other ideas that made those with some exposure to programming have a
> difficult time adjusting.

You never unlearn correct ideas; but you have to integrate new concepts with
the old, valid ideas, which have to be retained too. This is difficult if the
newly presented concepts are very similar, but critically different from the
previously learned ones. (E.g. Ranschburg effect: similarity interferes with
memorization).

People want a short cut when they are learning something new. They want to
relate it to something previously learned by means of some clever little
summary of differences. A lot of the time this works and does save time and
effort, and even reinforces knowledge.

But two complex spaces can be different from each other in ways such that the
``difference space'' between them at least as complex as either of the two
spaces; so the hopeful learning strategy of discovering a small summary of the
differences between known and unknown to save time and memory space does not
always work. A fish is just like a bicycle, except that the tail of the fish
is removed, and replaced by a rear wheel, the gills become handle-bars, the fin
becomes a seat, the body becomes a frame, etc. Oops!

Now add to that the problem of the spaces also being very similar at the same
time, which is a source of confusion; one programming language type and another
are not like a bicycle and fish, but maybe like a mollusk and a fish.
Understanding a mollusk as a set of differences from a fish may seem less silly
than understanding a bicycle as a set of differences form a fish, but
nevertheless, it's not so hot an idea. I mean if you are a fish expert, but
resort to understanding a mollusk by transforming every mollusk structure into
something inside a fish which loosely corresponds to it, and every some mollusk
process into some similar process going on inside a fish, and then transport
the fish-based reasoning into the mollusk space, you're not being a very clever
or effective biologist. Your undiscovered talent clearly lies in the computer
sciences.

Smart people realize when a shortcut learning strategy isn't working; they tune
in to the fine details and realize, gee, this superficial similar thing is
really different in so many little ways, it's really better to put much of it
into a different mental compartment. They ``reboot'' the learning process and
make progress.

Others look for an alternative shortcut in reductionism: find some lower level
which seems to unite the concepts. A fish and mollusk are both a mass of cells
performing respiration. Aha! Saved from the discomfort of actually learning
the mollusk. ``I'm an expert in cellular structure and function, plus expert
in fish. Why should I know anything about mollusks? They just more or less
implement the same thing as a fish, which I understand, from the lower-level
blocks, which I also understand. How can I possibly not understand mollusks?
With what I know, I'm practically a mollusk expert. Ask me anything! Mollusk
reproduction? Sure, here is how it should and should not work, based on
successful fish reproduction.''

> So, I agree that there is an additional threshold to be overcome if you
> have deep-seated and strongly held ideas about how programming languages
> have to be and act. [Remember the big flamefest a few months back?].

It's futile to try to remember remember every single flamefest; anything more
than one month old recedes into one big inferno.
From: Madhu on

* (Thomas A. Russ) <ymid41g4493.fsf(a)blackcat.isi.edu> :
Wrote on 11 Jan 2010 15:21:28 -0800:

|> Lisp in general is not forgiving of anyone who approaches it from a
|> background of preconceptions about what constitutes a programming
|> language (preconceptions that are usually gained from learning and
|> perhaps even becoming an expert in other languages). For this group
|> of Lisp beginners, it requires a suspension of knowledge, or even an
|> un-learning, in order to learn Lisp as it was meant to be learned.
|
| I recall hearing from the guys teaching the Scheme course at MIT
| (Sussman & Abelson) that high school students how had NOT had any
| previous programming experience had an easier time with the class,
| especially at the beginning. It was all of the work of unlearning the
| other ideas that made those with some exposure to programming have a
| difficult time adjusting.
|
| Now there is certainly a very strong reaction to a (hopefully small)
| subset of beginners who show up in this newsgroup with arrogant views
| on how a language should be and end up having difficulty with lisp. I
| think a lot of the experts find an attitude of "knowing how it should
| or must be" to be particularly galling. Especially since most of the
| experts have experience is quite a wide variety of languages.
| Generally much more than the some of the "critics" who post here. So
| it sometimes gets tiresome to be lectured by the ignorant who are
| often unaware of their ignorance -- but too arrogant to recognize
| this.

I see this partially as an unfortunate failure on the parts of experts.

On the one hand the vocal "critics"[*1] contribute actively to the
arrogance of the arrogant ignorant newbies by fortifying their false
sense of understanding and preying on their ignorance and prejudices.

The experts seem to have given up on dealing with the "critics",
(reasonably) since correcting them is an often political exercise that
has been repeated for years, and the material is already out there. But
this material is not accessible to those who need it, instead they get
the material the "critics" actively put out.

^1: I understand The "critics" you refer to are the "language critics".
I hope I am not misleading anyone to place me in that category just
because of such meta-criticism as this]


| But I can imagine that the reaction of the experts (which sometimes
| includes me) can be a bit off-putting. But I don't really know of
| other newsgroups where you have the same level of participation,
| particularly by some people (not including me) who were deeply
| involved in the design, implementation and standardization of Common
| Lisp or who are the builders of major extensions of their own.
|
| On the other hand, there is also a huge amount of effort that these
| same experts will expend (often to Kenny's amusement) when the
| approach is one that demonstrates a real interest in learning and a
| willingness to listen to different ways of approaching a problem with
| an open mind.

At least the sincere learner will get help. But generally the barrier
is higher and there is a question of being lucky in not being taken in
by appearances designed to pander to their (newbie) weaknesses.

--
Madhu
From: mdj on
On Jan 12, 9:21 am, t...(a)sevak.isi.edu (Thomas A. Russ) wrote:

> I recall hearing from the guys teaching the Scheme course at MIT
> (Sussman & Abelson) that high school students how had NOT had any
> previous programming experience had an easier time with the class,
> especially at the beginning.  It was all of the work of unlearning the
> other ideas that made those with some exposure to programming have a
> difficult time adjusting.
>
> So, I agree that there is an additional threshold to be overcome if you
> have deep-seated and strongly held ideas about how programming languages
> have to be and act.  [Remember the big flamefest a few months back?].

Indeed. I think that something that's often overlooked when dealing
with beginners who have (often extensive) experience with other
languages is that usually they're looking for something more than the
language(s) they know offers, but that they don't yet know what that
is. It's just a splinter in the mind telling them that there must be
something more; a better way.

Whilst it's almost certainly true that CL offers what they're looking
for and more, I believe it's only a subset of those things that
capture the imagination of the newcomer, and only when that subset
coincides with the newcomers dissatisfaction with their current
toolbox does the capture take place.

When considered on a wide spectrum of human endeavours computer
programming in any language is hard, and programming at meta levels is
harder. The Lisp newcomer has to make at least two large cognitive
leaps to become a master of the language.

To me, the arrogance of the newcomers pales in comparison to the
arrogance of some 'experts' - at least in the case of the newcomer we
*know* it's born of ignorance. At times when I see a seasoned user
accuse a newcomer of "braindamaged" thinking that's the result of
using 'inferior' tools I'm forced to wonder whether those individuals
really do *know* why Lisp is better at certain things or whether they
themselves simply *believe* it.

It's a truism that the 'essence' of Lisp is something that's very
difficult (if not impossible) to capture in a natural language, which
is why I think the field is full of clever self-referential anecdotes
about metaprogramming. We do have to be careful though that these
don't come across as some kind of 'revealed knowledge' and remember
that it is not a boatload of rhetoric that will enlighten, but gentle
nudges in the right direction to open the philosophical mind.

Matt