I've been trying a few new languages recently trying to decide if there's anything I want to try and pivot to using in the longer term.
I recently had a chance to use Go but people have also recommended Rust and I would that the languages are similar enough and target enough of the same problems that the language communities feel quite strongly about one another. I've only scratched the surface of Rust currently but things I like so far are the greater explicitness in things like type casting and while I don't love strict compilers generally the error messages are actually some of the best I've seen in a long while.
I tend to enjoy working in dynamic languages so I have also tried Elixir and initially the experience was very positive but I hit a bit of a wall when it came to pattern matching function dispatch, while pattern matching for destructuring is as I would expect the number of different ways that people structure their dispatch, particularly on recursive functions made me feel like I wasn't able to understand how to structure a problem. I also hit a wall with binary and string destructuring, where as lists behave in a LISPy way I ended up in a rabbit hole of type mismatch when trying to pull apart strings and differentiate between binary representations and characters. Go was equally horrible with its use of Runes for most things and ASCII for default loops.
I ultimately felt I needed a better guide to the language and have paused it for now as it isn't a very popular language (even though it might have one of the best web frameworks about currently).
I already know Clojure but haven't been using JVM languages recently. Babashka is a Clojure subset that can be installed via asdf and doesn't require a JVM setup. I'm still working through the tutorial but it was a reminder of how great programming Clojure is and how simple setup can be made.
Deno is a Typescript-based alternative to Node and it is a pretty good programming environment with a decent tutorial. However as a scripting or CLI language it suffers from asynchronous IO which adds lots of tedium compared to synchronous alternatives or simply languages that wrap their IO in better abstractions. I think I need to try and get onto the web programming side of things to see something that is maybe a stronger fit.
Top comments (0)