Live data from Hacker News

Ask HN: Best Lisp for software development?

news.ycombinator.com

1–10 of 138 posts

Ask HN: Best Lisp for software development?

#1
Hi HNers, I've built a lot of software in Python and Ruby over the years and recently, I've become interested in Lisp but am unsure which Lisp/Scheme variant to learn for building production grade software.

Ideally, I would like to learn the most modern one i.e. robust package management, tooling, ecosystem, etc. Really the main requirement is that I would like to be able to build production ready software with a Lisp that I can use at and for my company.

I've looked into Clojure and like a lot about it, but don't want to have to dig into the Java world. Is there any alternative out there? Any suggestions are appreciated :)

Re: Ask HN: Best Lisp for software development?

#3
I suggest Common Lisp. If you can afford to spend money go with Allegro Common Lisp or Lispwork. The best open source implementation is SBCL that works best on Linux. If you want to avoid commercial implementations don't expect any fancy IDE. You'll have to find what best suits you between Emacs and other alternative plugins for the most common open source text editors. If you are already familiar with Emacs then SBCL+Emacs+SLIME is a no brainer.

Re: Ask HN: Best Lisp for software development?

#4
My personal choice would be Clojure. I learned Racket and Common Lisp but haven't used them build something production-grade yet. I don't even know how to properly build, deploy and monitor a Racket server yet.

Racket is good but the toolchain and libraries are far behind Clojure. Especially Cider and Cursive are so great, and for libraries, there are a lot of solid ones like Ring/Compojure, interesting things like Duct, Pathom, Fulcro.

Common Lisp is also good, SBCL/Slime is solid, but it has its own idioms, a multiple paradigm Lisp-2 and feels pretty different from Scheme and Clojure. I found single-paradigm languages like Clojure and Scheme are sufficient to do most things already.

Java-world-wise, you don't have to deal with Java most of the time if you don't want to. There are plenty of Clojure libraries which of course follow Clojure idioms.

Re: Ask HN: Best Lisp for software development?

#5
If you don't want clojure, common lisp is the closest contender it has excellent tooling, performant compilers (sbcl) and mature package management however be prepared for rude shock when it comes to ecosystem support. Other languages make up for the lack of lisp's power by having excellent support of production grade libraries. You might struggle in doing soemthing basic like talking to the chrome browser via cdp, you will have to roll your sleeves and write your own, this looks fine initially but becomes tedious when you end up creating too many libraries of your own for which solutions are readily available in other languages. This is the reason why clojure is much better choice as you still get access to all the java libraries. I wish there was similar solution for golang so that you enjoy the power of lisp without sacrificing the ecosystem support.

Re: Ask HN: Best Lisp for software development?

#6
post #3

I suggest Common Lisp. If you can afford to spend money go with Allegro Common Lisp or Lispwork. The best open source implementation is SBCL that works best on Linux. If you want to avoid commercial implementations don't expect any fancy IDE. You'll have to find what best suits you between Emacs and other alternative plugins for the most common open source text editors. If you are already familiar with Emacs then SBC…

The Allegro IDE puts syntax highlighting in the undo stack.

Better to use SLIME or the eli with it ;).

That being said, there are things you can do in the IDE that I don't believe you can do in SLIME or eli.

Re: Ask HN: Best Lisp for software development?

#7
post #4

My personal choice would be Clojure. I learned Racket and Common Lisp but haven't used them build something production-grade yet. I don't even know how to properly build, deploy and monitor a Racket server yet. Racket is good but the toolchain and libraries are far behind Clojure. Especially Cider and Cursive are so great, and for libraries, there are a lot of solid ones like Ring/Compojure, interesting things like D…

Exactly. You "have to" deal with Java for Clojure about as much as you "have to" deal with C for Python, or C++ for Node.js.

The implementation leaks for some dependencies, and it is easy to drop down into the lower language, but you can avoid knowing much about it.

Re: Ask HN: Best Lisp for software development?

#8
Given your background, consider trying out hylang, which transpiles to Python and can use Python libraries. I played around with it a few times a couple years ago, but never developed a serious project due to limited tooling. The situation might have since improved. I've considered putting together an LSP server for it because it'd fun to use for personal projects and scripting.

Re: Ask HN: Best Lisp for software development?

#10
post #4

My personal choice would be Clojure. I learned Racket and Common Lisp but haven't used them build something production-grade yet. I don't even know how to properly build, deploy and monitor a Racket server yet. Racket is good but the toolchain and libraries are far behind Clojure. Especially Cider and Cursive are so great, and for libraries, there are a lot of solid ones like Ring/Compojure, interesting things like D…

Try Clojure. My advise and what wow'ed me the most: install Leinengen the package manager for Clojure and try a hello world web app tutorial that follows Leinengen. Lein will download and install Clojure for you and pull in all the dependencies. Idk any package manager that bootstraps itself like this. All you need is the Lein JAR and obv a JRE installed and you are good to do anything.

Also having done both Clojure and Enterprise Java. I can tell you its not married to Java. Theres plenty of Clojure specific libraries you can use.

Also try out Nightcode. Its coded in Clojure and is very straight forward. Just hold CTRL and it will show you all available commands.

Post reply on HN