Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

Having asked a similar question here: What are Ruby's strengths? I continue my quest to understand the strengths and philosophy of languages by asking for a document on the awesomeness of Google's Go. Why should I care? What distinguishes Go from Java or C++? What are its unifying ideas, its fundamental tenets?

share|improve this question

marked as duplicate by gnat, Bart van Ingen Schenau, GlenH7, BЈовић, MichaelT May 20 '13 at 11:58

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1  
For a critique of the Go Language, look here: scienceblogs.com/goodmath/2009/11/11/googles-new-language-go –  Robert Harvey Nov 20 '12 at 0:07
    
I cannot resist this. The answer to any question about Google Go is "Go google". –  user16764 Nov 20 '12 at 0:09
    
There is also a nice presentation on go and concurrency: rspace.googlecode.com/hg/slide/concur.html –  faif Nov 20 '12 at 11:41
1  
@gnat - it took me a moment to see the duplicate aspect of it, but I think you're right. This question is related to "how to find" information about Go. –  GlenH7 May 20 '13 at 11:29
add comment

2 Answers

up vote 7 down vote accepted

So what's Go good for? According to distinguished Google Engineer Rob Pike, the co-designer of the Go programming language, it's designed for "big software."

Pike says Go is best for "large programs written by many developers, growing over time to support networked services in the cloud: in short, server software. Go enables programmers to develop software quickly and maintain and adapt it easily as it grows. It combines the efficiency of traditional compiled languages with the ease of use and expressiveness of scripting languages."

http://readwrite.com/2012/03/29/googles-go-programming-languag

Go attempts to combine the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++. In our experiments with Go to date, typical builds feel instantaneous; even large binaries compile in just a few seconds. And the compiled code runs close to the speed of C. Go is designed to let you move fast.

http://techcrunch.com/2009/11/10/google-go-language/

Google has intensive needs at two ends of the spectrum:

  • the requirement for high agility and programmer productivity, of the kind that results from a modern dynamic language
  • the requirement for high-performance and scalability, including the ability to exploit multi-core architectures and concurrent processing

Historically, a common approach to software development at Google is to create a prototype in a high-productivity language like Python, one where a developer can iterate rapidly through the compile-run-debug cycle until the appropriate mix of functions and features is arrived at.

Once the design is considered complete, the development team then undertakes the laborious step of re-casting their design in a high-performance, highly scalable system: in most cases C++ (in some cases, as in Google Wave, it is Java).

The grand experiment that Pike and colleagues have embarked upon is to see whether these two very divergent needs can be satisfied by a carefully designed and well crafted language.

http://blogs.gartner.com/ray_valdes/2009/11/12/geeks-agog-over-google-go/

share|improve this answer
add comment

Rob Pike, the co-creator of Go, gave a talk on it at http://talks.golang.org/2012/splash.slide. He explains that Go is motivated by a desire to use "language design in the service of software engineering" - in other words, to address some of the particular problems (pain points) that arise when using C++ or Java for big software projects.

His talk goes into various design decisions of Go - its handling of packages and dependencies, errors versus exceptions, garbage collection, even its syntax - and how they're designed to address the problems of large-scale software projects.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.