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.
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".
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?
Lisp books in my experience have been the most reliable for running old code. I can take Lisp code from 1960 and almost entirely unmodified run it in a modern Common Lisp implementation because there's a direct line of heritage. If a book from the 90s says it supports Common Lisp, well hey, barring errata the code still works every time...
Probably true of every programming book more than a couple of years old.
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?
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?
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.
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.
Right, just like all of these stop developers from learning Java:
https://en.wikibooks.org/wiki/Java_Programming/Java_IDEs
"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."
Bullshit.
Anyone who can understand and apply the lessons in SICP will be far more productive developers than someone who just memorized some git commands and knows how to bang their head against Spring Boot until something almost useful eventually comes out.
Outside of those two points, I mostly agree with your general thesis.
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...)
> less libraries are written.
Given that Sturgeon was an optimist[0], that is hardly a problem. The only reason why most OSS libraries are using is because people don't do the due diligence of vetting their dependencies. There are more than enough libraries of adequate quality for common tasks.
[0]: “And folks, let’s be honest. Sturgeon was an optimist. Way more than 90% of code is crap.” – Al viro
It might have been Tarver talking about the Lisp curse. Lisp is so powerful that everyone kind of does their own thing while devs of C++ and Java have to band together and make massive libraries. This is a different argument, but I think your discounting the usefulness of some of the gargantuan libraries and frameworks out there. I'm not saying fundamentals aren't good, but a data scientist doesn't need to know about homoiconicity...they need Numpy/Scypy.
That's better than having different languages with different tools: Python, Ruby, Perl, ... share nothing - though they are in a similar coding domain.
Even I usually prefer to use other Emacs variants for Lisp programming: Fred, Zmacs, LispWorks, CCL, ... I prefer embedded Emacs variants which are written in Common Lisp.
With Lisps without embedded Emacs variants, usually GNU Emacs / SLIME is the best option. I can understand that this is for people used to other editors (like Eclipse, Intellij, Atom, ...) not very tempting.
GNU Emacs is especially used because that's the most widespread programmable editor, which can be extended in Lisp itself. For a non-lisp programmer that's initially not very important.
I've read a few Lisp books and have written a bit of Lisp code and understand code is data is code, but haven't put in enough time to really reap the rewards. I think my above posts were taken as an insult to the language rather than some observations over several years of playing in the community. One day I hope to join your ranks, but most of my current needs involve needing lots of built in language constructs for data analysis and scientific needs.
Typically they are simpler to use, better integrated into the platform, have less features (no games, no latex modes, no org mode, ...), have simpler key commands, are multi-threaded, are directly integrated into the running Common Lisp, don't implement all tools as editor buffers, ...
Editor User Guide of LispWorks:
http://www.lispworks.com/documentation/lw71/EDUG-M/html/edus...
IDE User Guide for LispWorks:
http://www.lispworks.com/documentation/lw71/IDE-M/html/ide-m...
Just they have different IDE's and REPLs.
That's like saying Visual C will confuse someone used to Turbo C. So C is bad.
And anyway, if you want concurrency and/or paralellism, just go for OTP (Erlang, Elixir, LFE).