15 ms·
The Land of Lisp
- freedomben 9y agoI love this book and it certainly deserves some attention, but is there anything new that is newsworthy? Has a new edition been released? Just wondering if I missed something.
- garamirez 9y agoI really enjoyed the book. An awesome intro to lisp!
- midgetjones 9y agoI've read this book, and what I love about it is that it really brings to mind the programming books of my youth, when nobody would argue that programming should be fun. It's goofy, has bad jokes, and you learn something. Having said that, the code style seemed quite idiomatic compared to some of the other Lisp I've seen (although I'm no expert), so I wasn't sure how valuable the lessons were.
- amake 9y ago> seemed quite idiomatic I'm not sure how that would be a bad thing. Did you mean unidiomatic?
- catpolice 9y agoPerhaps they meant "idiosyncratic"
- omaranto 9y agoMaybe "idiomatic" is considered bad because it would mean the lessons are Lisp-specific and you might hope the book teaches you programming in general?
- dwringer 9y agoA common complaint about Lisp code in general is that programmers tend to write code that is idiosyncratic [ED: I previously used the word "idiomatic" here in reply to the OP but was conflating terms, making this post rather irrelevant but at least it provoked a discussion] (i.e. rather than looking like templated design patterns with standard names, the program is heirarchically built of modules in a domain-specific language of the programmer's own design). This is both one of Lisp's greatest strengths to those who like it, and (I think, based on comments I've seen here and elsewhere) one of the greatest reasons it doesn't have more widespread adoption.
- mike_ivanov 9y ago"rather than looking like templated design patterns" - that is, the code goes straight to the point instead of being littered with incidental noise and ceremony? How that could possibly be a bad thing? Well, in certain software development subcultures ceremony might be a norm, but not in general.
- deleted 9y ago[deleted]
- Koshkin 9y agoFrom what I have seen, code that "goes straight to the point" is usually poorly thought out, is unmaintanable, has bugs, is difficult to extend to new use-cases, and the developer who wrote it is long gone.
- midgetjones 9y agoI did, of course, mean idiosyncratic. My bad
- dwringer 9y agoI fully conflated both words as well in my reply, don't feel too bad :)
- eradicatethots 9y agoOf course
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- baldfat 9y agoI really liked going through Realm of Racket with my 11 year old daughter. It pretty much is the same format. It made me miss the days of typing code from a book and hit run. (Well run never really worked then it was hours of debugging but that taught me so much)
- cujic9 9y agoHa yes! Bonus points when the book is for IBM Basic, and you're using a Commodore 64. Argggggg!
- baldfat 9y agoI loved it when they didn't say what basic it was for. My dad ended up meeting a author of a few of the programs and he said, "Oh I never got that basic program to ever run." My dad was like my 9 year old fix it and walked away. He was proud and mad. It took me weeks to get things fixed.
- peatmoss 9y agoChildhood TRS-80 user here, can commiserate.
- baldfat 9y agoI was a sol-20 kid
- flavio81 9y agoLOL. I had an Atari 130XE so examples for IBM Basic, Apple ][ and Commodore didn't work either! Even worse if the examples were for the Spectrum, which had an even more peculiar dialect!
- ansible 9y agoOh yes. I had a TRS-80 Color Computer, and the BASIC dialect (though written by MS) was slightly different in some details, so I was usually translating things at least a little. Things like color and graphics were completely different from system to system.
- uryga 9y agodid you mean "idiosyncratic"?
- macawfish 9y agoThis looks great! Why's Poignant Guide to Ruby really got me started in thinking for myself as a programmer. I'm looking at this book and seeing that if I read it I might fall in love with Lisp...
- the_gastropod 9y agoYea, this definitely seems inspired by Why's style. The art is similar, the story is absurd, metaphorical, and fun. Man, I miss that guy!
- throwaway7645 9y agoI've read most of it too, but not sure it shows a lot of lisp's strengths. A lot of the programs I read them over and thought that I could do the same thing in significantly less Python code. I'm not sure what should be fixed if anything though.
- baldfat 9y ago> A lot of the programs I read them over and thought that I could do the same thing in significantly less Python code. My racket code is usually many time smaller then my Python code. The nice thing about Racket/Lisp is you can just make your own tools when in Python you copy thousands of lines of code into a one line code. The real fix that Lisp/Racket gives over Python is deployment.
- throwaway7645 9y agoAgreed on deployment.
- moogey 9y agoI read through LoL, and then most of Clojure for the Brave and True. I think one of LoL's strong points is that it only ever explains things in the domain of Lisp. The Clojure book kept showing samples of what you were doing in other languages, and it kind of broke my initial ability to get in the mindset.
- flavio81 9y agothat I could do the same thing in significantly less Python code I have extensive experience with Python and i also know Common Lisp (though i'm far from being an expert there.) You can definitely write more concise code in Lisp. Not only more concise, but also easier to read, although Python is also very good at readability too. (For example, I love the fact that Python allows you to use named parameters, and when I learnt Common Lisp, i sighed with relief upon finding out you can do the same in CL.) But once you enter the world of macros, is where you realize the possibilities go far beyond what you can do with Python. Not to mention CLOS (the Common Lisp Object System): after reading about CLOS, OOP haters might probably want to embrace OOP again, and OOP fans will get delighted at the enormous possibilities and freedom brought by that object system. In short, Lisp is a far more powerful language than Python and also allows for more concise code, particularly if your system is complex. However, I should say that Python is far easier to learn and well featured, so that's what I recommend beginners to learn first.
- panglott 9y agoThere's also Realm of Racket https://realmofracket.com/ https://realmofracket.com/ Which maybe is shorter? I don't recall.
- vanderZwan 9y agoThe real question is whether it has a sequel to Grand Theft Wumpus in it
- flavio81 9y ago"The most violent programming example ever put on a textbook!" http://w3.sista.arizona.edu/classes/ista450/spring15/projects/wumpus/figs/grand-theft-wumpus.jpeg http://w3.sista.arizona.edu/classes/ista450/spring15/project...
- ggm 9y agothe cons chain of arrows certainly reminded me of why deep nested structural syntactic sugar is a pain..
- tempodox 9y agoNicely explained. On a side note, I noticed with deep satisfaction that “git” is used as some kind of curse in the land of Lisp.
- ISL 9y agoIt's unclear if it is a curse or a deity. Could be both.
- tsm 9y agoLinus Torvalds: "I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git."
- cestith 9y agogit: (noun) an unpleasant or contemptible person
- bitwize 9y ago"Git" in British slang roughly means "jerk". See also Linus's joke about naming software after himself, mentioned elsewhere in thread. The Monkees had a song called "Randy Scouse Git" (after a catchphrase from the britcom 'Til Death Do Us Part) the title of which was considered so vulgar in the UK that they had to release the song there under an alternative title (I think they actually used "Alternative Title").
- flavio81 9y agoThis book is destined to be a classic programming book, just as "The C programming language", "The Little Schemer" or "Operating systems: Design and implementation". I would really like to meet Conrad Barski and give him a great hug. And invite him a good beer. Be sure to read the comic that is on the bottom of the page!! Now, to be honest, a quicker or more practical introduction to Lisp would be the "Practical Common Lisp" book which is also superb. However, Land of Lisp is a charming book that makes you smile and feel like a nerdy (in a good way) 12 years old kid in 1982 who just got as a birthday present a brand new Commodore-64 and is eager to read the manuals!
- drcode 9y agoThanks for the kind words! Glad you enjoyed my book!
- flavio81 9y agoHi doctor! The comic at the bottom of the web page got me laughing and in tears at the same time, in particular the line: "Back in the 80s we showed you how to program without ANY bugs". Also, Java as a little tank, C# as a plane, Python as an helicopter... just brilliant. I almost rolled in the floor laughing by looking at that part of the strip. Certainly it is prophetic, it seems we're almost reaching the point of being enslaved by bugs... You're a good man, mr. Lisperati! "As you know, we're in the 8th year of the Great Northern Wars against the Haskellers (there are rumors that more of our troops are defecting to the other side)!! Don't be tempted to break ranks!"
- doktrin 9y ago> Java as a little tank, C# as a plane, Python as an helicopter... just brilliant. I almost rolled in the floor laughing by looking at that part of the strip. Is there a special significance to the Java / Python / Ruby / C# representations? I feel like I missed the joke here, even though I enjoyed the strip as a whole.
- 9y ago
- icantdrive55 9y agoI'll get hammered for this, but there are better books. I still haven't figured out if this book is a vanity project written by a bored Doctor, or a sincere attempt to convey information. I do like the Period Table though. And maybe it's just me? I have the book on my shelf, and it's dusty. I do feel using a comic book format to convey technical information is the way to go. It should be used more often.
- sigjuice 9y agoCare to share some details on which books you consider better and why? Thanks!
- mmel 9y agoCan you suggest some of these "better books" ?
- mollusk 9y agoNot him, and I adore the geekiness/goofiness of Land of Lisp, but I found Practical Common Lisp much more helpful.
- deleted 9y ago[deleted]
- mslate 9y agoThe music video is what really sold me on buying the book several years back: https://www.youtube.com/watch?v=HM1Zb3xmvMc https://www.youtube.com/watch?v=HM1Zb3xmvMc
- junke 9y agoI don't even have to click, I remember it after all those years. Something unique in many aspects. Beware.
- Vekz 9y agoI was greatly disappointed with this book because none of the 'Game' examples had a graphical interface to them. They are all text based. Reading further in this thread people are suggesting Realm of Racket as an alternative and it looks like that book has much more visual game examples: https://realmofracket.com/games.html https://realmofracket.com/games.html
- flavio81 9y ago>I was greatly disappointed (...) They are all text based. That's not really a bad thing... If you want graphical games in Lisp, take a look at the series called "Pushing pixels with Lisp": https://www.reddit.com/r/lisp/comments/6d5nht/pushing_pixels_with_lisp_episode_1_perlin_noise/ https://www.reddit.com/r/lisp/comments/6d5nht/pushing_pixels...
- Vekz 9y agoI've been following this series and its great! I'm not saying it was a "bad thing" I'm saying it didn't meet my personal expectations for a "lets build games" book
- stevelosh 9y ago> I was greatly disappointed with this book because none of the 'Game' examples had a graphical interface to them. They are all text based. Chapter 19 is titled "Creating a Graphical, Web-Based Version of Dice of Doom".
- Vekz 9y agoUnfortunately, this web-based version is just printing text to the browser instead of a repl in the other examples.
- stevelosh 9y agoBy "text" do you mean "SVG code that is rendered into images the user can click on"? Because that's what it's doing: https://i.imgur.com/iqdZ8l4.png https://i.imgur.com/iqdZ8l4.png and I think calling that a "text based" game is wrong.
- etatoby 9y agoI've learned LISP and Scheme, gained some useful insights, used them on a few random projects, and then dropped them. I recommend learning them, but then switching to something like Reason / OCaml / F# / Haskell.
- davexunit 9y agocounter anecdote: I use and contribute to a number of Scheme programs that I use daily and would never want to switch to any static language. Life at the REPL is too good.
- xedrac 9y agoI loved this book! I've always enjoyed retro text-based games and this was a fun way for me start learning a more functional style of programming (and Lisp). It was a nice contrast to my daily C++ work.
- stevelosh 9y agoThis book comes up in #lisp on freenode every so often, and the channel is generally split on whether or not to recommend it. I generally do. It's fun and lighthearted. Using games as a medium to teach the language is something some people enjoy, and is a lot less dry than most programming books. It avoids taking sides on the editor war, by just ignoring it altogether and teaching Lisp. This is refreshing compared to most books, which hit you with the Emacs cinderblock to the face right in the preface. It also stays away from ASDF and Quicklisp and even the entire package system in general, which is a lot of extra complexity that can be overwhelming to beginners at first (though they'll eventually need to learn about this if they want to continue using Common Lisp). The main issue people have with the book is that it uses CLISP-specific code in a few places. CLISP's last release was seven years ago, and because it hasn't really been maintained it's beginning to bitrot. Folks in #lisp generally don't recommend using CLISP these days, instead recommending actively-maintained implementations like SBCL, CCL, ECL, ABCL, etc. Using CLISP-specific code does allow the book to sidestep the issue of the library ecosystem, which is a plus. But a revamped version (or even a collection of errata) that ported the CLISP bits to a maintained implementation would make it a lot easier to recommend these days.
- kbenson 9y ago> This is refreshing compared to most books, which hit you with the Emacs cinderblock to the face right in the preface. While if they use Emacs' lisp features that approach could be useful for some people (mainly those unfamiliar with or undecided on an editor to use), it's likely to strike others that don't already use Emacs as extremely annoying. I'm glad I haven't encountered that (but I haven't read a book on Lisp either).
- zeveb 9y ago> The main issue people have with the book is that it uses CLISP-specific code in a few places. CLISP's last release was seven years ago, and because it hasn't really been maintained it's beginning to bitrot. Folks in #lisp generally don't recommend using CLISP these days, instead recommending actively-maintained implementations like SBCL, CCL, ECL, ABCL, etc. Note that CLISP is actively maintained; the most recent change was three hours ago: https://sourceforge.net/p/clisp/clisp/ci/63508ea11cf0b2062ca62031ab1edddb5f72e7b0/ https://sourceforge.net/p/clisp/clisp/ci/63508ea11cf0b2062ca... I have no idea why the maintainer hasn't released a new version since 2010. Doesn't make any sense to me. I use SBCL, but CLISP is still alive.
- hellofunk 9y agoWhen I discovered lisp several years ago, it was indeed the textbook moment of enlightenment that you've heard about. This book was a part of that introduction for me (along with Practical Common Lisp). After working in C-like languages, I had no idea that programming could work this way as in lisp, the idea of code and data being inseparable, I even had dreams at night about run-time data structures getting expressed as quoted lists! (I kid you not!) It is now several years later and I have earned my living ever since by working in another lisp, Clojure. And I have indeed learned a lot along the way and what I've learned does indeed translate to how I work in other languages (even C++, which I also love). However -- it is not all roses and nicely-flavored toothpaste after a savory feast. There is one aspect to lisp programming that, by virtue of its dynamic typing, I still find myself struggling to reconcile. No matter how much I marvel at what I can do in one or two lines of lisp, I do still often find myself making dumb mistakes that a compiler would catch instantly. Without type annotations and checked structured data for everything, it can also be hard to remember what a function does, or what its variables represent, when you read the code later. One aspect of this that has made a big difference is naming -- how you name things in lisp and dynamic languages is a skill in its own right that helps guide the readability of code in the absence of types. When I look at C++ code I've written, the verbosity of naming is a clear influence from lisp. And it is an improvement. The other feature that occurs more often is in-line documentation. It is a joy to read Clojure programs (the good ones, anyway) where every (non-trivial or meaningful) function has a little paragraph summarising what it does. This is just good in any language, but somewhat essential in a dynamic one. Finally, run-time contracts and things like Clojure.spec come about to help fill the void of static typing. The problem I have there is that you add back into your code a fair amount of the verbosity that was removed in the first place by using a dynamic language (just look at Clojure.spec's lengthy annotations for a function signature, and I find myself wondering... why god oh why?). At which point, I then wonder why not just go back to using a static language. So using lisp taught me perhaps one final, frustrating lesson: there are just great things about both dynamically typed and statically typed languages, and I've learned that the fence is an awkward place to sit.
- default-kramer 9y agoMy first go at lisp was working through SICP. I loved it. But I couldn't see myself using it for a medium-sized project just because static typing is that valuable to me. Now I'm learning Racket, and Typed Racket feels great so far (despite a few awkward spots). You don't have to sit on that fence; you can switch between typed and untyped code at will.
- B1narySunset 9y agoThe dude on the right looks like an older version of Doug Funny.
- byron_fast 9y agoMaking good comics is hard.
- avodonosov 9y agoWow, new comic? Previously it was a different one.
- avocad 9y agoThis is the book i give as a present to the most geeky of my friends.
- swlkr 9y agoI’m so glad that this exists. Lisp (Clojure) has really brought the joy of programming back for me after 20 years.
- aauthespian1 9y agokindly check this out http://www.aauthespian.news/2017/10/new-music-johnbosco-bubbles-up-prod-by.html http://www.aauthespian.news/2017/10/new-music-johnbosco-bubb...
- misterHN 9y agoI think you want to read the cartoon guide to the computer
- fernandohur 9y ago"Simple but refined, guaranteed to blow your mind, the land of lisp" This guy is a genius :D
- krylon 9y agoI am currently working on an interpreter for a Lisp-like language (it's too early to call it a dialect of Lisp) in Go. I have not used Lisp at all over past couple of years, except for tweaking emacs, and I am beginning to understand that I have subconsciously missed Lisp. It is amazing how little - if one really wants to - of Lisp one needs to implement in the host language before one can go on and write the rest in Lisp. Efficiency-wise, I expect that I will implement many things in Go for performance that could be written in Lisp.