Why Lisp?
> This is helped by a great feature of the environment (Emacs/SLIME) which provides cross-referencing tools, for example, I can place the cursor on the name of a function and ask “where is this defined”, and it jumps to the place of the definition, which could be in my own code or in third party code. But I can also ask “where is this function called” or “where is this variable referenced”. This is extremely useful for code refactoring and it beats every “modern” IDE I've seen.
wow, rly? you have this in Eclipse (and probably every 'modern' IDE out there) for every language.
few more slogans:
* Ruby's emphasis on writing DLS came from Lisp world, where this practice have been developed.
* Some of Python's elegant forms - with, lambda and various comprehensions - like this: return (x, y) or a = [3, 4, 5] came form Lisp.
* Lisp's macros are unmatched. Those of C/C++ are mere string substitution.
* REPL is Lisp's invention.
* Shadowing (re-binding) of variables and procedures used routinely - we don't need any special "dependency injection".
* Logically, everything is a pointer, so, technically, every "object" if a first-class citizen.
* Lisp is mostly-functional, so, in cases where you must have mutation, you just do it.
Enough for today.) Over-excitement is a vulnerability.)
Interesting that "Lisp" is assumed to be Common Lisp and that Scheme is assumed to be strictly a learning tool. I've found Racket to be much more useful than any other Common Lisp/Scheme.
It's not so much a question of "Why Lisp?" as it is a question of "Which Lisp?," if you ask me.
There's only a few reasons to use Lisp. It's educational from a math/comp-sci aspect, you enjoy programming in it, and you can make money doing so. Career wise, it's way down on the list of languages/environments in which I would choose to do my daily coding. (And I don't currently have my brother-in-law calling me on a weekly basis to assist in automating various tasks in AutoLisp... )
I'm a big Lisp dialects proponent but I don't like that article very much.
It's very naive and the author is unexperienced IMHO.
For example the author writes: "I can place the cursor on the name of a function and ask “where is this defined”, and it jumps to the place of the definition, which could be in my own code or in third party code. But I can also ask “where is this function called” or “where is this variable referenced”. This is extremely useful for code refactoring and it beats every “modern” IDE I've seen."
Ouch.
The author doesn't seem to be very knowledgeable of "best practices" and IDEs from the last ten years available in the Java/C# world.
Lisp dialects can really shine in various ways but "refactoring" ain't exactly one area where Emacs (which he mentions and which I do love) beats "modern IDEs".
Apparently the author's only experience comes from old JavaScript development environments and some Perl hacking. He's hardly "connected" with real-word, modern, way of developing software.
His description as to how he's upgrading servers by manually copying binaries also shows he's disconnected from actual enterprise deployment techniques.
Overall it feels very amateurish.
But kudos for picking a Lisp dialect and sticking to it and reaping the benefits of that smart choice...
Because Lisp answers all questions recursively. Even robots understand this.