Nim is a compiler with multiple codegen backends.

Transpilers, or source-to-source compilers, are tools that read source code 
written in one programming language, and produce the equivalent code in another 
language that has a similar level of abstraction.

The "equivalent code" and "similar level of abstraction" is the key point here. 
Existing nim backend languages (C, C++, JS) are nowhere near "similar level of 
abstraction". Well you could argue C++ is somewhat similar, but no, the C++ 
code generated by nim is very low-level comparing to nim or hand-written C++ 
code. It doesn't have classes, templates, `#ifdefs`, even header files, it is 
locked to a single platform/architecture, it is almost impossible to edit it 
manually.

Another way to think about it is imagine if nim introduced another backend 
which spits out native binaries, and this backend would reside in the nim 
binary as C/C++/JS backends do. Does nim suddenly become the compiler now? Or 
does is become a Schrödinger's compiler-transpiler depending on which arguments 
you run it with? :) Obviously, it still remains a compiler, just like it is now.

Reply via email to