Hmm, I don't really have a "go-to" programming language. Depending on the problem, context, constraints, and team preference, I use whatever.
For personal projects, my preference for the past few years invariably has been Lisp dialects. I prefer Clojure-like lightweight PLs - Fennel if I need to deal with a Lua-compatible runtime, Clojurescript for JS-engines. For bash scripting - Babashka. If I need to be close to metal, Common Lisp is great, but it's been a while since I had the need. I've been trying to fix this asynchronous pipeline in nbb that uses Redis and BullMQ, among some other things (for some of them, I'm thinking I may have to brush up on my Python - hopefully, I wouldn't have to), but it's taking longer than desired, been procrastinating with it a lot.
Why do you ask? You can't decide what to pick to start with or something?
I just always meant to dabble more in a lisp style dialect and was curious what an emacs enthusiast enjoys. Clojure has been mentioned before and I’ve heard good things about Clojurescript. I never heard of Common Lisp for being close to the metal, more so that it was a bit memory heavy in those applications, but I’ll have to take another look. What’s NBB? Python is undeniably a workhorse for most applications and aside from Java probably the easiest to hire for.
babashka was created to mitigate JVM slow startup. It's great for system scripting, automation, etc., basically a lightweight Clojure.
I think any programmer would benefit from learning a bit of Clojure. It's really nice for dealing with data, automation, etc.
I once had to scrape hundreds of videos from a website, and I was pleasantly surprised how quickly I was able to get it right, after setting up Puppetter and Cljs REPL, I interactively, from the REPL "clicked through" things controlling the browser, and created an async pipeline that opened hundreds of pages, looking up for video metadata and delegating the task of fetching videos to yt-dlp.
After learning Clojure and Clojurescript, I felt like all these - Python, JS, and Java are overrated and needlessly messy. I'm so glad I don't really have to directly deal with them daily. Even Lua, which before I had no problems whatsoever, and really enjoyed using, suddenly felt like "meh," and I'm glad there's now Fennel, which is not Clojure, but is very similar to it.
It's been years since I made anything mobile-native. I'll have to be choosing between React Native via Clojurescript and Clojure-Dart - which is very nice.
I am very excited about Jank-lang, can't wait for it to hit the first production-ready release, it will open some new possibilities.
So, I guess, I wasn't completely honest in answering what my "go-to" language is - I really don't care, it's just a matter of picking up a Clojure dialect for it, which itself being a Lisp dialect, is a choice among many other flavors of Lisp. Want to be a true "polyglot" coder? Just grab a Lisp.
I can understand why Lispers are often perceived as "crazy ones", it does sound crazy - "How is it possible for a single language to get absolutely everything right?". Well, no, it doesn't get "everything right", but at the very least the ideas it exposes you to can shield you from having to memorize the weirdness of tons of other languages.
That’s fair, one of the big things I always enjoyed about languages was the communities that form around them, I actually think that’s more important than the language itself. I will say that the Clojure community has to be one of the better ones that exists.
Yeah, the Clojure community is definitely full of great people who are always eager to help. Many times when I've asked seemingly straightforward questions in the Clojurians Slack, I've often received more than I asked for - deep, thought-provoking answers. People genuinely try to give you good direction and guidance.