| Hi fellow PHP'er and in a long time gone C#er here I would highly recommend learning the spirit of Clojure first: https://changelog.com/posts/rich-hickeys-greatest-hits https://www.youtube.com/watch?v=vK1DazRK_a0 There are a few classes of tech that are uniquely Clojure: Data driven DSLs: - https://github.com/noprompt/garden - https://github.com/weavejester/hiccup - https://github.com/seancorfield/honeysql Hyper normalised relational databases: - https://www.datomic.com/ - https://opencrux.com/ - https://github.com/replikativ/datahike Advanced SPA tech (hyper normalised data driven): - http://fulcro.fulcrologic.com/
- https://wilkerlucio.github.io/pathom/v2
Once you understand the spirit and rationale for Clojure it becomes apparent why other communities don't have this kind of tech yetOnce it gets down to practical things I recommend using clj-Kondo with type hints, Cursive for Intellji, make sure you learn how to hot code inject new code into your running program using your editor shortcuts, and TDD in Clojure is also excellent and immediate: https://cursive-ide.com/userguide/testing.html Also look out for GraalVM and Babashka we're using it to compile fast native binaries out of Clojure |
I'd suggest starting with what everyone seems to start with:
- https://www.braveclojure.com/clojure-for-the-brave-and-true/
Its a pretty fun read, and does a good job of covering the language (plus its free, which is probably why most people start there).
You could also take a look at Programming Clojure (written by some of the people behind the language, Alex Miller and Stuart Halloway), which I think is a better resource, but it does cost money.
It can be tempting to want to start in the deep end and try to create something like a web app from scratch as your first attempt at using the language, but there isn't really a Django or Rails for Clojure and you can easily get lost in the weeds (as I did).
My approach to learning Clojure was to start with a simple setup (for me its VS Code with the Calva extension, and deps.edn for managing the project files) and forcing myself to use Clojure for any small utility scripts that I might have otherwise done in bash or JavaScript.
This allowed me to get a feel for the language and how to work with the REPL without having to also digest a lot of information on how a specific library or framework works.