5 ms·
The ecosystem is a function of popularity. Lisp isn't very popular because, at least in my opinion, it requires a relatively high level of maturity and experie
by lmilcin 5y ago
The ecosystem is a function of popularity.
Lisp isn't very popular because, at least in my opinion, it requires a relatively high level of maturity and experience to be used effectively on nontrivial projects.
Every single project in Lisp (Common Lisp, Clojure) that I have observed ended in a disaster mostly because developers could not figure out what the strengths of Lisp are to realize the benefits and then killed themselves with too much freedom.
Absent large enough number of success stories companies will default on Java because it is good enough language to be able to effectively realize typical enterprise application and dumb enough to be used by a beginner dev, even at the cost of boilerplate.
At least that's the official story. It is really difficult to explain to business that you could do whatever they want with 1/5th or 1/50th of the amount of code if you just used a good language for it.
- coliveira 5y agoI think it is a matter of education. Software developers learn to program in traditional languages, and Lisp is just an add on. So they really don't know how to use Lisp well. Languages like Python and Java benefit from all the formal education programmers have received in the concepts they use.
- mypalmike 5y agoI think it's more fundamental than that. Reading and writing Lisp means turning your brain into an AST analyzer. Some programmers love this. Most don't.
- pjmlp 5y agoYeah although changing from print(x) to (print x) isn't that much of a deal. Where I saw fellow university friends having a problem was with thinking in Prolog and computational logic.
- mypalmike 5y agoYou're right - at the single element level it's not that different. But the overall effect is very different. For instance, simple ergonomic things that help programmers read code, like the word "else" in an if statement/expression are elided because its AST is implicit in its position in Lisp. Similarly, you can't quickly scan a page of code for something like "=" to see what's getting assigned - you have to look for let pairs. And even then, making local variables seems to be considered wasteful in Lisp if there's a way to structure it so that the value can be placed somehow directly into the AST as the evaluation of an expression. The result is that most Lisp code I've seen has a rigidity to it of deep expressions within expressions. Deep expressions are certainly possible to implement in other languages, but it's rare to see it done so thoroughly as Lisp developers seem to enjoy doing. The result is "hard to read" in the sense that it's harder to scan syntactically (lisp having essentially no syntax) and harder to modify due to the carefully constructed expression nesting. These may both be seen as my own shortcomings wrt the language, but I think many others share them.
- pjmlp 5y agoHardly any different than hunting down for ?: on C derived languages, clever uses of LINQ inspired expressions, or why a bunch of ([{((}]]) distributed across function call, if, else, while expressions aren't nesting properly.
- lmilcin 5y ago> (...) although changing from print(x) to (print x) isn't that much of a deal. Except it is. One is just syntax you write to get compiler to emit code you can more or less predict at "write time" and the other is a data structure you can operate on and get to emit any code you want. Most people I worked with on Common Lisp / Clojure projects never made the leap to treat the program as data structure. So it evidently is "a big deal". The whole point of Lisp is to have your program be a data structure and then have a core language that is very good at manipulating data structures, so if somebody doesn't get it they are not really realizing benefits of Lisp and they would be better off in a poorer but more approachable language like Java.
- pjmlp 5y agoIt is a matter of quality as well, many universities do still teach Lisp languages.
- dileepand06 5y agoAwesome! Its really amazing piece of writing, I have got much clear idea concerning from this paragraph.Visit for my Site - https://fitnesstip4u.in/ https://fitnesstip4u.in/
- mbrodersen 5y ago25 years of programming experience here. I have written my own Lisp runtimes, micro kernels, C compilers, high performance web servers, a million selling game written in C, high performance pairing/rostering optimisers for the airline industry etc. I am a language geek and have programmed in pretty much everything I could get my hands on. And are currently maintaining a high performance compiler for a Haskell style language, and have fun learning how to prove code correct using Coq/F*/Idris/Lean. Is that mature enough for you? I would have zero problem writing applications in Lisp. But I choose not to. Why? Because I am more productive in other languages. That might not be the case for you. However your N=1 experiment doesn’t in any way generalise to N=everybody else.
- mbrodersen 5y ago> it requires a relatively high level of maturity and experience to be used effectively on nontrivial projects. Other languages scale smoothly from beginner to expert. So I guess that your assertion shows that Lisp is a less useful language? Experienced programmers using non-Lisp languages are successful every day. Your OS/mobile phone/browser/… is the result of their work. So I guess other languages are better for experienced developers as well? In other words, the real world evidence seems to suggest that Lisp is not good for beginners and not good for experienced developers.
- mbrodersen 5y agoIt would be really nice to see all the awesome code written by the Lisp lover who downvoted this post. Because Lisp is apparently this magical language that enable you to write world class software so much faster than languages used by the rest of us. So where is it? All of this wonderful Lisp code that is so much better than the C/C++/Java/JavaScript code that actually run the world? I suspect I will have to wait a very long time for a good answer.