<story><title>Nim Programming Language 0.14.0 released</title><url>http://nim-lang.org/news/2016_06_07_version_0_14_0_released.html?hn=1</url></story><parent_chain><item><author>Symmetry</author><text>I&amp;#x27;ll try to give it a go for Rust, Nim, and Go.&lt;p&gt;Rust:  Wants to replace C++ as an expressive systems programming language.  Syntax derived from C++.  Emphasis on const correctness.  Makes use of some functional programming concepts.  Extensive metaprogramming.  No garbage collection by default.  Interface based polymorphism.  The type system tracks memory ownership helping to prevent some classes of error at the cost of more cognitive overhead.  The standard library is also written in a way that makes it hard to break things.  The only one of the three that can easily be used to write libraries that can be called from other programming languages.  Medium complexity to learn.&lt;p&gt;Nim: Slightly higher level than Rust.  Reference counting garbage collection which can be turned off, but heaps are by default local to threads.  Syntax derived from python.  Emphasis on const correctness.  Extensive compile time evaluation facilities.  Object oriented polymorphism (for now).  Sadly allows null by default for now.  Extensive metaprogramming.  Medium complexity to learn.&lt;p&gt;Go: Hightest level of the three.  Traditional garbage collector.  Interface based polymorphism.  Simple and easy to pick up.&lt;p&gt;All three have good stories about multithreading.  All three do their best to fix warts in C++ in things like declaration mirrors use syntax.  All three start with the chainsaw turned off so you won&amp;#x27;t cut off your foot unless you&amp;#x27;re doing something genuinely dangerous like writing an OS or compiler.&lt;p&gt;For me, I&amp;#x27;d use Rust for writing security critical or OS level things like kernels, system libraries, important utilities, and web browsers.  Nim for small team applications where you can afford to be a bit clever and Go for large team projects where cleverness has to be discouraged.&lt;p&gt;I&amp;#x27;m not a huge expert in any of these so there&amp;#x27;s probably important things I&amp;#x27;m overlooking.</text></item><item><author>sdegutis</author><text>There are several languages similar to Nim these days, and they&amp;#x27;re all very exciting. For example, Nim, Rust, D, Go, and probably others I&amp;#x27;m forgetting. Does anyone know of some chart that compares them based on their features and priorities? Maybe something in the spirit of &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mobile.twitter.com&amp;#x2F;nixcraft&amp;#x2F;status&amp;#x2F;739383796626128896&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;mobile.twitter.com&amp;#x2F;nixcraft&amp;#x2F;status&amp;#x2F;73938379662612889...&lt;/a&gt; but with more areas of comparison and less trying to be funny?</text></item></parent_chain><comment><author>pcwalton</author><text>As a Rust developer, this strikes me as a really good, and fair, description of the three languages. Thanks for writing it up :)</text></comment>
<story><title>Nim Programming Language 0.14.0 released</title><url>http://nim-lang.org/news/2016_06_07_version_0_14_0_released.html?hn=1</url></story><parent_chain><item><author>Symmetry</author><text>I&amp;#x27;ll try to give it a go for Rust, Nim, and Go.&lt;p&gt;Rust:  Wants to replace C++ as an expressive systems programming language.  Syntax derived from C++.  Emphasis on const correctness.  Makes use of some functional programming concepts.  Extensive metaprogramming.  No garbage collection by default.  Interface based polymorphism.  The type system tracks memory ownership helping to prevent some classes of error at the cost of more cognitive overhead.  The standard library is also written in a way that makes it hard to break things.  The only one of the three that can easily be used to write libraries that can be called from other programming languages.  Medium complexity to learn.&lt;p&gt;Nim: Slightly higher level than Rust.  Reference counting garbage collection which can be turned off, but heaps are by default local to threads.  Syntax derived from python.  Emphasis on const correctness.  Extensive compile time evaluation facilities.  Object oriented polymorphism (for now).  Sadly allows null by default for now.  Extensive metaprogramming.  Medium complexity to learn.&lt;p&gt;Go: Hightest level of the three.  Traditional garbage collector.  Interface based polymorphism.  Simple and easy to pick up.&lt;p&gt;All three have good stories about multithreading.  All three do their best to fix warts in C++ in things like declaration mirrors use syntax.  All three start with the chainsaw turned off so you won&amp;#x27;t cut off your foot unless you&amp;#x27;re doing something genuinely dangerous like writing an OS or compiler.&lt;p&gt;For me, I&amp;#x27;d use Rust for writing security critical or OS level things like kernels, system libraries, important utilities, and web browsers.  Nim for small team applications where you can afford to be a bit clever and Go for large team projects where cleverness has to be discouraged.&lt;p&gt;I&amp;#x27;m not a huge expert in any of these so there&amp;#x27;s probably important things I&amp;#x27;m overlooking.</text></item><item><author>sdegutis</author><text>There are several languages similar to Nim these days, and they&amp;#x27;re all very exciting. For example, Nim, Rust, D, Go, and probably others I&amp;#x27;m forgetting. Does anyone know of some chart that compares them based on their features and priorities? Maybe something in the spirit of &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mobile.twitter.com&amp;#x2F;nixcraft&amp;#x2F;status&amp;#x2F;739383796626128896&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;mobile.twitter.com&amp;#x2F;nixcraft&amp;#x2F;status&amp;#x2F;73938379662612889...&lt;/a&gt; but with more areas of comparison and less trying to be funny?</text></item></parent_chain><comment><author>michaelcampbell</author><text>Nim feels higher level to me than Go; can you educate me on how you drew the opposite conclusion?  Maybe I&amp;#x27;m looking at something wrong.</text></comment>