Can anyone please comment what advantages and short-comings Common LISP has over "modern LISP" (i.e. Clojure)?
- "more interactive" resumable exceptions, better code reloading functionality
- multiple values (cumbersome to use for superficial reasons, but with much better semantics than in e.g. scheme, for sure and probably also Lua)
- compiler macros
- readtable macros (although the design leaves to be desired)
- more sophisticated pretty printer
- more "target platforms"; with clojure it's basically jvm or, to a lesser extent, JS. If you dislike both you're out of luck
- there's a treasure trove of old but interesting material that uses Common Lisp (like PAIP by Norvig)
- much nicer for writing highly imperative code
Common Lisp disadvantages:
- Common Lisp has no eco system to speak off (but at least there's less churn than in clojure land)
- the language is frozen/dead
- career suicide, even compared to clojure
- no high quality free implementations (for example sbcl has a rather poor garbage collector compared to java, go and other widely used languages)
- single precision is de-facto the default floating point type
- built around cons cells which are a terrible data structure: slow, cumbersome and brittle; there's OK support for vectors and slightly worse support for multidimensional arrays and hash-tables and very poor support for generic collection manipulation or efficient functional data structures
- no out of the box support for laziness
- no concurrency or parallelism abstractions
- no good standard pattern matching library
- brain drain: very few smart people doing interesting things left (most left by the 90ies)
- often feels plodding and cumbersome compared to clojure (destructuring, basic string or sequence operations)