Hacker News new | ask | show | jobs
by agentultra 3943 days ago
> Clojure hit the scene as a modern lisp that embraced the JVM.

> By now, Clojure is the de facto standard lisp for new applications.

What's with the whole, "modern," meme when people talk about Clojure? SBCL only forked off from CMU CL in 1999. Clozure CL is still well supported and actively developed. It's not like CL was written in the 1960s and had never changed ever since. The final standard was published in 1994. The alpha and beta of the JDK weren't released until a year later. Given that Clojure leverages so much of the JVM what exactly makes it the modern, de-facto standard for new applications? Don't we already have an ANSI standard for such a Lisp?

Is it modern because it can invent without restriction of a specification? That's a good thing and plenty of other Lisps are doing that... but what makes it, "modern," and why is it the standard? Is its relative immaturity a feature when you're taking on the world in a startup?

Either way it's not much of a secret anymore but I still don't see many startups advertising that they use Lisp -- even Clojure is rather rare. I hope more people give Lisp a try and kick butt.

2 comments

I too would love to know the basis of the "Modern Lisp" meme. There is very little in Clojure that has not been done before.
As a long time Common Lisper, allow me to disagree. The STM and concurrency features of Clojure are what brought me in, and they certainly haven't been "done before". Common Lisp's concurrency story was always poor.

You could also argue that the effects of lazy evalutation and transducers could have been achieved before using SERIES package, but then you surely haven't tried to actually use and debug SERIES code.

> The STM and concurrency features of Clojure are what brought me in, and they certainly haven't been "done before". Common Lisp's concurrency story was always poor.

It's the JVM that does most of the work here for Clojure. You get the same features when working in Java if you wanted them.

Most CL implementations provide access to native threads and kernel polling facilities (kqueue, select, epoll, etc).

If "modern," means, "leverages the libraries and implementation of a well-funded ecosystem" then I suppose you have a point. Clojure is quite modern. And that is confusing.

> You could also argue that the effects of lazy evalutation and transducers could have been achieved before using SERIES package, but then you surely haven't tried to actually use and debug SERIES code.

I'd much rather debug CL code any day. Even at its worst it is still far ahead of Java's tracebacks and having to mentally map them back to where the error occurred in your Clojure code.

and yet I have never seen STM being used in the clojure community, show me a project that really leverages Clojure's STM, they aren't any.
In general, I would not expect something "modern" to be doing new things, but doing everything that has come to be expected and doing it well.

I have no opinion that I would defend as to the degree to which that applies to Clojure.

One issue is that open source CL lacks the tooling from commercial Lisps, and there are not many of them available.

Yes there is a standard, but is like having to keep coding in K&R C, in terms of actual needs.