> <i>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.</i><p>wow, rly? you have this in Eclipse (and probably every 'modern' IDE out there) for every language.
few more slogans:<p>* Ruby's emphasis on writing DLS came from Lisp world, where this practice have been developed.<p>* Some of Python's elegant forms - with, lambda and various comprehensions - like this: return (x, y) or a = [3, 4, 5] came form Lisp.<p>* Lisp's macros are unmatched. Those of C/C++ are mere string substitution.<p>* REPL is Lisp's invention.<p>* Shadowing (re-binding) of variables and procedures used routinely - we don't need any special "dependency injection".<p>* Logically, everything is a pointer, so, technically, every "object" if a first-class citizen.<p>* Lisp is mostly-functional, so, in cases where you must have mutation, you just do it.<p>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.
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.<p>It's very naive and the author is unexperienced IMHO.<p>For example the author writes: <i>"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."</i><p>Ouch.<p>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.<p>Lisp dialects can really shine in various ways but "refactoring" ain't exactly one area where Emacs (which he mentions and which I do <i>love</i>) beats "modern IDEs".<p>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.<p>His description as to how he's upgrading servers by manually copying binaries also shows he's disconnected from actual enterprise deployment techniques.<p>Overall it feels very amateurish.<p>But kudos for picking a Lisp dialect and sticking to it and reaping the benefits of that smart choice...