3 ms·
Like Smalltalk, and to some extent Erlang, Lisp is an integrated programming platform that loads and reloads code while the system runs. Learning Lisp is not ju
by mbrock 11y ago
Like Smalltalk, and to some extent Erlang, Lisp is an integrated programming platform that loads and reloads code while the system runs. Learning Lisp is not just learning a language grammar—it's learning a habit of development that is incremental and live in a way that's miles away from C coding and quite far from most typical styles of Python coding.
You open your editor and connect to Lisp. Then you spend your time interactively defining functions, changing them, defining variables and inspecting them, and so on.
This has consequences that you need to experience or see to understand how it plays out in practice. You tend to start coding in a different way. Paul Graham calls it bottom up programming.
There are also synergistic effects with features like macros which enable radical kinds of convenient code generation / DSL-building, and conditional restarts which are like exceptions but fundamentally more powerful in a way that helps greatly when doing interactive coding, the multiple dispatch object system, the online documentation system, and so on and so on.
Lisp is shock full of good ideas that are still absent from most other languages. But mere bullet lists aren't convincing, like in so many other situations.
I wrote a web service in Lisp and just for convenience I wanted to have it incrementally recompile and reload its own source code on every request if the commit hash of the working tree had changed. This was a three line hack.
I also generate a memory image every time I make a deploy, which means that the server starts in a finger snap including the whole runtime for all this dynamic stuff.
Another advantage for me is the HyperSpec, an excellent hyperlinked reference of the whole standard language. It's an industrial quality manual written by literate professionals and so it's exhaustive, correct, and mostly unambiguous.
I also simply enjoy how Emacs with Lisp is a world-class IDE. Right now I'm mostly offline with just slow pricey 3G but I made sure to install a bunch of Lisp packages and the HyperSpec and it's a joy to code using just Emacs and SBCL in the background. I can look up any documentation, semantic tab completion and argument list popups work perfectly since the editor is aware of all the code and the namespace rules and so on.
I just don't know any other language that's so pleasant and fun to develop with. (After learning it, of course.)
People call Lispers smug because they love the language more than any other, but I don't feel smug because I didn't come up with the thing, I just learned it and like it. I'm humbled by the engineering and quality of the tools and everything. It's not some weird academic obsession. It just makes me happy on a daily basis.