
Lisp is often thought of as an academic language, but it need not be. This is the first book that introduces Lisp as a language for the real world. Practical Common Lisp presents a thorough introduction to Common Lisp, providing you with an overall understanding of the language features and how they work. Over a third of the book is devoted to practical examples, such as the core of a spam filter and a web application for browsing MP3s and streaming them via the Shoutcast protocol to any standard MP3 client software (e.g., iTunes, XMMS, or WinAmp). In other "practical" chapters, author Peter Seibel demonstrates how to build a simple but flexible in-memory database, how to parse binary files, and how to build a unit test framework in 26 lines of code.
I now generate ALL of my hobby projects in CL (SBCL on windows). I tell the LLM to 'over-comment' the code, so I get to learn as I read the output. It has been glorious. I generally use the web browser on an unused port on localhost for user IO (beautiful pages), and the app just hooks to Hunchentoot to serve.
Any 'real' programming language (meaning, one that is truly general purpose: numeric stacks, Web front and back ends, system code, utilities, etc) will always have some cruft. In CL, at least you can understand why some cruft exists. And you get used to it, because it's not like e.g. C where there are some very dark corners indeed. Check out Peter's book!
CL lets you build real apps, for real. No toys. This has value.
This would be my advice. Why? My own road was haphazard. Other books broaden your mind and teach you really cool tricks. This book gets you using lisp like you would say golang. But it still teaches you the lisp things and broadens your mind. Time spent choosing will be better spent reading this book. After that PAIP, On Lisp, SICP etc.
Then I had a couple of jobs where I was given access to data and opportunities to go beyond my expected duties by doing things with that data, i.e. automation and reporting.
I'm currently working in python on a django project, working in a financial domain. I lead a few engineers and direct/manage some projects. But I feel like I'm missing out on something when I read about people making things in zig and rust, or how they apply some numerical modelling techniques to certain problems, plus the new technologies being developed. I feel like I'm very much not knowledgeable or distinguishable enough, so I want to refine my skill a bit and maintain "sharp" in case of something happening and i need to find a new job quickly. And i want to make sure that I'm learning all that I could be learning in my current position.
Some previous books I've read / enjoyed:
* The makings of an Expert Engineer * Designing data intensive applications (haven't finished, moved house and lost the book, want to pick it up again) * Designing Elixir Systems with OTP * Practical Common Lisp
I feel like I have learned a bit with the Elixir/CL books, inwhich I apply to how i write python, but I never branch out to doing my own projects in these languages, so I feel like I'm missing out on utilizing these tools fully.
Is there anything to read that could take me to the proverbial next level?
Now apologies for the aside—and I know I'm likely wading into a very expansive topic and reducing it down to something simple—but why in Rust, if the types are known:
struct Song {
title: String,
artist: String,
rating: i64,
}
do you have to call `.to_string()` on things that look a lot like strings already? Song::new("Hate Me".to_string(), "Blue October".to_string(), 9)
Couldn't the compiler just do that for you?The ANSI Common Lisp standard applies to all compliant implementation, regardless of whether they interpret or compile the language. In earlier Lisps there might have been a difference, in Common Lisp that would be a bug.
> At what point does the compiler create an intermediate representation?
??? Are you referring to macro-expansion time?
> Why does SBCL not use LLVM?
Other than for historic reasons, why would it?
> At what point are #-starting words(read macros?) evaluated and how is that different from interpreting to compiling
You're answering your own question. Read macros are evaluated at read time.
I'm not sure whether those questions are really all that relevant to someone just starting to learn the language.
Practical Common Lisp is a fine starting point and Common Lisp The Language (2nd edition) will keep you busy for a looong time.
