... ...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, actually:
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 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.