... ...programming languages are different: programming languages are not just technology, but what programmers think in. They're half technology and half religion.
I for one have always loved Python.
And I've taken quite a shine to Go recently.
The two languages complement each other very well:
Python is dynamic and expressive in a way that Go (charmingly) isn't.
Both languages in tandem cover 99% of what I need to do/build, both on the CLI and web-side (or GUI-side, by combination of the two).
Deep knowledge of one language doesn't interfere with the other, since they're significantly different in syntax, paradigm and approach.
So what I have is a good thing, right?
It is. But I'm still left rather torn sometimes.
...Because I also love Nim.
Nim is elegant in a way Python isn't. It has that sweet spot of:
Static typing - unlike optional types in Python.
Compile-time power with macros, templates and pragmas - which I feel comes off much more grokkable than Python's ASTs.
Cross-platform single-binaries, with speeds close to or exceeding pure C.
Python-like readability. 2-spaced indentation has a gorgeous compactness!
Nim's extremely expressive - far more so than Go (without a doubt).
No mandatory runtime, or GIL bottleneck.
So as a language, Nim speaks to me.
But Nim doesn't add to my current needs.
...In fact, I don't know where it stands in my toolkit.
I can build anything I want in Python and Go already. There's nothing specifically that I want to or can only build with Nim, which I can't already do with my other two languages. (This is actually not a bad problem to have - it's a mark that I'm thinking carefully about my tools, and I'm no longer chasing novelty.)
So here's the question: is it possible to just like a programming language, for how you think in that language?
I think... yes.
And in fact, isn't that the purest reason to love a programming language?
Some languages are elegant, clean, or minimal in a way that makes your thoughts clearer. Others are quirky or expressive, shaping the way you break down problems.
Consider by comparison:
As to human languages: I like the way the French language sounds, and the idea of relaying my thoughts fully in Japanese. Yet neither are languages that I ever want to write novels or literature in (i.e 'build things in'). Similarly perhaps: I can enjoy a programming language, without ever entertaining the aim of building full-blown/enterprise software first.
As to musical instruments: I love the sounds that they make in my head, and how they can let me express musical thoughts differently - e.g. I can't play a fretted instrument the way I play keys (and even the act of arrangement/transposition between instruments itself can often lead to new musical ideas). I like instruments for their own sake; I don't necessarily take to them just because I "have to" make music for an orchestra or play in a band setting.
As it were:
Python makes me think with clarity. "...What is this really doing?" Pythonic code sometimes feels closer to natural language than machinery.
Go, on the other hand, makes me feel like an engineer - I have to consider practical trade-offs, work from straight lines to solutions, and prioritize simplicity and long-term maintainability.
Nim? It makes me feel expressive and thoughtful (even more so than with Python) given its first-class language features.
Nim doesn't need to replace Python - it just needs to deepen my appreciation of what code can do. So I can't see why I should despair for not finding something I can use Nim explicitly for.
For me, Nim might just be that 1% personal indulgence; the love language of my thought-lab.