Live data from Hacker News

Ask HN: Best Lisp for software development?

news.ycombinator.com

71–80 of 138 posts

Re: Ask HN: Best Lisp for software development?

#71

> building production grade software IMO Clojure is the only viable choice today (that fits your requirements) - Common Lisp (sadly) on the trajectory of becoming "Latin of Lisps". If you seriously into Lisps, at some point you'd probably would have to learn it, but practicality of that knowledge is slowly diminishing. - Racket is still quite "academic", not much of it is used in the enterprise (in comparison). - Erl…

> Clojurescript is probably the best AltJS alternative today (compared to Elm, Purescript, ReasonML, Scalajs, Kotlinjs, GHCJS, etc.). Do you mind expanding on this? I’m moving away from Elm and I’ve been considering Clojurescript, ReasonML, and Purescript.

AFAIK FFI and use of existing JS libs is a pain in both Elm and ReasonML (that is my subjective, empirical observation). Purescript is nice, but what would you use in the back-end? Haskell? Or would you target nodejs? Deploying and maintaining nodejs clusters is not fun. Using Haskell in the enterprise could be fun, but getting to the level where it is fun is extremely hard. Finding and hiring people is also difficult. Searching for a Haskell job is difficult.

People often dismiss Clojure for being dynamically typed, but it has Spec and Spec is awesome.

People dismiss Clojure because it's JVM based, but they missed the fact that JVM actually is pretty robust and very nice piece of tech.

People dismiss Clojure because "all the changes to the core have to be approved by Rich Hickey", but they miss the fact how stable Clojure is. It is hard to find a language ecosystem where you can pick any library written years ago, bump versions of major components and expect everything to work.

I am not even talking about how people ignore Clojure because it is a Lisp. That's just outright dumb.

There are no silver bullets. Any language ecosystem has its own limitations and incur certain degree of frustration. Clojure nicely minimizes frustration. It doesn't get rid of it completely (otherwise they wouldn't call it "work", they'd call it differently and I wouldn't get paid for it)

Re: Ask HN: Best Lisp for software development?

#72
post #49
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…

>>Racket is good but the toolchain and libraries are far behind Clojure. Plus they plan to deprecate the entire language's syntax in the near future. Clojure is the way to go. It might not be perfect. But it works for most part.

I don't think they're planning to deprecate Racket's current syntax, since they say they'll still support it and that the existing syntax has already reached about a "local maximum."[0]

Full excerpt from Matthew Flatt (as of about a month ago):

> Racket's design and implementation is on solid ground, and from this point, it can continue to evolve and improve in many ways. No matter how Racket evolves, the community is committed to preserving what we have achieved: today's `#lang racket` programs will run in the future, and today's `#lang racket` modules can be used in future Racket programs. At the same time, the current language design may be close to a local maximum, and it's not in the nature of the Racket community to be satisfied with a local maximum.

[0] https://groups.google.com/forum/#!searchin/racket-users/rack...

Re: Ask HN: Best Lisp for software development?

#73
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…

Am I wrong for saying that the Clojure community has not yet achieved consensus for things as simple as a build system? In some ways that seems like there would be more up-and-going friction than the JS build world.

@traderjane, do you work at Jane Street? If yes, tell us the benefits of OCaml at work. :)

Re: Ask HN: Best Lisp for software development?

#75
post #62

I looked at Clojure back in 2010, and from from 2012 I've managed to work with it full time. Love it! The only Java-esque thing you need to decipher are the potential stack traces. But that's becoming easier with each new release, and it's actually quite easy to find the Clojure-namespace (= file) and line number you need to focus on, just by scrolling through the usually not too long stack trace.

Perhaps a silly question, but what would be the real-life benefits trying to convert a Java team to Clojure in 2019?

- Productivity. Bulding stuff in Clojure is not only joyful but also can give you real (not imaginary, not theoretical, but real, measurable) boost;

- Concise syntax. Less code - less bugs;

- FP. Immutability by default is something that once you get used to it, it is hard to imagine having to write code without it;

- REPL. I mean real REPL, not some kind of crippled "interactive shell". e.g.: Jupyter is interactive shell, Clojure (just like any other Lisp) has a "real" REPL;

Re: Ask HN: Best Lisp for software development?

#76

Earlier quoted context omitted.

Can you go backwards and generate a project/boot.clj from a pom file? And can lein read from your boot file? Because npm and yarn tag the same input, produce nearly the same output, and can run tasks defined in the same location (the project.json). Does clj tooling do that as well?

I'm not sure if you can create a project.clj, boot.clj, or deps.edn file from a pom file, but there are at least plugins available that let one tool to read the input of another. This plugin allows Leiningen to read deps.edn files for example. https://github.com/RickMoynihan/lein-tools-deps

I think this sort of shows what I'm getting at. Without plug-ins or extra scripts yarn and npm take the same inputs, and yield the same output. A yarn user can share a prokect with an npm user and neither will know nor care what tool the other is using our how too make the tools talk.

This isn't to knock clojure tooling, which is good, but I don't think lein and boot are drop in replacements for each other like npm and yarn (almost) are.

Re: Ask HN: Best Lisp for software development?

#77
I suggest Clojure too. I have a few years of webservices production experience with Clojure and must say that everything was more than fine.

You don't need to work too much with Java (even if you will have to work a little bit with JVM if you plan to support things in production). The toolchain is very good and the community is small, but nice. There are many outstanding production-ready projects; my first hand experience was with: MongoDB, MySQL, RabbitMQ and, of course, web servers, so if your stack includes those, it is definetly a go.

I have also tried to deploy Clojure on AWS Lambda and it is definitely possible, even if not sure if it production-grade yet.

Re: Ask HN: Best Lisp for software development?

#78
post #70

Earlier quoted context omitted.

> you do get exposed to a fair amount of Java stuff Can you please expand on this? I've been using Clojure as my main PL for the past 3 years, and honestly only once I had to actually deal with some Java code (when I needed to figure out some Selenium stuff).

I have had to interact with Java regularly from Clojure. Many libraries have no Clojure bindings, e.g. XGBoost. Many libraries have wrappers that are incomplete or abandoned and so might need extending with Java interop, e.g. Java Topology Suite. Some gnarly stuff like mapping objects back and forth from JDBC requires understanding of the underlying Java types. I have found it necessary to understand different Java c…

> I have had to interact with Java regularly from Clojure

I guess it depends on what you're trying to build. For majority of Clojure devs, I think that's not the case.

Re: Ask HN: Best Lisp for software development?

#79

Based on your description, the Lisp that you're looking for should: - be the most modern one - have a robust ecosystem - package management - tooling - can be used for building production-ready software - be an easy sell to businesses Clojure checks every single bullet point on that list; it - is *the most modern* Lisp that's designed from ground up (no historical baggage/cruft) - is hosted on *the Java platform* (i.…

Indenting like you have for your bulleted lists causes the text to be rendered as code (monospace, no line breaks) which makes it very inconvenient to read on mobile. Please consider this.

Re: Ask HN: Best Lisp for software development?

#80
post #69

Earlier quoted context omitted.

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…

What do you mean? If you write some Clojure Leinigen automatically figures out the dependencies? If not, every package manager works like you describe, you need it plus something like the JVM and it just works (Maven, Gradle, npm, pip...).

I think he means that Clojure is a dependency (a JAR) that lein installs. npm, pip etc require node or python, they don't bootstrap.

Perhaps it doesn't make a huge difference in practice, but it might help in getting everyone on the same version. For node, you need something like volta or nvm.

Post reply on HN