Channels ▼

Developer's Reading List

, May 22, 2012 The most interesting books of the last month, selected and reviewed by Dr. Dobb's editors.
  • E-mail
  • Print

Programming in Go

Mark Summerfield

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.

— ALB






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.