From: Nicolas Neuss on 11 Jan 2010 07:13 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 11 Jan 2010 18:21 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 11 Jan 2010 20:40 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 11 Jan 2010 21:06 * (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 11 Jan 2010 22:43
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 |