Like many folks here, I probably spend too much time reading about, trying and contemplate using many new languages. The (overlapping) paradigms that interest me are metaprogramming, functional, and (newer) statically-typed. I decided to focus only on metaprogrammable ones from now on (as a time saver and to step up).
I made a list and ordered them by how much I would be interested in using them (which combines my curiosity with current/expected adoption).
My short-list for metaprogrammable ones are:
Clojure
Elixir
Nim
Crystal
Rust (would be higher if I did more low-level work)
Pony
I left most other functional ones off my list because that's an exploration in itself for another time. I was surprised that I put Clojure and Elixir first given my preference for static types. Of all the kitchen-sink features that Nim has, I can't accept camelCased == under_scored names otherwise it could have been first. Ruby is notably absent as I use it and am looking for something better/different.
For future adoption, I think interoperability is a key factor, whether it's with C or in a VM runtime (e.g. JVM, CLR, BEAM, v8).
Which metaprogrammable language do you use or are most interested in using? How compact are your programs (i.e. how extensive do you metaprogram)?
Ideal for Scientific computing. ( LLVM based; Optionally typed; Dynamic )
https://julialang.org/
https://docs.julialang.org/en/v1/index.html
Julia Metaprogramming:
https://docs.julialang.org/en/v1/manual/metaprogramming/inde...
Julia: "Building a Language and Compiler for Machine Learning" ( compiling to GPU; TPU )
https://julialang.org/blog/2018/12/ml-language-compiler
"Why Does Julia Work So Well?"
https://ucidatascienceinitiative.github.io/IntroToJulia/Html... ( "Core Idea: Multiple Dispatch + Type Stability => Speed + Readability" )