3 ms·
It's hard to pick between those two in particular. Nim is more fluid syntactically; D is more precise. D is also older and I would generally consider it more ma
by annywhey 8y ago
It's hard to pick between those two in particular. Nim is more fluid syntactically; D is more precise. D is also older and I would generally consider it more mature.
(After trying both, I went with D. But in the future I want to use Zig for some of the lowest level code.)
- dom96 8y agoOther than maturity, what are the reasons you've chosen to go with D (and are now choosing to pursue Zig)?
- annywhey 8y agoWhat I want in a language of this class is some ability to transition code from a slow/dynamic/generalized/exploratory phase to fast/static/specialized/checked. Both D and Nim offer features of that nature. (Something like Rust omits itself by forcing memory into a central role, leading to a lot of annotation boilerplate - it's correct for writing Servo or similarly complex parallelized systems, but I am not writing Servo.) When I left Nim, it was because I had serious concerns about the project being able to tame its rapid accumulation of features. I had no faith in all the things it advertised to actually work correctly. The dev process I witnessed was "cave in to toxic people who whinged a lot." D has a lot of warts from being around longer, but in the end, what I want to write code in anger with is something that can boast a well-engineered compiler, and D has not one compiler but more than one. That was years ago. To win me back you'll have to market a demonstration of similar stability. Zig is in a different category from any other option because its design allows me to tackle a piece of low-hanging fruit: a modernization of old C libraries that does not reinvent the universe, create a new ABI, introduce a runtime, or otherwise disrupt the original context. I can write basically the same kind of code in the same kind of style, but the language automatically pushes my attention to more edge cases and undefined conditions, and the compiler simplifies the build process, removing the preprocessor noise that tends to appear in substantial libraries.
- dom96 8y agoThat's fair. Can you name features in Nim that you feel are unnecessary? I have seen a similar sentiment in the past but rarely do people actually give examples of what they think could be removed (the biggest challenge for us right now is the removal of features in preparation for 1.0).
- dynaxis 8y agoHow's the GC in D like recently? I tried to use D around 5 years ago, and the key showstopper was its poor GC implementation. Even worse, it was practically impossible to disable GC then.