It’s perfectly OK to use libraries that are not updated for the past 2 years in production. The community takes stands on its workflows and stick to it for year
I really like all the ideas behind Clojure, especially this one. I’d like software to be more like hardware. How often do I have to update my microwave’s software or refrigerator’s software? Software should just do its job without fuss. Unfortunately we have the opposite trend, where hardware is becoming more like software, being in constant need of updates (e.g. our phones).
So I like these ideals. I’ve watched almost all of Hickey’s talks, and I even skimmed a book on Clojure “for fun”.
But unfortunately I never really crossed paths with the JVM professionally or personally, and it’s still not something I want or feel a need to dip my toes into. Despite writing some JavaScript, I also mostly avoid the NPM ecosystem, which ClojureScript uses as far as I understand.
Has anyone tried any other production-quality Clojure implementations or Clojure-influenced languages that are interesting?
On a different note, I watched a talk about Clasp and it looks pretty cool, e.g. the way it uses LLVM to integrate seamlessly with C++ and code generation. I wonder if an analogous Clojure / C++ hybrid would also make sense? Maybe not because as far as I understand Common Lisp has a history of generating fast code, while Clojure doesn’t. Despite the superficial similarities they are pretty different, from what I can tell.
I’m of course biased, but take a look at CHICKEN Scheme. It’s Scheme, which is a Lisp dialect. Scheme is very clean, and there are several stable and mature libraries for it (“eggs”) that haven’t changed much but are still being maintained. CHICKEN is fast, compiles to C and makes interfacing with C very easy.
Yes, the recent major release of CHICKEN itself (from 4 to 5) was a massive change, but these kinds of huge changes don’t tend to happen all that often (this one was way overdue). Upgrading code is usually simple and can be done in a backwards-compatible way if you take some care.
Please don’t be scared of the JVM and Java dependencies - Clojure’s interop is very neat and super straightforward to use. Admittedly, I was intimidated by it in the early days but once I crossed that bridge it feels very natural, and as others stated it’s not something you do very often. In the last 4 years, 20 Clojure services and ~25 internal libraries we had to write Java code maybe once or twice and deal with one weird behavior coming from Maven.
I think I need to write my own “~4 years of Clojure” post ;-)
As far as other Clojure-inspired languages - you’ll find the ecosystem lacking because it’s a niche of a niche - unless you like to write your own libraries for everything.
You really don’t need to know much about the JVM to use Clojure. It’s not different than having Ruby or Python runtime on your system. Regarding ClojureScript, you don’t actually have to use NPM with it. It has its own compiler, and you can opt into using NPM if you need modules from it.
The structural code allows for compiler optimizations that are not possible (or extremely hard) with English inspired code.
How come? English-like source code still gets parsed to AST. I can imagine a lot of optimizations that are possible in one language and not in other, but none that’s closely tied to writing “structural code” (what is that supposed to mean – in the context of formal languages – anyway?).
The charitable interpretation is he means macros, which are a lot easier with a simpler AST, can result in more efficient code sometimes, and operate at compile time.
I really like all the ideas behind Clojure, especially this one. I’d like software to be more like hardware. How often do I have to update my microwave’s software or refrigerator’s software? Software should just do its job without fuss. Unfortunately we have the opposite trend, where hardware is becoming more like software, being in constant need of updates (e.g. our phones).
So I like these ideals. I’ve watched almost all of Hickey’s talks, and I even skimmed a book on Clojure “for fun”.
But unfortunately I never really crossed paths with the JVM professionally or personally, and it’s still not something I want or feel a need to dip my toes into. Despite writing some JavaScript, I also mostly avoid the NPM ecosystem, which ClojureScript uses as far as I understand.
Has anyone tried any other production-quality Clojure implementations or Clojure-influenced languages that are interesting?
On a different note, I watched a talk about Clasp and it looks pretty cool, e.g. the way it uses LLVM to integrate seamlessly with C++ and code generation. I wonder if an analogous Clojure / C++ hybrid would also make sense? Maybe not because as far as I understand Common Lisp has a history of generating fast code, while Clojure doesn’t. Despite the superficial similarities they are pretty different, from what I can tell.
https://github.com/clasp-developers/clasp
I’m of course biased, but take a look at CHICKEN Scheme. It’s Scheme, which is a Lisp dialect. Scheme is very clean, and there are several stable and mature libraries for it (“eggs”) that haven’t changed much but are still being maintained. CHICKEN is fast, compiles to C and makes interfacing with C very easy.
Yes, the recent major release of CHICKEN itself (from 4 to 5) was a massive change, but these kinds of huge changes don’t tend to happen all that often (this one was way overdue). Upgrading code is usually simple and can be done in a backwards-compatible way if you take some care.
Seconded! CHICKEN is awesome and we used it to write small monitoring daemons on couple of occasions. Can’t wait to try out v5 soon!
Please don’t be scared of the JVM and Java dependencies - Clojure’s interop is very neat and super straightforward to use. Admittedly, I was intimidated by it in the early days but once I crossed that bridge it feels very natural, and as others stated it’s not something you do very often. In the last 4 years, 20 Clojure services and ~25 internal libraries we had to write Java code maybe once or twice and deal with one weird behavior coming from Maven.
I think I need to write my own “~4 years of Clojure” post ;-)
As far as other Clojure-inspired languages - you’ll find the ecosystem lacking because it’s a niche of a niche - unless you like to write your own libraries for everything.
You really don’t need to know much about the JVM to use Clojure. It’s not different than having Ruby or Python runtime on your system. Regarding ClojureScript, you don’t actually have to use NPM with it. It has its own compiler, and you can opt into using NPM if you need modules from it.
[Comment removed by author]
I stopped reading at:
How come? English-like source code still gets parsed to AST. I can imagine a lot of optimizations that are possible in one language and not in other, but none that’s closely tied to writing “structural code” (what is that supposed to mean – in the context of formal languages – anyway?).
The charitable interpretation is he means macros, which are a lot easier with a simpler AST, can result in more efficient code sometimes, and operate at compile time.