The Go Web site (golang.org) explains the rationale behind creating Go, mostly citing the change of the computer landscape that’s occurred over the past decade or so that’s seen very few (if any) major systems languages spring up: more powerful PCs, many of which use multicore processors; increased dependency management in software that’s not reflected in the “header files” of C-based languages; the growing desire for dynamically typed languages (such as Python and JavaScript) instead of type systems such as Java and C++); and the poor support for concepts such as garbage collection and parallel computation.
Google says that Go takes full advantage of modern, multicore hardware; that it simplifies dependency analysis and avoids the overhead present in C-style languages (such as files and libraries); that Go’s type system has no hierarchy, which saves the programmer from having to define relationships between types; and that Go is fully garbage-collected and naturally supports concurrent execution and communication.
If you’re interested in getting started with Go, or you just want to learn more about its inner workings, Golang.org is loaded with tutorials, manuals, FAQs, and other documentation for easy assimilation . There’s even a section devoted to C++ programmers who want to learn Go. Also there to be found are code samples, such as the traditional beginning to all studies, “Hello, world!”:
05 package main<br>
07 import fmt “fmt” // Package implementing formatted I/O.<br>
09 func main() { 10 fmt.Printf(“Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n”);<br>
11 }
It’s way too early to tell, of course, what the impact of Go on programmers or programming will be. But we have a feeling that in this way, as in so many others, quite a few people will fall behind Google and look at this as a convenient way of writing programs for modern hardware. If it won’t spell the end of the various programming languages in common use, it will undoubtedly represent at least the start of a major C change.