Hacker News new | ask | show | jobs
by solardev 1411 days ago
What is this? What is Clojure and why do you need it in node?
6 comments

Clojure/Clojurescript is a functional lisp dialect and therefore brings you more and other ways to write programs, since it defers much from javascript/typescript. But I think another question would be "why do you need nbb for clojurescript?". The minimal answer is: clojure has slow startup time, and clojurescript need some tooling to produce runnable code. With nbb (or bb for clojure) you can run Clojurescript as a scripting language in the terminal, like python or shell, and still use some libraries both from the nodejs or clojure(-script) ecosystem.
Author here. Nbb is a scripting environment for Clojure running on Node.js. Clojure is a Lisp that emphasises functional and data oriented programming. Scripts are executed using an interpreter, so there is no build/compile step necessary, which is convenient for small applications.

If you're more curious, check out the README which has a list of videos and articles on this.

Clojure is a lisp dialect (One of the most loved languages according to surveys). You can use nbb to write clojure instead of js in Node.
https://tryclojure.org/ in case you want to try it!
Clojure is a lisp on the jvm. javascript compilers exist because people wanted to use clojure in web related projects.
It's not a javascript compiler as Clojure is a hosted language.
Nbb isn't a compiler, but a Clojure interpreter. Clojure is a hosted language, but can be compiled or interpreted. The ClojureScript compiler compiles Clojure to JavaScript, but nbb only interprets Clojure.
Can anyone explain what a hosted language is?
Basically, you take a programming language and make it work on a platform that meant to be programmed using a different PL. Clojure is hosted by design - it's not Java, but can be used to program for JVM. It ain't Javascript, yet can be used to target nodejs and browser; not an [official] CLR language, but you can write .Net programs. You can use Clojure to make Flutter apps with ClojureDart. You can integrate Python into Clojure with libpython-clj. Or write Clojure to target Erlang/OTP; or Rust; or R; There's even a clojure-like language for Lua - Fennel.

There's something about Clojure people like so much, they want it to work atop any platform.

https://github.com/Tensegritics/ClojureDart

https://github.com/clj-python/libpython-clj

https://github.com/clojerl/clojerl

https://github.com/clojure-rs/ClojureRS

https://github.com/scicloj/clojisr

https://fennel-lang.org

Compiles/transpiles into code that runs on a "host" language execution environment (nodejs, JVM, CLR) instead of it's own VM implementation, or native code.
clojurescript absolutely compiles to javascript, as per the official docs:

https://clojure.org/about/clojurescript

But that's not what nbb is.
Clojure is a lisp like language hosted on top of the JVM. By running on top of node you get a faster startup which is desirable for short lived apps.