By 'non-mainstream' I mean languages most people won't have tried, not in the top few dozen used nowadays. And especially languages that changed the way you thought about programming, and were more than a bit different from others you had tried.
Also, maybe, what were the best, most helpful books or resources on it that you came across?
Thanks!
First, some background. I want to be able write any sort of program, typically these days as a hobby I like to play with database, hypervisor, load balancer concepts, or experiment with new kernel APIs. I also enjoy small-ish languages so I’ve been turned away other ones that might satisfy my interests.
Zig is very simple but with much better decisions compared to C. One example is how arguments are immutable in Zig which makes a whole class of potential bugs you could make in C impossible. Zig also has great compile time capabilities and can compile to new byte code VMs such as WebAssembly and BPF. It’s been a fun language to play with and build my intuition for how computers really work. You have the “low level” access to implement interesting data structures in highly performance ways. Zig can call any C code but that gets ugly eventually and Zig needs more networking libraries.
Pony makes writing safe, concurrent, networked applications a breeze and has nailed what I want an OO language to look like. Great type system, actors, and traits. I use it when I want to play with distributed systems algorithms so I can focus on the algorithm rather than all the networking and concurrency correctness.
For both languages, I’ve been using their official documentation and source code to learn them. The great thing about Zig and Pony is that their standard libraries are written in Zig and Pony respectively. This is a great way to learn thebstyle of how the language maintainers write.
Zig: https://ziglang.org
Pony: https://ponylang.io
The official Elm guide is quite good, and there are a lot of good resources out there for Elm because it tries really hard to be beginner-friendly. Haskell on the other hand... not so much. I guess the best resource I used was Learn You a Haskell.
Need to play with it more, especially in making self constructing objects (geodesic structures, whout having to use the manual build tools.)