skypher wrote:A small pet idea of mine for lowering the entry barrier to CL:
I think that the entry barrier is not the overwhelmingly large language standard, and even if it was, this would be better addressed by a tutorial that doesn't throw every detail at once at the learner.
I think that the problem is rather exemplified by the code in
this question. People who come from imperative languages have to understand a completely different program flow from what they are used to. They will try to declare variables, but they do not understand how scope and extent work. They try to apply their sequential thinking, but the program flow goes orthogonal to how they expect it. The person who asked that question above claimed to have read the first 10 chapters of Practical Common Lisp, and yet he violated at least one principle from each of those chapters (disclaimer: I might be exaggerating here). I think that it's great that he posted this question, and that he will come over this barrier. The problem is recognizing where the barrier is, instead of just throwing Lisp away as "useless" because it doesn't work as you expected.
I think that I would design a tutorial in such a way that let*, do*, setf, and the extended loop are explained as late as possible. Even defvar and defparameter are not needed for the first steps. The very first step would have to be "forget everything that you believe to know about programming". The first looping construct would be recursion. Do anything to keep them from falling back into the BASIC mind.
"Just throw more hardware at it" is the root of all evil.
Svante