I've recently started to learn Nim (and nimpy also for Python interoperability) and the experience up to now is very good, including fast compilation. I've also learning Arraymancer, which also seems very nice for linear algebra. My interest is basically numerical calculations, so I've been reading various articles that compare various aspects of different languages for that purpose. For example, one of the articles that I found recently is:
Benchmarking Kernel Matrix Calculations in D, Julia, and Chapel [https://github.com/dataPulverizer/KernelMatrixBenchmark](https://github.com/dataPulverizer/KernelMatrixBenchmark) Here the author compares D, Julia, and Chapel for some calculations and summarizes his/her current impressions (based on coding experiences and performance). Though I expect Nim would be in a good position for such benchmarking, I am wondering the difficulty of parallel coding in Nim. For example, in the above benchmark programs, D uses a syntax like "foreach( ... ; ....parallel(...) )", [https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/d/kernel.d#L219](https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/d/kernel.d#L219) Julia uses "threads", [https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/julia/KernelMatrix.jl#L129](https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/julia/KernelMatrix.jl#L129) and Chapel uses "forall" statements [https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/chapel/kernel.chpl#L139](https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/chapel/kernel.chpl#L139) And looking at recent threads (e.g., [https://forum.nim-lang.org/t/6434](https://forum.nim-lang.org/t/6434) and [https://forum.nim-lang.org/t/6426)](https://forum.nim-lang.org/t/6426\)), I am wondering to what degree it is difficult (or easy) to learn parallel coding in Nim, particularly as compared to OpenMP/MPI (which I have basic knowledge and experience). Do you think it might be rather hard to learn parallelism in Nim at the moment, e.g., by requiring more experiences and understanding of technical aspects (like "channels")? I am sorry for a very vague question but I appreciate it if you share any ideas/experiences. Thanks very much :)