I find that Practical Common Lisp has not aged well. Maybe it's the "practical" part with the specific examples the author used -that are now terribly dated- that is mainly responsible, but the end result is that I no longer recommend it.
My goto recommendation for newcomers is Norvig's PAIP which is full of insightful moments and unbelievably good code and for people with more experience "Let over Lambda" by Doug Hoyte, which is a mind-blowing book mainly because of the time-transcendent nature of the examples Doug chose.
Having read both PAIP and Practical CL, I do not see them as comparable: PAIP teaches classical AI algorithms, and introduces as much CL as nacessary to carry out the task; Practical CL instead has a goal of teaching Common Lisp, and uses coding examples to showcase features the language.
I agree that the MP3 streaming server example in PCL looks outdated, but so are many topics in PAIP as Norvig himself points out at the end of his retrospective [1]. (And I still think that the MP3 parser in PCL is a really good example for showing Lisp I/O, binrary processing abilities, and subtleties of CLOS, despite not being something that anyone would code as a side project nowadays.)
I don't agree. PAIP goes well beyond "introduces as much CL as necessary to carry out the task" in its Common Lisp presentation. It could easily serve as a first book for someone to learn Common Lisp, even if that person has no interest in AI whatsoever.
Some of the examples in PAIP may be outdated in a historical but not practical sense. I've joked in the past that the code is so well-written than it can be excised and framed on a wall. With code this good, the lessons one can learn are numerous and the code stands the test of time.
Unfortunately, the same can not be said about the PCL examples since - to name two - there are far better ways to do binary parsing and pathname handling today than binary-types and cl-fad. The PCL examples are a product of the time that they were written but they are tied to a particular verbose, subjective style and were not "optimal" or even particularly good, back then.
Ultimately, PCL introduces Common Lisp to the audience as does PAIP. The difference is that reading PCL in 2020 will have minimum, let's say thought-provoking, impact. Reading PAIP (or Let over Lambda, SICP, On Lisp, Lisp in Small Pieces) remains -and will remain- a paradigm-shifting experience.
I found "Lisp In Small Pieces" an extremely difficult book to digest. Non for the contents per se but rather for the prose. I never managed to get past the second chapter. Does anybody share the feeling?
Assuming that you're referring to the English version (it was originally written in French), I do agree that it's not an easy read. The translator did not do a good job in my view.
It does come together however, with some additional effort and extra passes.
Use UIOP [1] for all path/filesystem (and more) operations.
It's part of ASDF which means it's bundled with every Common Lisp implementation that counts. Generally, if something is covered by UIOP, you should use it instead of depending on a different library.
Binary parsing depends on the application constraints.
You can't go wrong by studying Frode's binary-types (not the same as PCL binary-types) though [2].
PAIP is a great book. It both teachers Lisp programming and "classical" AI programming.
Knowing classical AI IMHO should be considered as part of programmers toolbox. What was once bleeding edge AI is now high level heuristic problem solving.
And besides, this part of the book has gone a long way on how I've been programming for and setting up my Pirate Radio (Raspberry Pi radio). There are probably easier ways to do it, including just using the software they recommend in the first place, but then I don't get anywhere near the level of enjoyable education from it either.
I have read both and I also like PAIP better. I find PCL good only for somebody that don't have much programming experience. I believe that somebody that is a seasoned programmer and that wants to gets some understanding of CL will appreciate PAIP better. This is because PAIP begins with an introduction of the language that just touches all the basic stuff upfront very clearly and only afterwards starts to build on examples. So if one wants only to get an introduction to CL he can just read the first chapters and forget the rest. PCL does the opposite introducing just a few features at a time and providing a lot of examples side by side. This might force the reader to pay attention to stuff he is not really interested in.
P.S: I found the examples/practice part quite boring in both cases but for sure PAIP is more interesting as there is a chance to learn something new/unusual.
My goto recommendation for newcomers is Norvig's PAIP which is full of insightful moments and unbelievably good code and for people with more experience "Let over Lambda" by Doug Hoyte, which is a mind-blowing book mainly because of the time-transcendent nature of the examples Doug chose.