>>23112I see where you are coming from, and while I'm not a real Lisp nerd, there is definitely some beauty in the core principle of the language, and there is a reason why languages like Python, Java and Ruby are so successful: they took many things that were common coding patterns in Lisp during the 1980s and 1990s and reinvented the wheel with ALGOL-like syntax. That's in part why Guy Steele was among the Java committee.
The only thing they didn't steal from Lisp yet is homoiconicity. They tried with languages like Dylan, but nobody gives a fuck about Dylan.
There is also no other programming language — except Smalltalk — that offers the same degree of interactivity as Common Lisp, or hell, even Emacs Lisp, where you can modify the behavior of the editor, which is nothing but a Lisp interpreter, in real time by evaluating a statement after pressing Ctrl-X then Ctrl-E.
Try redefining the "lambda" keyword in Python: it's impossible.
In Emacs, I can evaluate
(defmacro lambda (x) 0)
(defmacro defmacro (x y z) 0)
and completely break my editor. It's real hacker shit.
Protip: VSCode is nothing but Emacs with Javascript, without the interactivityThat said, I don't recommend to clueless beginners to start messing with Lisp if they aren't already familiar with basic programming concepts like variables, control flow, loops, functions, etc.
Lisp documentation is like kicking whales down the beach. Emacs Lisp documentation is terrible. Common Lisp is an old language and has tons of cruft dating back from the MacLisp days, like gazillons of ways to declare a variable.
Imagine yourself being a beginner all over again, and asking yourself "should I use setf or setq to declare a variable? what is dynamic scope?" or "should I use while, dolist, dotimes or the loop macro?" while a few autists start a flame war among themselves about whenever the loop macro is ""unlispy"" or not.
I'm not even talking about Scheme and its gazillion uncompatible dialects. Want to loop over something? I hope you are used to recursive thought patterns. Racket is neat and the documentation is great, but it doesn't have the same interactivity as Common Lisp and Emacs, and I don't code in Lisp to be hygienic.
Post too long. Click here to view the full text.