“Lisp is a programmable programming language.”
— John Foderaro, CACM, September 1991
Here’s my view:
On the surface, Lisp is a nice, simple functional programming language. There’s almost no syntax, and all the pieces fit together in logical ways.
If you dig a little deeper, read SICP, and write a metacircular evaluator, you discover two things: One, the whole interpreter (given just a few primitives) is just barely a page of code, and two, the relationship between code and data allows for elegant programming techniques.
Once you’ve fully absorbed this, it feels like other languages are set in stone when they only allow you to say a few things. Lisp can build any abstraction at all if you can define syntax and semantics for it.