logo  The Nim language

Page written September 19, 2022

The Author started to use the Nim language in August 2022. Although the Author had read about Nim several years ago, he did not actually try it, and it has "flown under the radar" since then. Which is probably the situation with most programmers. In fact, maybe a majority of programmers haven't even heard of Nim.

For a quick first-impression, the frontpage of the Nim homepage is a good read:

https://nim-lang.org/

As to why Nim is relatively unknown compared with other recent languages such as Go and Rust, is most likely due to Nim not having a major sponsor. Despite that, Nim does have a surprising number of devotees and a growing support infrastructure.

Here are blog posts by the Author, in approximate-chronological order. They may be read as a progressive introduction to Nim, and also as a progressive argument as to why Nim is an excellent choice, not just for systems-programming, but for general programming.

Firstly, the Author's first post, considering whether to adopt Nim:

The Author's Linux distribution, EasyOS, is compiled entirely from source packages, using OpenEmbedded/Yocto, which imposes a requirement that Nim be able to be cross-compiled, and applications written in Nim also be cross-compiled:

...there is likely to be a "take-3" some time soon, as the Author has grasped the the Nim build concepts.

The Author has a utility, "debdb2pupdb", written in the BaCon language, that he wanted to rewrite in Nim, to get a feel how easy or otherwise it is to write a non-trivial application in Nim. Features of Nim were studied, with re-writing of this utility in mind, and the blog posts form an introduction to coding in Nim:

For the last 20 or so years, the Author has coded in ash/bash shell and C, and since about 2011, in BaCon as well. Many GUI apps have been created in shell script with "gtkdialog" and similar GUI tools. Some GUI apps have also been written in BaCon with HUG.

The Author requires similar GUI toolkits for Nim. Yes, there are a lot of them. Here are two quick evaluations:

At the time of writing, the Author is leaning toward "NiGui":

https://github.com/simonkrauter/NiGui/

...there are likely to be blog posts exploring NiGui soon. Here is a list of GUI toolkits, though do note it is not complete:

https://github.com/nim-lang/Nim/wiki/Curated-Packages#gui

Finally, the Author has been accumulating links to Nim documentation:

In summary, the language ticks all of the boxes for the Author. But of course, the reader my have different backgound, different priorities, adoption constraints, etc.

(c) Copyright Barry Kauler 2022, bkhome.org, all rights reserved.