Interface Upgrades in Go
The zero-copy IO in Go is so elegant.<p>I think you can really judge a language accurately by checking out its standard library. This is one of my favorite things about Go.<p>By comparison,<p>* The C++ STL. Fast and useful, but the implementation is nearly unreadable due to template soup. Here's one of the simpler parts! <a href="https://www.sgi.com/tech/stl/stl_vector.h" rel="nofollow">https://www.sgi.com/tech/stl/stl_vector.h</a><p>* PHP. So bad it's basically a strawman. I'll include it because it's hilarious:
<a href="http://www.forbes.com/sites/quora/2012/08/31/what-are-the-most-surprisingly-useful-php-functions/" rel="nofollow">http://www.forbes.com/sites/quora/2012/08/31/what-are-the-mo...</a><p>* Java. A bit better. Compare the readability of OpenJDK's ArrayList.java to the STL vector.h, which does essentially the same thing: <a href="http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/00cd9dc3c2b5/src/share/classes/java/util/ArrayList.java" rel="nofollow">http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/00cd9dc3c2b5/s...</a><p>But of course the Java standard library is immense and has a lot of cruft in it. To write clean Java you really need to avoid much of the standard library (read Effective Java by Josh Bloch) and add a few important missing parts (use Guava).<p>Golang is really unique in that regard. You can <i>learn Go</i> by reading the standard library. It is beautiful, linear code. The library is pretty complete--eg you can write a one-line HTTP file server out of the box--but nothing feels extraneous. Lastly, I think it gets close to Knuth's ideal of Literate Programming. Paragraph-length comments thoughout the standard library explain what's happening, how, and why.<p>For example, the post talks about how io.Copy is awesome. For a concise English explanation, why not go directly to the source!<p><a href="https://golang.org/src/pkg/io/io.go#L329" rel="nofollow">https://golang.org/src/pkg/io/io.go#L329</a>