6 ms·
I'd say several reasons: 1.) a lot of folks have trouble with the abstactness 2.) a lot of folks think C syntax is how all languages should be 3.) the lisp ecos
by FractalLP 8y ago
I'd say several reasons:
1.) a lot of folks have trouble with the abstactness
2.) a lot of folks think C syntax is how all languages should be
3.) the lisp ecosystem is fractured into too many lisps like SBCL, Clojure, Racket, Allegro, Franz, Picolisp, ABCL, Shen...etc, so some confusion amongst those that are new
4.) poor windows support for SBCL...it literally tells you it is experimental if I recall correctly. Setup wasn't straightforward
5.) tooling is complex and emacs is recommended for both SBCL & Clojure, which is arguably more difficult than hitting run in most modern IDEs
6.) multi-core seems to only be in Clojure
7.) lack of decent libraries. There is always someone quick to say that this is false and that they have everything you need, but coming from Python and Perl's CPAN, I couldn't disagree more
8.) learning resources are very hit or miss. I found it hard to pay attention to many of the top lisp books because a lot of the examples such as building an mp3 database would be one line of code or two in python. Of course they're just trying to show concepts and terse expressions isn't where lisp shines, but the effect is underwhelming.
9.) your fellow developers won't use it and a large company will probably have an IT department that won't let you run in production without it being far better known: Java, C#, Python, R, C++, Perl, Ruby, JavaScript...etc without major pushback...notice how many people equate lisp with personal projects?
- mtreis86 8y ago6 - what about https://common-lisp.net/project/bordeaux-threads/ https://common-lisp.net/project/bordeaux-threads/
- klibertp 8y agolparallel[0] is a higher-level abstraction built on threads. I use it for spawning threads which execute OS commands and wait for the results, without blocking the main thread. Works very well. And anyway, if you want concurrency and/or paralellism, just go for OTP (Erlang, Elixir, LFE). [1] https://lparallel.org/overview/ https://lparallel.org/overview/
- flavio81 8y ago... or STMX, which provides software transactional memory on Common Lisp in an ultra-easy-to-use way.
- FractalLP 8y agoI'll definitely take a look at that, thank you!
- FractalLP 8y agoThese things all exist, but a lot of them seem like a library from one author as opposed to what is built-in to Java or .NET and had lots of people and money thrown at it. I'm sure the author is a wizard, but how good can the quality be? I don't have any proof here, but my suspicion is bugs and sparse documentation.
- madmax96 8y ago1: I really don't see how CL or Clojure are any more complicated than, say, Rust or C++. If anything, CL and Clojure are simpler, just different. 3: Most useful libraries are portable between different CL implementations. The choice is really "CL or Clojure or which Scheme implementation?" Not to discredit Picolisp or Shen, but those languages feel very much (esp. Shen) like a research language. Picolisp has more of a convincing productivity story, but doesn't seem like it has the momentum of existing competitors and I fail to see an advantage in using it. Depending on your goals, the choice between Lisps can be pretty simple. 5: Portacle is helping in this area by making it much easier for a beginner to learn CL without fussing with setting up SLIME and Emacs. Clojure also has an IntelliJ plugin, cursive. For Scheme, Racket seems like a painless way to start learning. 6. You can easily go multi-core in CL. It isn't as easy as Clojure, but it's definitely easier than C++ or Java (the language). 7: Clojure has access to all of Java's libraries. CL does struggle compared to Python in this area. 8: Lisp related books are among the best in CS. SICP, LoL, etc. are timeless. The Lisp family of languages definitely have room to improve, but the ecosystem is healthier today than 20 years ago, for sure.
- BeetleB 8y ago>Lisp related books are among the best in CS. SICP, LoL, etc. are timeless. Lisp books also tend to have the characteristic where you have to find the "right" compiler for the examples to work. I've yet to pick up a book where all the examples "just work".
- taeric 8y agoLand of Lisp worked well for me. Can't remember any major issues. (That said, I think I also used racket for most of the work, so I had to change some things consciously.) Though, this is a bit of a hard problem for authors. Most code that can fit as snippets or short examples does not have what any code in real projects would have. To that end, the code is literally made mainly for you to try and simulate in your head. Running on a computer is a convenience and should be used, but the goal is to internalize it all. Right?
- 8y ago
- ptx 8y ago> building an mp3 database would be one line of code or two in python You mean because of the availability of libraries, so that the code would be something like import some_database_library print("Look, I have a database:", some_database_library.connect()) ? Otherwise, how do you build a database (or anything involving MP3 files) in a few lines of Python, and how is it so much worse in Lisp?
- FractalLP 8y agoI mean the 1/2 page code was basically a built in dictionary in Python...I felt it was a step backwards. And this is someone who was very open to Lisp...I still think it has value...just a steep learning curve.
- jimbokun 8y agoYou mean this exercise: http://www.gigamonkeys.com/book/practical-an-mp3-database.html http://www.gigamonkeys.com/book/practical-an-mp3-database.ht... This is building a rudimentary in-memory database supporting SQL like queries. I didn't realize Python dictionaries support schema definitions and "select" queries?
- flavio81 8y ago>3.) the lisp ecosystem is fractured into too many lisps like SBCL, Clojure, Racket, Allegro, Franz, Picolisp, ABCL, Shen...etc, so some confusion amongst those that are new You are mixing things into that list. Common Lisp, Racket, Clojure, and Shen are different languages, serving different purposes, etc. "Franz", "Allegro", "ABCL", "SBCL" are implementations of Common Lisp, exactly the same language. ALGOL-family languages are also "fractured" into Algol-68, Pascal, Go, Ada and others, that's not a problem, since they are really different languages that give different benefits/etc. >"4.) poor windows support for SBCL" SBCL works just fine on windows. But if you don't like, just use CCL (Clozure CL). I'm currently on a Lisp project which runs equally great in SBCL and CCL. CCL is professional quality software. >6.) multi-core seems to only be in Clojure False. There are many libraries to do all sort of concurrency and multiprocessing on Common Lisp. >8.) learning resources are very hit or miss At least for Common Lisp, there are books that are arguably some of the best books on programming ever written, like "Practical Common Lisp", or PAIP. For Scheme, "Structure and Interpretation of Computer Programs" is already a high-rated classic. >notice how many people equate lisp with personal projects? Except when it's used by Rigetti for quantum computing, or Grammarly for the core server of their core business.
- FractalLP 8y agoYou quoted two companies using Lisp when there are millions of Java devs. That's like a boxer with a record of 1-500. I love Lisp, but c'mon...I guarantee it has far more hobby users than professional users. ABCL, FRANZ, ALLEGRO, SBCL, CLISP, GNU CL, Clozure might all be common lisp, but they are different implementations with different tools that will confuse a new person and several cost money. Practical Common Lisp isn't very good in my opinion, that was the example i actually used. SICP is great for a mind-opening experience, but not super useful on how to write modern software and is why the creators dropped it at MIT. For multi-core I'd rather it be core than a library, but perhaps that is petty of me. I think Lisp is great, but why it isn't popular shouldn't be a mystery to anyone.
- flavio81 8y ago>You quoted two companies using Lisp when there are millions of Java devs. So what? I was a Java dev myself. What does this mean? There are even more millions of Javascript users. What does this mean, really? >ABCL, FRANZ, ALLEGRO, SBCL, CLISP, GNU CL, Clozure might all be common lisp, but they are different implementations with different tools that will confuse a new person and several cost money. Fear, Uncertainty and Doubt. They all implement ANSI Common Lisp. Right now i'm doing a project (not personal, it is for a company) and it runs on SBCL and CCL without any change. It would probably also run on ABCL straight away. It uses software transactional memory, bridges to C libraries and other stuff that isn't on the ANSI standard, yet it can also be written, very easily, in a portable way. So, what you write is FUD. >and several cost money. More FUD. From your list, only Allegro CL (= Franz) costs money. >Practical Common Lisp isn't very good in my opinion, that was the example i actually used. SICP is great for a mind-opening experience, but not super useful on how to write modern software and is why the creators dropped it at MIT. SICP is not for writing modern software, is for understanding fundamentals. If you develop without having a solid grasp of the fundamentals, you become a "CODE MONKEY" (caps intentional), and this is what MIT is in danger of producing now (i'm not the only one to criticize the MIT for dropping SICP...)