Why Nim?
Positioning vs Other Languages
- Nim is seen as closer to Swift/D/modern compiled “big” languages than to Zig: feature-rich, optional OOP, macros, automatic memory management by default.
- Zig is framed as minimalist, anti-magic, system-level; Rust as the “winner” in safe systems programming with a unique niche (non-GC, strong safety).
- Several people would choose Nim for general app development or “compiled Python” use-cases, not for low-level systems where Rust/Zig dominate.
- Some say Nim can cover everything Go does and more, but acknowledge Go’s ecosystem, simplicity, and jobs make it a safer choice.
Ecosystem, Libraries, and Adoption
- Recurrent complaint: small, fragile ecosystem; many important libraries are unfinished, abandoned, or lightly documented.
- This makes Nim feel like an “expert hobbyist” language: powerful, but you must write or wrap a lot yourself.
- Others counter that C-FFI plus tools like AI-assisted coding make missing libraries less of a blocker.
- Nim’s lack of corporate backing and marketing is cited as a major reason it hasn’t “broken through,” compared to Rust/Go.
Language Features and Strengths
- Strong enthusiasm for Nim’s metaprogramming: hygienic templates, macros, and natural compile-time execution via an embedded VM.
- Fans like that the language “gets out of the way” and allows fast prototyping and expressive code with tiny, efficient binaries.
- Nim compiles via C/C++ and can use various backends (including Zig’s C compiler) for easy cross-compilation.
- Interop stories (e.g., Nim + Python via nimpy, CUDA, JS backend) are highlighted as practical wins.
Memory Management and “Systems Language” Debate
- Nim 2’s default ARC/ORC (ownership + refcounting, optional cycle collector) blurs the line between GC’d and “systems” languages.
- Debate over whether mandatory-ish ARC in much of the stdlib still places Nim closer to GC’d languages than to C++/Rust/Zig.
- Some insist Nim is a systems language that just happens to make automatic memory management easy.
Tooling and Developer Experience
- Tooling is a major pain point: LSP/IDE support is described as unstable or weak, especially for autocomplete, navigation, and inline errors.
- This is seen as a blocker for team adoption and junior dev productivity; some hope a future compiler rewrite will fix it.
Syntax Choices: Case-Insensitivity & Whitespace
- Case- and underscore-insensitive identifiers are polarizing; fans say it kills style-guide wars and eases refactors, critics dislike the grep/underscore story.
- Significant whitespace sparks a long subthread: some consider it a dealbreaker, others see it as readable and brace-free; copy/paste and editor behavior are key concerns.
Why People Still Hesitate / “Why Not Nim?”
- Common reservations: tiny job market, dependency on mingw on Windows, out-of-date docs, weaker GUI and tooling stories, and risk of investing in a niche ecosystem.
- Several commenters express sadness that Nim (and D) never “took off,” despite really enjoying programming in them.