Hacker News new | past | comments | ask | show | jobs | submit login
Land of Lisp: Learn to Program in Lisp, One Game at a Time (oreilly.com)
141 points by adulau on Oct 14, 2010 | hide | past | favorite | 51 comments



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!


MD in cardiology and writing a lisp book? Would you mind sharing your story with us? It sounds like you might have had an interesting life!


Why don't you come talk about it at the D.C. HN Meetup this Monday?

It would be a pleasure to have you over, Dr. Barski.

http://www.meetup.com/JoinHNDC/


Sure- I'll be there (I was at the meetup a couple months ago BTW)


Perfect! See you then.


You should have come to DevHouse:DC - Conrad gave a lightning talk about his book there :D


Would love to, but I clocked 50k airline miles in the last 12 months :-/


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.

Congratulations!


Thanks- And apologies for the earlier cancellation.


Check out his old website

http://www.lisperati.com/

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)

[1] http://arclanguage.org/user?id=drcode


Any plans to release the book in electronic formats (pdf and epub)?


It will be available as a PDF, epub, and mobi.

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?


Thank you, I'll be looking forward to the release of the electronic versions of the book.


Considering the publisher, it should be available in pretty much every digital format (I think all of their books are).


That looks really cool. I'll definitely grab a copy when it comes out.


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:

http://www.amazon.com/Introduction-Programming-Emacs-Lisp/dp...


> 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).


Those of you who prefer some kind of GUI, look into Xemacs. It can be set up to respond to your mouse-clicks.

This is puzzling. GNU Emacs has mouse support.


An Introduction to Programming in Emacs Lisp is also available for free from the author's website:

http://www.rattlesnake.com/emacs-lisp-intro.html


Dont want to start a religious war here, but how does slimv (http://www.vim.org/scripts/script.php?script_id=2531) for vim compare ?


I never used slimv, but I started developing in Clojure using Vim and connecting it to a repl as explained here:

http://writequit.org/blog/?p=386

I do not know how it compares to Emacs and Slime, but I'm quite satisfied by it.


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.


Emacs will be even better when you can use Scheme instead of Elisp.

http://stackoverflow.com/questions/1663627/guile-and-emacs


great post lkrubner! Can u give some insight about python, or is lisp better ? Thanks!


If you want to learn Lisp, I guess Emacs is a good idea.

If you want to transform text in your editor in a Unix-like environment use the appropriate tool - Acme

http://en.wikipedia.org/wiki/Acme_%28text_editor%29

Then you can program your text transforms in any language you like


It's not as idiomatic as with Acme, but you can program text transforms in any language with Emacs too. Just use C-u M-| (shell-command-on-region).


Previously: http://news.ycombinator.com/item?id=841117 including comments by the author.



Thank you for the reference. I hope that the publishing date is still October 2010... as it was foreseen already 1 year ago.


Yes that's accurate- It's all done and printing as we speak.


Since the author is Conrad, the well balanced human, and the book is named LoL, does it show how to implement the first Lands of Lore? :) http://en.wikipedia.org/wiki/Lands_of_Lore:_The_Throne_of_Ch...


Coincidentally (or maybe not), Let over Lambda has the same acronym... [http://letoverlambda.com/]


You just blew my mind :-)


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.


>build a graphical HTML5 game as a finale

sounds great, I'm interested.

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.


Dr Code, will this book be on Safari Online? How do you get paid if I read the book online or have it bookmarked as one of my favorites?


I guess I get paid some kind of fee from your subscription :-)

Haven't seen that website before- pretty cool.


I love the concept - is there anything like this for Python?


Check out his book since it looks like it might be good, but if you really want to learn Python and need a good place to start, I've written one:

http://learnpythonthehardway.org/

It's free, you can download a PDF, and you can hit:

http://learncodethehardway.org/

To ask questions if you get stuck.

If you already know how to code it might be too simple for you.


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).


Wow! Thanks :-) This is exactly what I was looking for.

So much nostalgia for the years spent trying to code a killer text-based game in QBASIC... tear


Why "Lisp" if it is book about "Common Lisp" only? It is misleading.


Is not Common Lisp a Lisp?


... 'Europe' book about Britain only.


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.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: