Live data from Hacker News

Ask HN: Best Lisp for software development?

news.ycombinator.com

11–20 of 138 posts

Re: Ask HN: Best Lisp for software development?

#11

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, y…

For Clojure-on-golang there is https://joker-lang.org/

Re: Ask HN: Best Lisp for software development?

#12
> I've looked into Clojure and like a lot about it, but don't want to have to dig into the Java world.

Clojure is the usual go-to for writing production lisp. You should be able to build apps with leiningen, without needing to understand/use and java (except maybe as a runner for your program, if you build uberjars).

Re: Ask HN: Best Lisp for software development?

#13
I love Clojure, but I loathe Java, and I feel you do get exposed to a fair amount of Java stuff when trying to work in Clojure. It's far better than it used to be, but it's still too much for my liking.

Since I build stuff for the web (and Electron, a bit), I use ClojureScript, and am generally really happy with it. It's all the goodness of Clojure — the lispiness, the killer persistent data structures, the wonderfully well thought out standard library — plus the little bit of stuff I like from the JavaScript world — fast boot time, stuff I make can run on the web, good enough debugging/profiling tools, and all the included batteries of the web platform (for audio, video, React if you want it, etc).

I personally use Figwheel to compile my CLJS and do live-reloading, but if I were starting today I'd probably use shadow-cljs. I like to do my own DOM stuff, but if you want to use React I'd do so via re-frame.

Re: Ask HN: Best Lisp for software development?

#15
Clojure most likely. Why don't you want to dig into the JVM, it's arguably the best production runtime out there.

You could always try ClojureScript on Node.JS or even ClojureCLR. That said, I have to ask again why the hesitation to rely on the most battle tested most invested in runtime ever built, which is the JVM?

Re: Ask HN: Best Lisp for software development?

#16
post #9

Clojure doesn't mean digging into the Java world Use Graalvm if you want native quick starting binaries or start learning Clojure via ClojureScript

> Use Graalvm if you want native quick starting binaries or start learning Clojure via ClojureScript

Yes this is very slick, but still a bit bleeding edge IMHO.

I do know the small "binaries" of Clojurescript via the Closure compiler tree shaking/dead code removal means that run time macros/eval is not available..

Is this the same for Clojure/JVM on GraalVM? i.e. are eval/run time macros disallowed/removed to attain small binaries and fast start up?

Re: Ask HN: Best Lisp for software development?

#17
Suggestions:

1. More requirements helps. What kinds of production-grade software?

2. For most purposes, you won't see the real benefits, compared to contemporary alternatives, until you have some experience with the Lisp. Enough experience that you realize that, although you can write in a Python or Ruby style in a Lisp, to some degree, there's other various idiomatic programming that's a bigger win sometimes.

3. Once you have some reasonable level of experience, (I'll assert) there's a good chance you become more productive than you would be with a comparable amount of experience in most non-Lisps, in general. But there are some big exceptions to that, such as if you need to do something that can be solved with an off-the-shelf library that's already easily available in Python (e.g., a wealth of ML stuff), for example, and you'd have to write that or an interface for it in your Lisp. Writing it yourself often means you understand it better, and can make it do exactly what you need (including possibly big advantages), but it's an investment.

4. Pick a language and a particular implementation. and make an active user community of that implementation one of the requirements. One of the advantages of Lisps is that they tend to have great communities, perhaps because there's usually little money in it, so you get high-powered people who are there for the merits of it, with a lot less noise. But you do want to find one that's being actively maintained/developed, and that has an active user community.

5. Beware that most development hiring right now seems very driven by fashion, "culture fit", and keywords -- a lot less hiring for "smart, and background they can draw upon to pick up whatever new/other thing is needed". So if you get stereotyped as a "Lisp person", or you don't have one of this year's hot stack keywords on your resume, your next job search might be surprisingly difficult. To a large extent, if you used unfashionable keywords, it doesn't matter if you single-handedly had major accomplishments that would normally be extremely impressive to employers. There are very few Lisp jobs, and there have been very few for a long time. There's a niche for CL, but also a wealth of CL gurus already existing that you have to compete with. There's almost no paying work in Scheme, unless you already have the non-Scheme-specific job and can then pick your tools (i.e, professor, startup, or unusual corporate latitude).[1] If you want to move to a Lisp, but might have to job-hunt in a couple years, Clojure might be the best bet, in that regard, at the moment.

[1] For years, AFAIK, I might've been the world's only consultant specializing in Scheme. But I'm shutting down my business, because there still seem to be only a handful of funded projects using it, outside academia (for university consulting, you need a rare PI and situation, for this to be good) and government (federal subcontractor overhead is a huge burden). Most of the few commercial projects using Scheme are one-person, and don't need anyone else.

(Background: I've done serious production work in Scheme for several years, on some important Web server and cloud technical data science stuff. I also played a very small part in a major project in Common Lisp, using SBCL, and bumped into a bit of CL at another job. And lots of production and research work in C, C++, Java, Python, Perl, etc. separate from that.)

Re: Ask HN: Best Lisp for software development?

#18
post #9

Clojure doesn't mean digging into the Java world Use Graalvm if you want native quick starting binaries or start learning Clojure via ClojureScript

> Use Graalvm if you want native quick starting binaries or start learning Clojure via ClojureScript Yes this is very slick, but still a bit bleeding edge IMHO. I do know the small "binaries" of Clojurescript via the Closure compiler tree shaking/dead code removal means that run time macros/eval is not available.. Is this the same for Clojure/JVM on GraalVM? i.e. are eval/run time macros disallowed/removed to attain…

Yes

Re: Ask HN: Best Lisp for software development?

#19
post #15

Clojure most likely. Why don't you want to dig into the JVM, it's arguably the best production runtime out there. You could always try ClojureScript on Node.JS or even ClojureCLR. That said, I have to ask again why the hesitation to rely on the most battle tested most invested in runtime ever built, which is the JVM?

Was thinking the same thing. Seems people conflate java with the jvm. The jvm is almost as cool as the beam. Which got me thinking about the lfe, since we are in lisp land.

Re: Ask HN: Best Lisp for software development?

#20
I assume you don't already have Lisp in production at your current company, because if you did, you would already know which Lisp flavor to start with. In that case, I would try to convince you that introducing Lisp to a company is not a good engineering move, and not a good career move either.

What are you going to achieve by running Lisp in production at your company? How would adopting Lisp improve uptime, performance, meeting feature deadlines, and being able to hire people?

No language is a magic bullet. I would highly recommend focusing on outcomes, such as increased performance or reliability or developer productivity, and picking a popular language to achieve those goals so you can convince management to adopt it, and hire people who are good at it.

If you really, really still want to do it, management will probably be more open to a JVM language like Clojure than to any other Lisp.

Post reply on HN