Well, I'm not been active here or in #nim on freenode lately, but I've been 
using Nim a lot at work.

I'm on a new project (rather significant one), and I decided to do a majority 
of the new software required by it in Nim.

Tried to do one component in C++, as it required a lot of posix stuff, and 
Nim's is not complete.... but eh... After about 900 lines of working C/C++ code 
I rewrote it all in Nim (line by line translation, much of it was just syntax 
cleanup).

The parts not there, I left those in C and called those parts from Nim, or I 
just made do with what was there with casting. So far so good.

I just got tired of fighting C/C++'s lack of modularity, namespace leakage. 
C++11 and newer make up for quite a few deficiencies, but meh... Nim is just so 
much better to program in... (stack traces, proper modules, metaprogramming, 
etc).

I had been using Mako (python) quite a bit for ansible templates, but a couple 
months ago I switched them all over to Nim's source code filtering. Everything 
I was doing in Mako, I can do with Nim's source code filtering, and I don't 
have to put up with Python's dynamism that catches stuff very late in the game. 
(for python code in the template file).

There is a bit of a risk using Nim at work, but there is also risk in not using 
it. When I look at Swift, I don't see what it has to has offer (apart from a 
very good REPL) that I don't have in Nim, but in a curly brace style. (Python 
got me use to the indentation style, which I hated at first, but now I prefer 
it). Rust, go, D, while better in many regards than C++11 (and newer) fall 
short in a lot of areas when it comes to programmability for me.

**Posix *(well, I guess these are not strictly posix)* issues I ran into:**

  * 
[http://nim-lang.org/docs/posix.html#SigVal](http://forum.nim-lang.org///nim-lang.org/docs/posix.html#SigVal)
 (My code uses the integer value, I was able to do casting to make it work)
  * **forkpty** is not present
  * **cfmakeraw** is not present
  * **tcsetattr** is not present
  * **tcgetattr** is not present
  * **SIGWINCH** is not present, was trivial to add
  * **ioctl** with a third parameter is not present



And maybe a few other items... Of course those are all able to be worked 
around, especially since it so easy to mix C with nim.

Overall Nim has been a joy and I've been very productive with it at work. I 
hope to be using it long term at work, especially if I can get others to start 
using it.

I looked at Crystal some, but I prefer Nim over it. If anything for the syntax, 
but there are other considerations as well. 

Reply via email to