This is a creation in Article, where the information may have evolved or changed.
The NIM language has many advanced features in language and is close to Python's syntax, and rust is positioned as a direct competitor to C + +. But think about it: these two languages have not been solved since birth, and it is hard to solve a major crisis in the software industry this century: the multi-core programming crisis. Their emergence is not directed at solving multi-core programming problems, the genetic decision, relying on these two languages can not solve the problem of multi-core programming.
How to solve the problem of multi-core programming?
Shielding complex features on the hardware, such as caching, consistency, memory barriers, atomic manipulation, and simple concurrency for programmers, has the least amount of mental burden in programming.
Go can create thousands of threads in memory and provide the infrastructure for inter-process communication, which is not the only two points that Nim and rust do.
The Nim language does not currently implement its own assembler and linker, the NIM code is first compiled into C code, and then the C code is compiled into local machine code. Golang comes with assembler and linker.
The original goal of Rust was to create a lot of co-processes like Erlang, but the target was abandoned by the authorities, so rust was a concurrent execution, not a co-worker, but an OS-level thread. In high concurrency scenarios, the 1000 OS threads are running at a very poor rate. Alternatively, you can choose an async model, but face a callback hell, and be careful about synchronizing IO and CPU-intensive computations blocking the current thread. If the use of a third library must be modified to fit the asynchronous model.
Because rust officials understand that it is difficult to achieve a complete and efficient scheduling process. Go is doing well in this area, and other statically compiled types of languages do not exceed it.
We can say that NIM and rust are positioned differently to solve their own goal problems. But many people compare nim with go, not at all, and do not dare to compare the characteristics of these two languages with the core features of go.
Multi-core programming is a problem that is currently encountered, and it is difficult to solve the problem, who can solve the efficiency and elegance, who can win in the future.
Xu Shiwei said that he was in C + + to implement the co-process and scheduling, in the end is only a poor imitation of Golang, I think the original idea of rust is probably the same.
And I believe in the vision of the two Masters of Ken Thompson and Russ Rox.
The problem with the Rust high concurrency Framework implementation: http://www.zhihu.com/question/30325880