Good write-up. Optimizing for embedded, real-time systems is a nice way for them to cut out a little niche among similar languages.

Aside: I've tinkered with Nim a long time ago (when it was called Nimrod) and thought it was pleasant. I'd be interested to hear from anyone in the HN community that has used Nim in production. What did you use it for? How was the experience?

I found it very pleasant as well! It was pythonesque that compiled. Now pythons code makes me wants to pull my hair out. I don't know what I like anymore

I've tried learning it a couple times, but the syntax seems so irregular and non-uniform. It's confusing and annoying.

Nim gives a bit more choice in many dimensions than many languages -- how to manage memory, whether to use the stdlib at all for things like hash tables, and yes, also syntactic choices like several ways to call a function. This can actually be convenient in constructing a DSL for something with minimal fuss. While `func arg1 arg2` might look weird in "real" "code", it might look great inside some DSL and you can just have it be a "regular Nim invocation" instead of something special to get that.

There are also compile-time superpowers like macros that just receive a parsed AST. That can be used to "re-parse" or "re-compile" external code as in https://github.com/c-blake/cligen. So, trade-offs like in all of life.

There is even a book called The Paradox Of Choice [1]. I think there is just a spectrum/distribution of human predisposition where some like to have things "standardized & packaged up for them" while others more like to invent their own rules..and enough variation within the population that people have to learn to agree to disagree more. (EDIT: and FWIW, I think this is context-modulated - the same person could be on one end of the spectrum about gardening and the other about software.)

I do feel like the syntax is far less chaotic than Perl.

[1] https://en.wikipedia.org/wiki/The_Paradox_of_Choice