4 ms·
Lisp is cool, but also not everyone reasons in the way lisp operates. For some, lisp extremely "ain't it". I've never seen lisp in production, but if I had I'm
by yareal 2y ago
Lisp is cool, but also not everyone reasons in the way lisp operates. For some, lisp extremely "ain't it".
I've never seen lisp in production, but if I had I'm sure I'd be like, ok, we use lisp here.
Lisp is just a tool, and some people with find it ergonomic and powerful, and others will find it awkward and cumbersome. Use the tools that make you happy and productive and don't worry too much about trying to find the best in an ambiguous space.
- iLemming 2y agoLisp is more like an idea (or set of ideas) rather than a concrete tool for specific tasks, and it's an absolutely wonderful, eye-opening idea. Unfortunately, as often happens, good ideas groundlessly get ignored. Concepts like formal methods, reactive programming, and immutable data structures also largely go unnoticed, despite being immensely useful for certain types of problems. Unlike those, the basic ideas behind Lisp are far simpler to grasp and probably have far more tangible benefits. The only practical inherent drawback of spending time learning and practicing Lisp today that I can think of is the limited job opportunities. Beyond that, there are only benefits. The common pushback against Lisp usually comes from misunderstanding it. Many programmers often get tired of using the same language after learning it cover to cover, as every language has certain cons and deficiencies. In my experience, with Lisp, it's the opposite. Having been part of multiple teams and guided many programmers on their Lisp journey, I've seen it many times - if someone doesn't like a Lisp dialect (e.g., Clojure) after using it for a day or two, they tend to start liking it more later. However, some people lack patience and quit without ever seeing what actually makes it so cool, deciding that Lisp is just a fad, awkward, and cumbersome. And that's really sad because, really, it is not. Just because someone dislikes, e.g., math, it doesn't become a fad.
- yareal 2y agoAlternatively, people who try it and don't like it understand themselves sufficiently to say, "this isn't for me." Nothing is objectively cool, it's super great that you enjoy it. It's also fine that other people don't.
- iLemming 2y agoI'm not trying to get people to like it; I'm trying to dispel the myths people believe. Just because I don't like running and exercise, it doesn't mean I should tell everyone there's something wrong with that. I've seen too often comments like: "Lisp is archaic and outdated," "Lisp is hard to read," "Lisp doesn't have a powerful type system," "Lisp code is not easy to refactor," "Nobody uses Lisp in production," etc. None of this is true.
- mustermannBB 2y agoTo be fair some of these are subjective. People of course should never sell their opinions as objective or facts. Which btw, I don't think the person you responded to did.
- iLemming 2y ago> To be fair some of these are subjective Okay, let's try to go through each of them more or less objectively, shall we? - "Lisp is archaic and outdated" While Lisp was introduced in the late 1950s, it has evolved considerably. Modern dialects like Common Lisp and Clojure offer extensive libraries and features that compete with contemporary languages. New Lisp dialects are constantly being added to the family. Clojure-Dart and Jank are more recent examples. - "Lisp is hard to read" Lisp’s syntax, based on simple and consistent S-expressions, can be highly readable once you familiarize yourself with it. The concise and uniform structure allows for straightforward parsing and manipulation of code. Try taking any JSON and convert it to EDN, or any HTML/JSX to Hiccup, and visually compare it - the latter would look far more readable. One doesn't even need to know any Clojure at all, to see that this is true. - "Lisp doesn't have a powerful type system" While Lisp is generally dynamically typed, Common Lisp supports powerful optional type declarations and checks. Dialects like Typed Racket offer strong, static typing. There's a new extension for CL called Coalton, and Clojure has Spec and Malli. You can do mind-blowingly awesome things with them, e.g., building a data structure for a ledger where each transaction is ensured to be in the correct order and shape — something that would require significantly higher effort to build in any other programming language. - "Lisp code is not easy to refactor" The homoiconic nature of Lisp, where code and data share the same structure, makes it particularly amenable to metaprogramming and automated refactoring. Tools like SLIME for CL and Cursive for Clojure can do an amazingly good job helping you refactor. - "Nobody uses Lisp in production" While not as mainstream as some other languages, Lisp is actively used in various domains. Companies like Grammarly use Common Lisp, and Clojure is widely adopted in the industry, particularly for data processing and back-end services. Apple built their payment system, Walmart their billing, and Cisco their entire cybersecurity platform. There are tons of examples like that. There are many seemingly great ideas in our industry that initially received hype but later faced significant criticism — goto statements, the waterfall model, object-oriented databases, CORBA, SOAP, XML everywhere, and so on. Lisp, though, despite all the skepticism, keeps coming back again and again, and just refuses to die. So, I stand by my words: Lisp (as an idea) is really awesome. Every programmer should gain at least some basic understanding of what it offers, because there's no harm in it — only benefits. Again, I'm not fighting anyone disliking any concrete tool, but hating the idea? Why? The only explanation I have for that - shallow understanding of what that idea is about.
- kazinator 2y ago> Lisp is more like an idea (or set of ideas) rather than a concrete tool Indeed, there is no language that is just "Lisp" any more. There once was, of course. There is a legend that he requested that no new language be called Lisp (and nothing else) so that there is no confusion. SBCL, Racket, Gauche Scheme, TXR ... are examples of concrete tools for specific tasks.
- kazinator 2y ago> find it awkward and cumbersome Without knowing what (if anything!) they don't find awkward and cumbersome, that is not very useful. Data is very biased in this space, because the Lisp family receives a lot of drive by visits from language nomads. A good chunk of those people find programming awkward and cumbersome. They are having a hard time, and blame the tools. Lisp is not going to fix someone who can't learn C++ or Java (or whatever) to save their life, but blogging about their disappointing experience will generate flak for Lisp. I'm saying that if you don't find it easy to edit Lisp, you can't be "normal". You must have dyslexia, ADHD or whatever. Show me how well you can work with C, Rust, Makefiles, Shell scripts, CSS, JavaScript, Kotlin, assembly language, and whatever else before I believe that you're having a problem with Lisp and nothing else. Lisp is not a refuge for those who can't hack it. I can see how some people might make that false interpretation, by a false association of tenuously related ideas. A language or language family that is under-used is not automatically something that is suitable for or used by the inept or the misfits. Programming language fringe and cognitive fringe are totally different categories.