Why Lisp Changes How You Think About Programming and Problem Solving
A Road to Lisp: Why Lisp

I discovered that Lisp's steep learning curve unlocks unique powers impossible in other languages. By treating code as data, you can grow the language itself to fit your specific problems. This approach, centered on macros and homoiconicity, fundamentally shifts how you construct algorithms and view programming, making you a better developer regardless of whether you adopt Lisp permanently.
You will be able to program Lisp itself and thus adapt the language you use to the problems you are solving.
- GMoromisato
Programming is in tension between the Light Side and the Dark Side.
The Light Side is about preventing the programmer from making mistakes: Get rid of go-tos! Add static types! Do not allow a bug to be expressible. The Dark Side is about giving power to the programmer: Macros? Obviously. Operator overloading? Self-modifying code? Multi-line reg-exps? Go to town!
The Light Side knows programmers are flawed and imposes constraints. The Dark Side trusts programmers with power. Neither side is correct all of the time, and a good programmer learns both.
Lisp is interesting in that it is clearly Dark Side programming (the programmer can do anything) but it's still admired by Light Side programmers. Maybe there's something about the simplicity of the language that makes it seem platonic--almost incorruptible. Or maybe Lisp is so pure that it embodies both Light Side and Dark Side, like a god that spawned the programming universe.
- AlexeyBrin
The website seems to have a bug with syntax highlighting. Pieces of code included in the post text are black, you can still see the actual text if you select it with your mouse. Same bug on Chrome desktop and on Safari on iPad
- vindarel
Don't miss out, we had new excellent editors and tools being released in the last months:
Mine: a complete, single-download application that comes with everything needed to experience the interactive and incremental development programming workflow, including hot-reloading and on-the-fly debugging. For CL and Coalton.
https://coalton-lang.github.io/20260424-mine/
OLIVE: a new hand-made plugin for VSCode.
ICL: a new REPL for the terminal and the browser with advanced features.
as a bonus: a JupyterLite kernel based on JSCL that runs 100% in the browser.
find them all: https://lispcookbook.github.io/cl-cookbook/editor-support.ht...
- abetusk
There are many articles extolling the virtues of Lisp. I would like to see some articles that have a level-headed criticisms or critique of Lisp, it's ideas and it's place in the ecosystem of languages.
Articles like this, and the PG articles it references, amount to "if you know, you know". I understand the appeal and I understand the explicit and implicit arguments this article is making.
Computer programming has matured quite a bit in the past 60 years. I would like to see more articles that are more considered in their examination.
- awolven
I've been programming Lisp too long to appreciate it's features. It is not until I watch in shock and horror how people sabotage themselves in the popular and economically less risky languages that I suddenly come to appreciate Lisp again.
- zbentley
There are some truly powerful and unique things about Lisps, but I wish articles like this would stop including REPLs and hot-reloading. The former have been table stakes for interpreted languages (and some compiled ones!) for years, and the latter is neither unique nor particularly widely used (hot reloads have to tangle with state and patching, so resetting the world for ease of reasoning is considered a best practice for a reason).
- BellsOnSunday
I thought this was going to be https://web.archive.org/web/20120106121645/http://wiki.alu.o.... Brings back memories of following comp.lang.lisp, not least as a sort of soap opera. Lots of characters and drama, as well as programming wizardry.
- shevy-java
> After getting comfortable reading code with so many parentheses
I never managed to get over the ().
Ruby has a very flexible syntax, compared to many other languages,
in that you can omit syntax in many cases. For instance, using
() for method calls is largely, for the most part, optional. So
when I have the python code:
cat = Cat()
cat.meow()
I find it worse than the ruby code:
cat = Cat.new
cat.meow
(Though you can use () in ruby there too; but most people
won't do so as there is little point in that.)
This is a superficial issue though. Python's biggest mistake
is to require implicit self. It always feels as if I need to
hand-hold python and trying to explain to it what an object
is and what self is. In ruby I don't have that issue. Note
that I find both languages fine, but ruby is "more" object
oriented than python is, for many reasons.
Lisp is quite different though. I had some exposure to it
via scheme and while it can be fun, I feel that lisp is a
worse programming language than either ruby or python. The
old game haxima/nazghul was given up eventually, primarily
due to lack of time, but also because the author was no
longer convinced of scheme (the core of the engine is in
C if I recall correctly). He tried to switch to python,
though, which did not work (but, again, I think it was mostly
due to lack of time). The scheme code in haxima/nazghul
was quite interesting (https://sourceforge.net/projects/nazghul/
if you want to look at the scheme cod […]
- doug_durham
In commercial practice DSLs are an anti-pattern. Someone will create an under-documented DSL that only they understand and move on. The following programmers have to try to decipher this strange language. It is almost always a better idea to use standard language structures and features. Code is read more than it is written.
- davidpapermill
This is well-written.
I always thought that the "answer" to programming would be that one day everyone would use Lisp and with awesome tooling and libraries things would be wonderful. In fact, my plan for retirement was to build high-quality libraries for a Lisp language to accelerate this process.
Does the rise of AI bring an end to this dream? Is that, once again, we have solved the problem by adding more cruft? Rather than a superintelligent AI writing in the best programming language available, we're going to just spam lots of Python code until it works?
Does this matter? I don't know, I just wanted a world of elegance.