Would you say PG's ANSI Common Lisp is better or worse (as a zero-to-hero intro to CL for an "experienced" programmer in other languages) than Peter Seibel's Practical Common Lisp?
I'm curious because I'm currently teaching myself CL (slowly, as a leisurely hobby), mainly because I realized that I need a hyper-flexible un-opinionated language in my toolkit for some types of experiments I want to try on and CL seems to fit the job. But I found the "practical" part missing from Practical Common Lisp with the non-plausible problems/examples and also missing stuff about packaging/ecosystem and little on modern concurrency patterns...
PG's ANSI common lisp was one of the first books I learned to program from. I still prefer it over Practical Common Lisp, partly because I appreciated the greater depth (I felt) it covered the basics in, and in that it was slightly more abstract...
But mostly because Appendix D gives a really succinct description of the language, key functions, all the different parameters to FORMAT and LOOP, and all the different read macros. Never underestimate the value of a good appendix!
OK "modern" might be a misnomer, all concepts are 20+ yo here, but... async with promises (like in basic concurrency without execution parallelism, just io p), channels, then actors, stm maybe. Most books seem to have a chapter on threads and stop there. I know CL has libs for all these and the libs have docs, but was hoping for some "big picture" summary of what's worth using and learning from the entire ecosystem and when etc.
If you find a good actors library, let me know. I've been using CL for 20 years and have not found a satisfying one.
[edit]
CL is in a slightly uncomfortable position here; scheme has first-class continuations, which makes implementing actors and async the sort of thing that could be an undergrad assignment, most other languages have a single source of truth (either with a language committee like C++ or with a one-true-implementation like Python).
Packaging and ecosystem has changed a lot recently, so On Lisp or ANSI Common Lisp would both be outdated quickly (as would Seibel’s PCL; PG does not have a book with that title). Most of that you can find online: practically everything is available through Quicklisp and it’s a very intuitive piece of software. Concurrency is harder and Bordeaux Threads might be too new for detailed inclusion in On Lisp or PCL.
I would highly recommend On Lisp once you have gotten the syntax down. I ordered a printed copy of the PDF (legal since PG released it) and have been working through it. On Lisp won’t show you things that are easily done in other languages; its goal is to teach the power of CL. Certainly by the time you’re done you’d be comfortable with many types of macros, closures, the REPL-based workflow, and other strengths if CL, able to find more about how one uses it in practice without much trouble.
Be aware that On Lisp was written before ANSI common lisp was standardised so there are a few areas towards the end (if I recall, in the continuations chapter) that won't work as written.
PG's Lisp books don't deal with packaging and ecosystem at all, do they? I think they are still very much relevant, and I completely agree with your recommendation.
ANSI Common Lisp from PG gives you a basic overview of the language, has some examples and has also a short reference section. It doesn't teach you anything useful about the eco-system, IIRC.
Practical Common Lisp teaches the language a bit more by example tasks...
I learned with ANSI CL, then read PG's On Lisp (which I downloaded from somewhere and printed, I don't think it was available). ANSI CL is great, the chapter where he writes an OO framework is just amazing. And On Lisp blew my mind.
Seibel's Practical Common Lisp is a good book, worth reading, but quite lacking in the "practical" aspect, which tends to be implementation-dependent.
Would you say PG's ANSI Common Lisp is better or worse (as a zero-to-hero intro to CL for an "experienced" programmer in other languages) than Peter Seibel's Practical Common Lisp?
I'm curious because I'm currently teaching myself CL (slowly, as a leisurely hobby), mainly because I realized that I need a hyper-flexible un-opinionated language in my toolkit for some types of experiments I want to try on and CL seems to fit the job. But I found the "practical" part missing from Practical Common Lisp with the non-plausible problems/examples and also missing stuff about packaging/ecosystem and little on modern concurrency patterns...