Commentary
NEWS - Google debuts concurrent systems programming language
Bernard Cole
11/17/2009 11:54 PM EST
Go is open source and uses expressive language constructs such as pointers (but no pointer arithmetic0. It is type safe and memory safe. One of the main goals of its designers is to offer the speed and safety of a static language but with the advantages of modern dynamic languages
Go offers methods for any type, closures and run-time reflection. Similar to Java, it uses garbage collection and is designed to compete with C and C++ as a systems programming language.
With reference to multicore programming, Go promotes lightweight concurrency allowing developers to create sets of lightweight communicating processes. In Go terminology, these are called goroutines and are designed to allow a programmer to run many concurrent goroutines without worrying about stack overflows.
Also important in multicore programming, Go promotes sharing memory by communicating. Goroutines aren't threads, they are functions running in parallel with other goroutines in the same address space.
It has been designed to make it easy to launch parallel functions using the goroutines, greatly simplifying concurrency for systems programming. In addition to goroutines, other concurrency related features include the use of channels, channels of channels and leaky buffers.
To learn more about this new language, go (no pun intended!) to http://golang.org/.




