6 ms·
I think it would be valuable for other commenters to share why they did or did not choose Lisp for their most recent project(s). I chose Go for a recent projec
by ridiculous_fish 11y ago
I think it would be valuable for other commenters to share why they did or did not choose Lisp for their most recent project(s).
I chose Go for a recent project, and TypeScript for another. Both languages make getting started very easy: they have straightforward installation, good tooling, and a lot of support for when things go wrong.
I did not seriously consider LISP, and I think the main reason is that it's a very confusing landscape. Google "how to install LISP" and you get a page like https://en.wikibooks.org/wiki/Common_Lisp/First_steps/Installation https://en.wikibooks.org/wiki/Common_Lisp/First_steps/Instal... with half a dozen options. It's hard to choose and most of these do not look promising. For example, Steel Bank Common Lisp is one I have heard of, but their binaries are out of date and they use SourceForge (shiver). Arc is another, but their installation instructions do not inspire confidence with disclaimers like "don't use the latest version." My concern is I will spend two weeks diving in before hitting some hard limitation, and I'll be stuck.
(Clojure is surely the best known modern LISP, but I do not want to depend on the JVM.)
Speaking as an outsider, I think LISP would gain a lot more traction if its community coalesced around a single implementation. (Sorry if that's a clichéd argument). This would allow for investment in areas like documentation, platform support, tooling, etc. The functional language community went through this and the result was Haskell, which is excellent in all of those areas.
- sklogic 11y agoAll the modern lisps are installed just like anything else, whith apt-get install. I've no idea what are you talking about.
- giancarlostoro 11y agoUsually apt-get doesn't feature the most recent up to date release, also you assume everyone uses a Debian derived distribution of Linux, bad assumption. I'm on openSUSE and I'm sure many are on Windows or Mac.
- sklogic 11y agoI meant "apt-get" or whatever else is used in your system - brew, yum, whatever.
- pm215 11y agoIf you need the absolute most recent release of a language to write code in it, that in my opinion is a bad sign -- maybe it's still a bit new and evolving rapidly, if there's a runtime component it might be awkward to distribute to machines you want to run on, and setting the dev environment up becomes a little painful which can discourage others from contributing. Not a dealbreaker, especially if you're just experimenting or doing a small private project, but for anything serious I would be worried if I couldn't develop and run it with whatever version of a language is shipped with the major Linux distros.
- giancarlostoro 11y agoI'm on about it being behind 2 or more major versions.
- blue1 11y agoI don't know if this is still the case, but for SBCL on Debian installing with apt-get would get you an incredibly outdated version, and all that common-lisp-controller nonsense. The standard advice was NOT to install with apt-get, but to install manually.
- oskarth 11y agoThere's no one lisp; there are many. Here are the top three: Clojure: http://clojure.org/getting_started http://clojure.org/getting_started Racket: http://docs.racket-lang.org/getting-started/ http://docs.racket-lang.org/getting-started/ Common Lisp: https://www.quicklisp.org/beta/ https://www.quicklisp.org/beta/ Lisp is a family of languages. All the dialects are good in their own way - "standardization", if such a thing even makes sense, would be counter-productive.
- ridiculous_fish 11y agoThe history of Haskell is described in this PDF: http://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/history.pdf http://research.microsoft.com/en-us/um/people/simonpj/papers... This paper describes the situation in the mid-1980s as a "lazy Tower of Babel" with competing lazy-functional languages like Miranda, MLs, Orwell, Clean, Ponder, each good in its own way, but none of them with critical mass. Thus they decided to create Haskell as a new, common language. No doubt each language designer felt that Haskell compromised on their particular vision, but rallied around it anyways, resulting in a far more potent force for lazy functional programming than ever could have been achieved working separately. Why does this not describe LISP today? Honest question.
- sklogic 11y agoLisp thrives in Babel, while the other kinds of languages may be harmed by it. Lisp is a meta-language and it facilitates building a Babel tower of eDSLs for each and every little project. It is the main source of its unmatched power.
- ridiculous_fish 11y agoBut this doesn't require the proliferation of implementations. Each little project doesn't require its own garbage collector, for example. The paper I linked discusses some of the "practical" areas of Haskell: profiling, debugging, packaging, FFI, compiler errors and optimizations, etc. Surely there's a lot of energy being expended replicating this stuff across the various Lisp implementations?
- giancarlostoro 11y agoThe easiest Lisp I would recommend is probably Racket, it is what got me into Lisp personally. After that I would give Clojure a shot, it has some amazing tools like lein. I think first time setup is a huge key for programming languages. For example Go has the benefit of an amazing out of the box standard library, unlike D and Ruby where you would install via a package manager the right tools to get a web project going, you could do it all from vanilla Go code. Of course in both Ruby and D you could do it from vanilla code, but it's not as seamless and tried and tested I suppose?
- jwdunne 11y agoIf you are reading SICP or want to, Racket is also a good choice here. I bounced between SICP and The Little Schemer with Racket. I didn't use the SICP language until later on but I found that Rackets documentation was so good that it was pretty easy to fill in any blanks. All in all, that experience was useful to me to both learn Scheme, learn core concepts, such as recursion, higher order functions, closures and so on whilst also paving a familiarity that has aided in quickly picking up CL, Clojure and also, in my opinion, Haskell. I would recommend Racket whole heartedly.
- greggman 11y agoThis is spot on for me. I actually have used lisp in one large project but I haven't used it since. It wasn't my choice then and the guy who's choice it was was a total lisp guru. I don't have his chops. I did enjoy parts of it but not enough to switch The biggest issue for me vs other options is lack of community / packages Pick Python, JavaScipt, even Perl and there's millions of solutions to pick from so you can get shit done. Maybe that stuff exists for lisp but I'm unaware of it. If there was a popular lisp with something like npm, easy integration with non lisp libraries I might consider it. There's also the issue of perf. The lisp I used was optimized for generating machine code for games. My understanding is most lisps don't perform at that level. Of course as a replacement for Python, perl, JavaScript that's not an issue. But it would be for C/C++ for games Another issue is finding collaborators.
- fnordsensei 11y agoYou can run Clojure on Node if you prefer. That's what I'm doing in a current project.
- Scarblac 11y ago> (Clojure is surely the best known modern LISP, but I do not want to depend on the JVM.) What are the reasons you don't want to depend on the JVM that don't apply doubly so to Common Lisp?
- sheepmullet 11y ago> Clojure is surely the best known modern LISP, but I do not want to depend on the JVM. Why don't you want to depend on the JVM? You are deliberate ignoring the most well known modern lisp, which has straightforward installation, great tooling, and lots of support available. Not to mention the JVM is one of the most powerful and highly optimised vm platforms and has hundreds of thousands of man years invested in high quality libraries. > Speaking as an outsider, I think LISP would gain a lot more traction if its community coalesced around a single implementation And surely they would focus around a JVM implementation. The only other platforms that even come close are c/c++, and the .net clr.
- vram22 11y ago> (shiver) Nice "syntactical" touch :) Let me try a variation: (shiver 'me 'timbers)