Learn Lisp the Hard Way
learnlispthehardway.org
learnlispthehardway.org
In the meantime, I've had GigaMonkeys.com open in a separate tab ever since and plan on purchasing the silly "Learn Lisp Through Games!" book.
Edit: But I did find the author's nouveau mysticism/occultism quite interesting. I tend to forget that those belief systems are still around.
As for my own heavily transhumanist "system" of Neuro-Occultism, it's more of a philosophical framework---the basic premise is that all supposedly supernatural phenomena can be explained in terms of psychology, neuroscience, and the physical sciences; that only once you have ruled out the possibility that a supposedly supernatural experience is a purely psychological phenomenon can you begin to model a physical explanation; that the experience of supposedly supernatural phenomena are more interesting and powerful when examined in this light; and that even qualitative systems such as the human mind can be described quantitatively, by adapting research in quantum computer science and biological computation to the field of neuroscience. It's not so different from Cognitive Science, only it emphasizes that once you know that all belief systems are just paradigms, that the human mind can support multiple, simultaneous, even contradictory paradigms, and that your fundamental being is in fact a quantitative system, you can really start to put your brain to work. The problem lies with the fact that the language of the unconscious mind is purely symbolic and associative; thus, a mystical language is necessitated by the structure of our minds---even though a rigorous, mathematical model would be preferable in terms of the scientific method. Lisp, metaphorically applied to the model of the mind, brings us most of the way there.
The purpose of Neuro-Occultism is to develop such a rigorous, mathematical model of consciousness and being; and in so doing, deprecate itself. I see this as an essential aspect of the "technological singularity", both for the realization of emergent machine intelligence, and for the transfer of human consciousness to a computational system---because until such time as the human mind can be understood quantitatively, the singularity will remain science-fiction and fantasy. But then, even the idea of the singularity is a problem, a fundamental limitation of current consciousness that prevents us from seeing past the event horizon of this convergence of technology, biology, individual and social psychology; in order to both achieve the singularity and transcend it, we need to first transcend our own segmented and qualitative perception of self.
There's a lot more I'd like to say on the subject, but that would be a book of its own. Back on topic: I do realize that the heavy-handed mystical tone and Lisp proselytization currently present in the introductory text of LLTHW is useless cruft; I'm a passionate and excitable person by nature, but I recognize that it is holding back the work and interfering with Zed Shaw's methodology. Writing a book is an iterative process, and my effort has been focused on getting a complete scope in order to pump out solid, relevant exercises---so for the time being, I've simply marked the intro chapters as rejected/need-to-be-rewritten. I really hope it won't take me a few more years to finish this book though!
I was disappointed, though, to learn that your place of employment is not strictly Lisp-only.
...Now I feel like a total stalker. It's all a few clicks away from the LLTHW site, I swear!
As to your clarification---yes, that was understood. I was more speaking to the general criticisms about my tendency towards mystical language, since that comes up fairly often. I would be more surprised if there was third-party material discussing Neuro-Occultism, TBH---the occult community at large dislikes it because I deny a metaphysical explanation; and most of the people in the scientific community that I've shown it to dislike it because it even deals with the problem of mysticism (much like Freud criticized the work of Carl Jung for the same reason). How dare I!
That being said, I have been making good progress this year on my adapted process calculus---I'm just putting the finishing touches on the BNF grammar, and then I can begin testing its logical consistency and writing proofs. Once it's finished, I'm hoping to be able to describe physics, quantized consciousness, quantum and classical computing all with the same notation. Fingers crossed.
The brilliant thing about zedshaw's "Learn X The Hard Way" is that it focuses on typing the code and learn-by-doing programming. Learn Lisp the Hard Way just explains Lisp then tacks on a few exercises.
I (and presumably Zed, from his previous comments), wouldn't mind if the author had mimicked the entire format, because it works. "Learn Lisp the Hard Way" would be necessarily very different from "Learn JavaScript the Hard Way," but this is just a programming book with a familiar yet misleading title slapped on top.
The most important factor, as I understand it, is the show-don't-tell method; it's also the most difficult to achieve for a language like Common Lisp, which is so foreign to most people. For the purposes of this draft-in-progress, however, just consider every explanation currently in the text as a placeholder for concrete examples that will illustrate the point better.
Another important factor is the pace of each exercise. One of the biggest features I noticed about Zed Shaw's Learn Code The Hard Way books is how perfectly he scaled the difficulty of progressive exercises, to maintain an even pace. For an absolute beginner to programming, an exercise should take no more than an hour to complete---and that's a goal I'm working towards for LLTHW as well.
To achieve these goals, once I finish laying out the content and direction with the intro text to each chapter, I'm going to be working backwards in each Part, writing progressively easier exercises, to make sure that all necessary material is covered, and that the pace is structured properly. But even once the 2nd draft is complete, I will still be relying on user feedback to adjust the ordering and pace of the material, as needed.
Thanks for your feedback, and I hope you'll continue participating in this project as I work out all the kinks!
Basically, there's no hand waving in this book. It doesn't teach you to have a lisp blog in five minutes doing copy paste of code you don't understand.
It respects you as a smart learner, and makes you write the code, you learn doing stuff by yourself being smartly led by the author, and by the end of the book you have written a very complex piece of software with many advanced concepts and you understand more about lisp than you could have by following endless web tutorials.
The book can be downloaded from: http://www.cse.buffalo.edu/~shapiro/Commonlisp/
It is to me a vastly underrated resource for all people interested in Lisp.
The methodology in this book is definitely close to what I'm trying to achieve with LLTHW. I'll be sure to add it to the list of references, and look forward to what it can teach me about teaching Lisp.
Unfortunately, it looks like the traffic spike has once again caused my webhost to kill and block the web application's process---so I'm going to have to move over to a better cloud service and an async web-app to better support this level of interest from the community.
I will announce the re-launch of LLTHW through my blog, which is syndicated on Planet Lisp. Until then, I do highly recommend Practical Common Lisp by Peter Seibel, also available online for free at: http://www.gigamonkeys.com/book/
Sorry, but this is an awful way to start... just get the Wikipedia definition?
Dont talk about the 80s. Dont talk about 27 different and incompatible implementations. Dont talk about lambda calculus or McCarthy. Dont talk about 1001 different editors. Nobody finding about Lisp today cares about these things, it is just annoying noise that dilutes the message.
If youre stealing the title of a Python book, then at least make the experience as newbie-friendly as Python is.
Couldn't resist the above quote from Zed Shaw; the guy who started the Learn X The Hard Way series. Overall I think these tend to be a very good approach to learn, especially for someone just starting out.
https://gitorious.org/learn-x-the-hard-way/learn-x-the-hard-...
PCL will teach you CL, how CL works, in clear language and examples.
Ultimately, though, I realized I prefer the Scheme family (especially Racket). CL is crufty and arcane, and I prefer the Lisp-1 model (this does come at a cost to macro ease of use, but I'm not yet a huge macro fanatic, and once you learn the harder Scheme/Racket macros they can do insanely great things).
For learning Scheme, SICP is the classic, and there's an interactive version of it. I also recommend the Little Schemer for getting yourself in the mindset of learning how to use recursion in clever ways.
For Racket, the go to choices are Realm of Racket (which you can think of as a more clearly written Racket version of LoL but with a slightly less interactive approach), and How To Design Programs (which is quite a lot to get through, being designed as a full year course in CS).
Later, I moved on to the Clojure books. Working through the Little Schemer was invaluable (and its bibliography is excellent too).
[1] http://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/02...
[2] https://github.com/evanspa/TheLittleSchemer/blob/master/sche...
"Strict functional programming languages" could be interpreted as languages with strict evaluation. But I guess it is clear in this context that they mean pure functional languages (or pretty rigorous with regards to purity).