| Two recent Go articles |
| 6 Mar 2013 |
| Tags: google, talk, ethos |
| |
| Andrew Gerrand |
| |
| * Introduction |
| |
| In today's blog post I'd like to highlight a couple of recent articles about Go. |
| |
| * Go at Google |
| |
| In October last year, Rob Pike presented a keynote at the ACM [[http://splashcon.org/2012/][SPLASH]] conference in Tucson. The talk, titled [[http://talks.golang.org/2012/splash.slide][Go at Google]], was a comprehensive discussion of the motivations behind Go. Rob later expanded on his talk to produce an essay titled [[http://talks.golang.org/2012/splash.article][Go at Google: Language Design in the Service of Software Engineering]]. Here is the abstract: |
| |
| The Go programming language was conceived in late 2007 as an |
| answer to some of the problems we were seeing developing |
| software infrastructure at Google. The computing landscape |
| today is almost unrelated to the environment in which the |
| languages being used, mostly C++, Java, and Python, had been |
| created. The problems introduced by multicore processors, |
| networked systems, massive computation clusters, and the web |
| programming model were being worked around rather than |
| addressed head-on. Moreover, the scale has changed: today's |
| server programs comprise tens of millions of lines of code, |
| are worked on by hundreds or even thousands of programmers, |
| and are updated literally every day. To make matters worse, |
| build times, even on large compilation clusters, have |
| stretched to many minutes, even hours. |
| |
| Go was designed and developed to make working in this |
| environment more productive. Besides its better-known |
| aspects such as built-in concurrency and garbage collection, |
| Go's design considerations include rigorous dependency |
| management, the adaptability of software architecture as |
| systems grow, and robustness across the boundaries between |
| components. |
| |
| This article explains how these issues were addressed while building an efficient, compiled programming language that feels lightweight and pleasant. Examples and explanations will be taken from the real-world problems faced at Google. |
| |
| If you have wondered about the design decisions behind Go, you may find your questions answered by [[http://talks.golang.org/2012/splash.article][the essay]]. It is recommended reading for both new and experienced Go programmers. |
| |
| * Go at the Google Developers Academy |
| |
| At Google I/O 2012 the Google Developers team [[http://googledevelopers.blogspot.com.au/2012/06/google-launches-new-developer-education.html][launched]] the [[https://developers.google.com/academy/][Google Developers Academy]], a program that provides training materials on Google technologies. Go is one of those technologies and we're pleased to announce the first GDA article featuring Go front and center: |
| |
| [[https://developers.google.com/appengine/training/go-plus-appengine/][Getting Started with Go, App Engine and Google+ API]] is an introduction to writing web applications in Go. It demonstrates how to build and deploy App Engine applications and make calls to the Google+ API using the Google APIs Go Client. This is a great entry point for Go programmers eager to get started with Google's developer ecosystem. |