Developer's Reading List, May 22, 2012 The most interesting books of the last month, selected and reviewed by Dr. Dobb's editors.
As mentioned in my recent editorial on the new native languages, Go is one of several new languages emerging in the gap between the simplicity of C and the complexity of C++. As designed by Russ Cox (Objective-C), Rob Pike, and Ken Thompson (the latter two of UNIX and Plan 9 fame), Go can be described accurately as C for the 21st century. It uses pointers, but not pointer arithmetic; it provides garbage collection; offers built-in parallelism; has language-level data structures; and boasts unusually fast compilation.
However, a tutorial for Go requires the author to break the reader out of habits acquired in other languages. For example, Go uses a lightweight form of OO: There is no inheritance of any kind; in fact, there are barely classes. Objects themselves are glorified structures with the benefit of each being their own type. Doing large-scale OOP with such a view of object orientation really cannot be glibly approached using traditional practices. Rather, you need to "think in Go."
Because Go is so similar in appearance to C-based languages, though, communicating this new way of approaching coding requires a tutorial such as this one, in which there are frequent explanations of what is idiomatic Go, as well as reminders not to simply repeat the approaches and syntax learned in C, C++, C#, or Java. Summerfield does this exceeding well, making his points clear without getting excessively didactic or dogmatic about the Go way of doing things.
In other respects, the book is highly readable, the examples well-chosen and at times entertaining, and the code is useful precisely what a modern language tutorial should be. My only complaint is the pacing: too many pages are spent on fundamentals, and too few pages on the more advanced aspects of the language. But in all other respects, this book is definitely recommended.