I'm the author- The book is printing as we speak and should be hitting the stores late Oct/early Nov. Around that time a lot more info on the book will also be available at my new site landoflisp.com.
I'm really happy with how it turned out and I hope the new site (which I don't want to launch before the book is truly ready) will entice more folks to learn Lisp!
Great to hear! I've been waiting for this book for a long time. I had it on pre-order at Amazon until they cancelled the order earlier this year, then pre-ordered it again in September this year.
It's great to see an author coming out with a new Lisp book, since it is my favorite language that I never get to use at my day job.
I remember he was also an active contributor when arc was first released[1]. Thanks for all the great contributions. (drcode: I hope you don't mind me posting this info)
The epub and mobi versions tend to lag about a week behind the PDF because of conversion time, but we push those files out to your account as soon as they're ready. (Assuming you pick the book up from No Starch directly: http://nostarch.com/lisp.htm)
Yo! No Starch rings a bell. I learned of Jon Stokes 2006 book "Inside The Machine" recently and it seems to be impossible to get in paper or ebook. How can I read it?
Folks looking for a practical place to start with Lisp should consider using the Emacs editor. I just recently went down this road myself. I am now a huge fan.
For about 6 months in 2006 I made Emacs my default editor. (Xemacs, actually). But I did not learn Lisp, at that time, and there are other IDE's out there that have a nicer GUI. So I started using simple text editors like Kate, and then sometimes NetBeans.
And yet, for years, I've been wanting to work with a fully scriptable editing environment. I often have the need to grab a large amount of text data, transform it in various way, and save the finished product. I kept thinking that at some point I would learn sed and awk, but I never got around to it. Usually, if I needed to make some quick changes to text, I'd write a one-off PHP script to do what I needed.
Then I got interested in Clojure, and through Clojure I got familiar with Lisp's syntax.
Then it occurred to me to go back to using Emacs. So now it is my main editor, again, my default programming environment. I use it for everything. And I've learned Emacs Lisp. Every single day, the combination of Emacs and Lisp helps me be more productive.
Way back in 1999, I started to learn PHP. One thing that made PHP easy to learn, back then, was that I did not need to compile it. I only needed to put it on a server running PHP, and that was most servers. It was an easy programming environment to step into.
Lisp is like that when you are working in Emacs. You can write a line of Lisp anywhere you like, then invoke it with a special key command. You can write quick one-off scripts to move text around inside a file. Or, if you like some code and want to reuse it, you can just save it as a function and put it in your .emacs file and then that function is available to you whenever you are running Emacs.
I have heard of Emacs greatness since at least 1999, and yet somehow, not till this year did I dive deep and learn both it and Lisp. I realize now, everything that people have said about Emacs over the years, it really is true - to have a programming environment where every element of the environment can be programmed and re-programmed using the language of the environment gives you an extremely powerful tool.
If anyone is looking for a simple place to get started with Lisp, I would say, simply, use Emacs. We all need to edit stuff, and so your work will provide you with a practical place to practice your Lisp, everyday.
Those of you who prefer some kind of GUI, look into Xemacs. It can be set up to respond to your mouse-clicks.
Also, if you'd like to learn about Emacs and Lisp, the book that Robert J Chassell wrote is a very good introduction:
> Those of you who prefer some kind of GUI, look into Xemacs. It can be set up to respond to your mouse-clicks.
I don't want to nitpick here, but the tedious distinction between the "graphically challenged" GNU Emacs and the "some kind of GUI" godness of XEmacs is getting rather old. Precisely, it is around 20 years old, since the debate started somwhen at the beginning of the 90s. Much, much time has passed and much, much has changed since then in GNU/X emacs land.
But otherwise, youre completely right. Emacs feels today what running a Lisp Machine must have been back in the day, and it's wonderful. Your complete environment is written in Lisp, you code, chat, mail, all at the same time in/with Lisp, and you can modify all of it at run-time, all the way down (Well, mostly).
It is a pity that Emacs is stuck with Elisp for the foreseeable future, so although a "Lisp", it cant fully profit from all the available Common Lisp goodies, but for a beginner, it is all more than enough to start. And even if one day he or she might want to move on to Common Lisp, SLIME would be there waiting patiently.
Not really. A Lisp Machine had a better Lisp, multi-tasking, a cool graphical user interface, the software was object-oriented and more.
Emacs still has a relatively poor Lisp dialect, no object-orientation in most of its software, no multi-tasking, a relatively poor user interface and so on.
While some minor details are off (the GUI -> Xemacs thing was probably more accurate several years ago), you're basically right. Emacs Lisp is kind of a crappy Lisp dialect, but it's a very accessible way to learn the basics, and if you use Emacs, quite immediately useful.
I wish I had a better suggestion for learning elisp, but I mostly picked it up from the Emacs Lisp info file included with Emacs (http://www.gnu.org/software/emacs/manual/html_mono/elisp.htm...). I'd been reading SICP already though, so I already understood the fundamentals of the Lisp family. The best intro I've seen to Lisp is _The Little Schemer_, but keep in mind that Scheme is the "clean and minimalistic" dialect (for better and worse).
I've used slimv a bit to play with Common Lisp. It's very handy for sending sexps from vim to repl. Not sure about advanced emacs' slime/swank features. I think it's difficult to find a person which used both editors for Lisp coding to make a meaningful comparison.
Is this going to be using Lisp bindings for cross-platform graphics libraries like SDL? ( http://code.google.com/p/lispbuilder/wiki/LispbuilderSDL ) Here's to hoping you get to build 2D/3D games and not 1970s style terminal games you will never show anyone.
The book includes a chapter on building a crude web server and then uses it to build a graphical HTML5 game as a finale.
I considered options like SDL, but the fact is that there's so many graphics APIs in the world (and in the Lisp world) that I didn't want to force the reader to learn one they might not ever have practical use for.
Knowing how a web browser & HTML5 work, on the other hand, is universally useful.
My favorite programming class was an intro course in python where we generated fractals, programmed maze solvers, built conway's game of life, and had an option of creating a 3D pool game for final project, etc: http://cs.northwestern.edu/~akuzma/classes/EECS110-s10/index...
Although the course is intended for people who have never programmed before, it allows you to do a lot of cool stuff by deliberately not explaining how the libraries used are implemented. I don't think using external libraries in tutorial books is bad, as long as you change\vary the library being used each problemset or chapter. Then no one library is enforced as canon. The student just learns the generalized methodology of hooking in with other people's code and writing a decoupled application, which are essential practical programming.
I think it's OKAY to risk throwing in slightly off-topic components in a learning-by-doing book. The best "django" book I've seen had a chapter all about jQuery\JavaScript.
Games are still always good problem domains for enhancing student engagement even if they are text-based. Having now looked at the sample chapter, I'm sure you did a great job and I'll put it on my to buy list.
For what it's worth, I heard that at least part of the book covers a bit of html5 for browser games with a lisp back end.
The sample chapter that is linked elsewhere uses a graph drawing library that produces png representations of the game state. (This actually builds on the material of a previous chapter, wherein you develop the graph->png utility.)
This is from the perspective of someone who hasn't yet bought the book. I really need to get to that.
Thanks for the suggestion :-) I had a ton of experience with C and Java back when I was in high school and somewhat through university, but after I finished university I fell out of it. Your book looks like a great introduction for a complete newcomer to programming, but I've picked up "How To Think Like a Computer Scientist" and it seems to be more on my level.
You are an amazing person, however, for releasing all of your hard work for anyone to learn from!
This might be the ticket: http://inventwithpython.com/ . I haven't gone through it really, but the goal of teaching through making games is similar, and I do know he wrote a pretty good clone of gorillas (http://github.com/jesusabdullah/gorillas is my own copy, if it interests you).
In the main heritage line of Lisp (Lisp 1.5, MacLisp, Lisp Machine Lisp, CL), Common Lisp is still THE common Lisp. One can run run old code from the 1960s with relatively little changes. Neither with Scheme and Clojure you can do that. Both are Lisp dialects. Clojure is basically incompatible with every other Lisp and porting Lisp code to and from Clojure is basically done by completely reimplementing it.
So, Common Lisp is not THE Lisp, but the common Lisp.
I'm really happy with how it turned out and I hope the new site (which I don't want to launch before the book is truly ready) will entice more folks to learn Lisp!