Live data from Hacker News

Ask HN: Best Lisp for software development?

news.ycombinator.com

121–130 of 138 posts

Re: Ask HN: Best Lisp for software development?

#121
post #95

[Chicken Scheme]( https://call-cc.org ) is fast, makes native binaries, and has a giant library of "eggs" covering most of the SRFIs. It's R5RS working its way towards R7RS. I've been using it for my "Python but fast" code for the last year or so, and it's one of the best production languages I've ever had. [Chez Scheme]( https://scheme.com ) is super fast, and has the best REPL I've ever seen, but can't easily make…

A balanced and intelligent comment. Although, if Racket is for educational uses only, if you see their main website you will notice that it is actively preparing itself to become the next Python.

Racket as a language is not intended for educational use.

Racket comes with multiple languages - and a few of them are for teaching. They are clearly labelled teaching languages.

The main language, racket, is a full fledged programming language.

Re: Ask HN: Best Lisp for software development?

#122

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).

When I learned Clojure, I also needed to learn about Maven, and POMs, and JARs, and the Java classpath, etc — and encountering all that stuff for the first time at the same time I was learning Clojure meant that I sometimes couldn't tell what concepts were part of Clojure, and what concepts were part of the Java ecosystem. This wasn't helped by the fact that the bulk of the "how to compile Clojure" documentation was…

Reminds me of a metric the Clojure community has used in judging itself, which is "time to first XML". There's now a helpful getting started page prominently linked from the home page, which has no XML on it, but it used to be https://clojure.org/community/downloads was the main page and you'll note the XML is still there. You'd see that before you even set things up, you're clearly in Java town now, buddy...

I like to use "time to first problem and the experience of its resolution" as my own ruler. Maybe it's an XML problem ("wtf is Maven?") but it's usually not until I try writing a program that I experience the first problem either at compile time or runtime. I haven't been keeping up with Clojure (whose latest version I've heard improved things on the error front) but when I first learned, it wasn't long before I made a mistake and paid for it with a giant Java stacktrace. I knew Java, though, so it wasn't a big deal to deal with it, but some instances were quite frustrating since there was a disconnect between useful messages about source locations when running code via a REPL connection versus launching the program from scratch which involves loading and running named Clojure files. It was rather subpar compared to Python, and especially to Common Lisp, which has useful compile-time warnings on top of a superior runtime error system.

Still I've always thought it'd be foolish to dive into Clojure without some Java background, or at least without the anticipation of needing to get some Java background, so it's interesting to read the contrary on this page...

Re: Ask HN: Best Lisp for software development?

#123

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

Looking just at Redmonk's language popularity rankings, Common Lisp has risen over the last n years, and the most recent one had it right in the middle of the chart on discussions plotted with repos. I think it's a mistake to characterize it as being on a "dying" trajectory, at least when it's currently enjoying a resurgence. (In my mind in no small part thanks to Clojure, but I think the biggest cause of growth is the existence of the Quicklisp project.)

Re: Ask HN: Best Lisp for software development?

#124
Not entirely a joke, but: Emacs Lisp (elisp) is "evergreen" and likely always relevant.

More seriously, the huge ML functional language family may still be worth exploring, even if you really like/prefer the homoiconicity of Lisp/Scheme. For instance, F# can be very production friendly at a lot of companies (it's .NET-based and [mostly] well supported by Microsoft themselves and the .NET Foundation), especially those with an investment in C#. .NET Core even has some nice cross-platform stories today. You miss out on Lisp/Scheme's homoiconic macros, but you still benefit from a lot of the functional-programming first mindset.

Also, don't discount Common Lisp for not feeling "modern" enough. There are a few CL distributions worth checking out, some with robust modern enough package management. Definitely CL is a old ecosystem with a lot of old growth forests, but that is a path to some structural stability too.

Re: Ask HN: Best Lisp for software development?

#125
I've used Clojure several times for production-ready software and it's a breeze to operate. Concerning production-readiness, here are my takes about it: - a major requirement is a good integration with infrastructure softwares like databases, search engine, messaging, IAM. As Clojure is hosted on the JVM, the integration is very simple with already available drivers for Postgres, Kafka, Solr/Elastic Search (easier as the protocol is a REST API), Keycloak, etc. - Cloud integration, even for Serverless, is very easy: just transpile to Javascript (Google Cloud Function) or Java (AWS Lambda) - build and package management are very mature with Leiningen, the latest "tools.deps" have, IMHO, very interesting characteristics of simplicity (composibility at core and simple "main" interface for invoking build process) - You'll need top notch security: OpenId with Keycloak makes it very easy to have a very good IAM system (disclaimer: I make a Keycloak Clojure wrapper https://github.com/jgrodziski/keycloak-clojure) - Good operability is also a must-have: structured logging (look at Cambium), metrics (Prometheus), good performance of the JVM, good monitoring and profiling - On the development Side, the productivity of using clojurescript with reagent/re-frame and the development flow both on frontend and backend is a killer argument. The possibility of isomorphism (running the same code on the frontend and backend) makes it very easy to share the same domain between the backend and frontend.

In the end, Clojure is amazing and fun, and it's production-ready for a long-time. I made a talk at the Clojure Paris meetup 3 weeks ago (slides here: https://speakerdeck.com/jgrodziski/clojure-project-in-the-fi... only the 3 first slides are in french, the rest in english).

Re: Ask HN: Best Lisp for software development?

#127
post #85

Earlier quoted context omitted.

I really don't think any one starting a project for production environment will be happy with being told that existing programs would run, but expect no fixes or enhancements from now on. See how Perl lost programmer mindshare in the 2000s because of Perl 5 development had stalled in the favor of Perl 6. Racket is(was) a language to do home work assignments. I guess even their very dedicated users would either switch…

> but expect no fixes or enhancements from now on. This is a common misunderstanding around the Racket 2 proposal. Racket is completely different from Python and Perl when it comes to syntax. Racket already supports multiple syntaxes over the same semantics, and is designed for people to be able to build new syntaxes themselves. IOW, Racket 1 (more precisely: `#lang racket`) and Racket 2 will not be different runtime…

I get what you are saying, but in that case they should just call it Honu, instead of calling it Racket 2. Call things by what they mean, rather than using a well marketed name to promote a new language. When you say Racket 2, people will almost always take it as a the next Racket version.

If I implement Python in Racket, I will call it Python, not Racket 3. Python is Python, Racket is Racket.

By the way, Perl 6 is supposed to have a compatibility mode with Perl 5 too.

All these things look fine in theory, but in practice, no one bets their production code on things like these.

Re: Ask HN: Best Lisp for software development?

#129
post #95

Earlier quoted context omitted.

A balanced and intelligent comment. Although, if Racket is for educational uses only, if you see their main website you will notice that it is actively preparing itself to become the next Python.

Racket as a language is not intended for educational use. Racket comes with multiple languages - and a few of them are for teaching. They are clearly labelled teaching languages. The main language, racket, is a full fledged programming language.

Yes, that was my point, too.

Re: Ask HN: Best Lisp for software development?

#130
Use Common Lisp (SBCL). When you have a problem in Clojure, you end up doing it the Java way or importing some Java lib as a crutch. Lisp isn't meant to be a batteries-included experience. You are supposed to be making your own DSL for every program basically.
Post reply on HN