BLOG POST:
Quitting the Land of #Lisp
https://stevengharms.com/posts/2025-01-30-quitting-the-land-of-lisp/
(don't worry! I'm almost done with Touretzky! Giving up on this book, not the language)
I think a mapping of rooms to objects would not be called object-ocations, but room-contents or something.
Object-locations has what it looks like it should have: using an object as a key we can get its location.
We have to run a query on this though if we want a list of the objects in a given room, which is a common operation in a game.
However the object locations list makes it easy to update where an object is. Just rewrite its entry and it's taken from here and put there.
@Kazinator reasonable explanation, thanks. Such was not present in the book. Thanks to Touretzky I can see your argument’s elegance (cons that moved object!)
I'm not a database expert, but database people would recognize the item to location list as a normalized table. The entries are unique and in 1NF form: the columns are scalar.
The other lists in the example are not 1NF. They associate keys with lists. (Graph represented by adjacency lists.) In the memory model of a programming language, that doesn't bother us, and can even be nice, but in a columnar database, we would need lots of columns for each room row to store all the items.
@sgharms That was an excellent criticism of "Land of Lisp"! I read it some years back and had a grand old time with it. OTOH, I was then knee deep into the language, and it gave me some fresh ideas.
One of the curmudgeons of the online Lisp community once went on a rant on how bad the book was, and I felt he didn't appreciate what it was trying to do. I think you do.
Barski clearly is no programmer, and he is probably also not a good teacher. What he has is enthusiasm, and a newfound love.
1/
@sgharms I think Barski found a language he could mold to his ideas, and with expressiveness that allowed him free reign. In that I think he show why the lisps are amazing languages.
In contrast to the other critic, I think you have stated where he fails as a teacher. He *really* should have had a more engaged editor! The ideas have merit, but they way they are presented are not very good. I missed some of that with my lisp experience. I learned something new today.
2/
@sgharms Personally I'm quite fond of Touretzky, even though many lispers seem to think it's too basic.
In my view, the lisp language community suffer from a problem welcoming newbies, both those with previous experience that show up and post code that looks like C++ and those that know nothing. Touretzky's book is as far as I remember very good for the latter crowd.
Have you looked at Practical Common Lisp (https://gigamonkeys.com/book/)? I'd love to hear your view on that, and Touretzky!
3/end
@AndreasDavour thanks for the thoughtful series. I always try to be fair when dealing in negative feedback.
Welcoming noobs is likely a huge challenge. I’ve huge appreciation for Seibel and Barski battling to bring love and inspiration in. In my teaching job, delivery passion over fine grain detail is an acceptable trade. As I’ve waded into #freebsd kernel exploration, NGL Copilot and Claude AIs have helped get my forum posts from “noob” to “inexperienced.” An over academic Lisp community probably kept me away from the language for 20 years.
I will see about that Touretzky write up soon… :)
@sgharms It doesn't look like my cup of tea as well. I prefer Loving Common Lisp by @mark_watson.
@veer66 @sgharms @mark_watson Personally, I also like the following Common #Lisp book quite a lot. I can program, of course, and I already had experience with functional programming languages. But in principle, I like programming books where you don't learn a thousand times what a variable or a loop is, but where you build something practical right from the start. This can be something very simple, but something where you learn a programming language
@veer66 @sgharms @mark_watson bit by bit along the way. When I started programming in the home computer era, the first thing I always programmed on the various computers or Basic variants or other programming languages was a small address management program. It doesn't sound super exciting, but you can learn a lot from it.
By the way, the first project in this book is a small management program (db) for music CDs. I thought that was really great
@veer66 @sgharms @mark_watson You can always expand a management program like this. First you control it via parameters in the shell, then at some point you build a small Ui, perhaps in the shell at first. Later you can then build a web interface or desktop GUI. Of course you need some kind of server from which you can load the data etc.
You can extend a project like this to any depth you want.
@leobm @veer66 @mark_watson great perspective. I started as a tool building sysadmin(instrumentalist)/programmer and this evolution of the db speaks to the joy of what I saw over the years. Thanks.
I got into this book shortly after its publication. But Lisp’s look and feel and idioms felt so strange that I couldn’t map my Perl and Java experience into it and wound up with a mess. With Ruby and baby C and experience I’m finding Touretzky going down smooth like fine aged single malt Scotch.
I’m actually considering sharing Touretzky with my mom bc she always asks what programming IS. I think his instructions are that portable.
@veer66 @mark_watson thanks for the recommendation. I also picked up a Udemy course. I’m looking forward to the moment of being able to leaf of skim because I “see where it’s going.”
@sgharms The song is indeed a stone-cold bop :)
@sgharms ANSI common lisp from Paul Graham is nice to learn the basics of the language and Practical Common Lisp go deeper but is a bit too verbose. Both do not explain tooling or how to install libraries sadly.
@kototama yeah I was under the influence of pg when I got into lisp in the first place. Every time I tried to read on lisp my eyes would not stay open. I recall his being guilty of not explaining intermediary states of the code, too, but i seem destined to revisit all lisp pedagogy in this accidental adventure ;)
@sgharms I think on lisp is too advanced for an early read