Although this thread is rather old I'll answer anyway because certain attitudes 
and questions come up again and again. It might be useful to have something to 
link to instead of saying it again and again.

Front-up: My first gut reaction to the OP was "Oh well, if he likes C# so much, 
why doesn't he just stick to it and be done". In other words: We are not 
salesmen, we love Nim and we are certainly happy if new users join but we are 
not salesmen. If you feel that language XYZ is so much better than Nim then 
simply stick to it. Simple as that. In fact, you might be perfectly right in 
thinking that XYZ is better than Nim - _for you_.

There simply is _no_ best language. A language may be the right thing for many 
users and a broad spectrum of problems but _no_ language is generally the best.

In my case (brutally compressed: reliable and safe software) I used Ada for 
quite some years and was _almost_ quite happy. In fact I've said a lot of good 
things about Ada (and still do). But there were those "buts". Nim addresses 
those. Well noted, Nim is _not_ "better than Ada". It just happens to offer a 
better trade-off for me. At least as of today Ada is (still) better in certain 
aspects but those are largely about "paranoid safety levels" (like real formal 
verifiability) and some things like much,much better docu (well, existing for 
decades that's not astonishing).

I usually do not need those "paranoid safety levels". Software is almost never 
unsafe or insecure because AES-128 was used instead of AES-256 or because it 
breaks after having ca. 2 billion users (due to signed int32), etc. Nope, stuff 
breaks due to factors like creepily lousy code, utterly lacking design (and 
care), pressure by management demanding features, features, features, and inept 
languages (often (ab)used by inept developers).

Nim addresses those issues to a large degree. And - that's very important - it 
makes it _easy, natural, and comfortable_ for the developer to write 
_considerably_ less buggy code. And by "considerably" I mean something in the 
range of 80% to 95% less bugs. In other words: Creating something like 
Heartbleed (SSL) was almost inevitable with the C code base. Creating 
Heartbleed using Nim would need a _serious_ level of carelessness or ill will.

Two other points that are relevant for quite many are:

Nim runs on quite many architectures and OSs. Unlike C# whose non-Windows 
support were ugly siblings and afterthoughts Nim wasn't designed for any 
particular architecture or OS.

Nim offers the full feature set that is needed for many applications today. 
Support for both multithreading and async/await as well as for immutable 
variables come to mind as well as many (seemingly or factually) smaller things 
like defer or a really, really nice C interface or the fact that one can target 
javascript (and end up with something that is not crappy).

Reply via email to