The problem with CL is not that it does everything, but that it does everything with a mish-mash of inconsistent idioms, thick layers of jargon, and implementation-specific behavior in places where you wouldn't really expect, leading to a combination of implementation lock-in and dependence on 3rd-party libraries that is stronger than one might expect at first.
My (least) favorite example:
(nth needle haystack)
(aref haystack needle)
Ugh! But then again, what other language provides both AREF and ROW-MAJOR-AREF?
And of course CL tooling is just weird if you aren't used to it.
Quicklisp is amazing! But it has no CLI and doesn't use HTTPS for package downloads.
Swank and Slynk is amazing! But clients other than Slime and Sly are second-class citizens.
SBCL can generate a compiled binary, cool! But the routine is called "save-lisp-and-die".
ASDF expects you to either put all of your Common Lisp projects in a single directory, or hard-code project locations in a config file. Does Go still do that too?
Ancient alien technology for sure, but at least moderately damaged upon crash-landing. Ironically, the only piece of CL tooling that feels mostly not-weird is called Roswell.
Of course all of this stuff is completely free-as-in-beer and developed almost entirely by volunteers in their spare time. Hard to criticize: they built it, and I didn't. But there is definitely a cumulative oddball feeling to it.
Some day I'll do something useful with the debugger in SLIME but so far it's mostly "look at the error message, find the one frame in the stack that tells me something useful, hit either continue or abort"
Quick help: look at Emacs/your editor menu for commands, in Emacs type "v" to go to the buggy line, fix your bug, compile the function (C-c C-c), type "r" on the buggy frame to restart it from where it failed, and voilà. If you were processing something costly, you didn't have to restart it from zero.
Can't really refute the weird feeling. But there's often a reason! (like, it makes totally more sense to install a library from within the Lisp REPL and not from the terminal, we can use it right away)
You hit the nail on the head. And I like the comparison with alien technology: in some ways it feels centuries ahead than our mainstream languages, but in other it feels they have never developed stuff we take for granted in 2024, like first-class hashmaps, Unicode and decent date/time functions.
Thanks. I may have taken "first-class" too literally. :)
Constructor syntax is nice-to-have, but I don't think the lack of it is evidence of alien technology. Java has the same problem, for example, and Java is about as non-alien as you can get. Overall, hash maps are quite well done in CL, and good surface syntax is easily found in popular libraries, if that's a pain-point (serapeum, etc.).
I'm happy to help you find sb-unicode. :) I rarely use CL these days, but when I do, I'm so grateful to the SBCL team for their amazing and ongoing work.
While you speak the truth about CL, I have been using CL for 40+ years and I can be happy by using my own preferred subset of the language. BTW, I do the same with Haskell. I am enthusiastic, but a novice, for Haskell but I use a shockingly small subset of the language, language extensions, and available libraries.
My (least) favorite example:
Ugh! But then again, what other language provides both AREF and ROW-MAJOR-AREF?And of course CL tooling is just weird if you aren't used to it.
Quicklisp is amazing! But it has no CLI and doesn't use HTTPS for package downloads.
Swank and Slynk is amazing! But clients other than Slime and Sly are second-class citizens.
SBCL can generate a compiled binary, cool! But the routine is called "save-lisp-and-die".
ASDF expects you to either put all of your Common Lisp projects in a single directory, or hard-code project locations in a config file. Does Go still do that too?
Ancient alien technology for sure, but at least moderately damaged upon crash-landing. Ironically, the only piece of CL tooling that feels mostly not-weird is called Roswell.
Of course all of this stuff is completely free-as-in-beer and developed almost entirely by volunteers in their spare time. Hard to criticize: they built it, and I didn't. But there is definitely a cumulative oddball feeling to it.