Go was born out of frustration with existing languages and environments for systems programming.

Thus spake the Go FAQ. I empathize. I dislike C++ and Java so much that I’ve stayed with C. More precisely, I’ve stayed with GNU C, because of lexical closures and a few other extensions.

Could Go replace C? Does Go truly combine efficient compilation, efficient execution, and ease of use? The best way to judge was to try real systems programming with Go.

A good place to start is the list of GNU Core Utilities. Here are my experiences with implementing some of the simpler utilities.


Thanks to Ivan Krasin, Carlos Cobo, Karl Magdsick, Michael Gehring, and Bob Appleyard for suggestions.


I wrote these notes long ago while I was learning Go. I’ve been meaning to update them, but I’ve been short on time lately. There are almost certainly many other better sites to read about Go.