4 ms·
Any good guides on how to get started in Lisps, from a programming languages theory perspective?
by MH15 6y ago
Any good guides on how to get started in Lisps, from a programming languages theory perspective?
- DonaldFisk 6y agoThere's Lisp In Small Pieces by Christian Queinnec (https://www.amazon.co.uk/Lisp-Small-Pieces-Christian-Queinnec/dp/0521545668 https://www.amazon.co.uk/Lisp-Small-Pieces-Christian-Queinne...), and if you want to look into CLOS in depth, there's The Art of the Metaobject Protocol by Kiczales, des Rivieres, and Bobrow (https://www.amazon.co.uk/Art-Metaobject-Protocol-MIT-Press/dp/0262610744/ https://www.amazon.co.uk/Art-Metaobject-Protocol-MIT-Press/d...). There's also a good older text, Anatomy of Lisp by John Allen (https://www.amazon.co.uk/Anatomy-LISP-McGraw-Hill-computer-science/dp/007001115X https://www.amazon.co.uk/Anatomy-LISP-McGraw-Hill-computer-s...).
- fiddlerwoaroof 6y agoI really liked Practical Common Lisp by Peter Seibel ( https://gigamonkeys.com/book/ https://gigamonkeys.com/book/ ) however, ignore the environment setup: the recommendations it makes are no longer maintained, these days Portacle is the best way to get started. One thing I really like about this book is it assumes you know basic programming ideas, so it gets into distinctively “lispy” features relatively quickly. The chapters on exception handling and Common Lisp’s object system, in particular, really sort of blew my mind and had a fairly profound influence on the way I think about programming languages.
- fiddlerwoaroof 6y agoHmm, maybe this isn’t the best for PLT: for that, I’d recommend the Art of the Metaobject Protocol which is a really interesting case study in the design of the implementation of a fairly complex part of the CL standard.
- susam 6y ago> I really liked Practical Common Lisp by Peter Seibel ( https://gigamonkeys.com/book/ https://gigamonkeys.com/book/ ) however, ignore the environment setup: the recommendations it makes are no longer maintained, these days Portacle is the best way to get started. A bunch of us from Freenode IRC have formed Common Lisp Programming Challenge (CLPC) at https://github.com/spxy/clpc https://github.com/spxy/clpc in order to help beginners get started with Common Lisp (CL) while learning the language from Practical Common Lisp by Peter Seibel. The outdated environment setup in the book can indeed be a genuine hurdle for a beginner. Portacle is a great way to get started. In the CLPC repository though, we are documenting the steps to set up Emacs, SLIME, etc. from scratch, so that a beginner to the CL ecosystem can try out and understand the traditional way of installing and setting up these tools. If anyone here comes across this comment and is already reading or about to start reading the book Practical Common Lisp, or is eager to learn Common Lisp, you are welcome to visit https://github.com/spxy/clpc https://github.com/spxy/clpc and join the Common Lisp Programming Challenge.
- fiddlerwoaroof 6y agoYeah, it's all tradeoffs, Portacle has the advantage of not requiring you to learn emacs as much to learn Common Lisp.
- linguae 6y agoI am finishing up teaching an undergraduate-level course on programming language principles and paradigms. Here is what I recommend: 1. Study Scheme for an introduction to programming in a Lisp-like language. I used Structure and Interpretation of Computer Programs as one of my course textbooks (I also assigned my students separate textbooks for the Prolog and Smalltalk portions of the class). My favorite part of this book is its discussion of the metacircular interpreter (i.e., a Scheme interpreter written in Scheme), which is key to understanding how a Lisp works internally. 2. Read the Lisp 1.5 Programmer's Manual. While this Lisp has long been succeeded by more modern Lisps, it is a very nicely designed manual that discusses the implementation of Lisp. It also has a short metacircular interpreter on page 13 that profoundly inspired Alan Kay and many other luminaries of computer science. 3. Begin learning Common Lisp. Common Lisp is much more complex than Scheme is; Common Lisp is to Scheme as C++ is to C. I started getting serious about learning Common Lisp earlier this year, and I am currently working through the Advent of Code exercises in Common Lisp. My favorite intro book is Common Lisp: A Gentle Introduction to Symbolic Computing. I also own a copy of Common Lisp Recipes, which has been valuable for learning Common Lisp idioms; part of the challenge of learning a large language is figuring out what are the most idiomatically correct ways of doing things. 4. Read The Art of the Metaobject Protocol. I have a copy of the book, but I haven't gone through it yet. My goal is to work through this book to have a full understanding of the Common Lisp Object System.
- Jach 6y agoRegarding 4, I'd suggest reading Object-Oriented Programming: The CLOS Perspective first. It also has a great cover (same illustrator as AMOP), though it's not evident from Amazon's page last time I checked. This book is really a big collection of papers from several authors. It covers the topics of Lisp's OOP system and some of its history, its unique features (especially some comparison chapters with C++, Smalltalk, Eiffel), its meta-object protocol (and why you'd want it), some production reports from the field on its use in helping application development, and some implementation details to ward off "surely this is sooo much slower than a plain old function call?"
- chronal 6y agoWhat textbooks did you assign for prolog and smalltalk?
- emmanueloga_ 6y ago[1] and [2]. [3] is a good intro in a more practical perspective. 1: http://www.eopl3.com/ http://www.eopl3.com/ 2: http://cs.brown.edu/courses/cs173/2012/book/ http://cs.brown.edu/courses/cs173/2012/book/ 3: https://ds26gte.github.io/tyscheme/ https://ds26gte.github.io/tyscheme/