Archive for May, 2011
The Google Go Programming Language, currently under development by Robert Griesemer, Rob Pike, and a fellow by the name of Ken Thompson looks to be quite interesting.
Some of the merits include:
- Fast compile times. Wicked fast.
Familiar C like syntax.
Ease of programming – a pseudo marriage of C and Python.
Built in concurrent process execution and messaging.
(MPI clustering and CUDA are under discussion.)
Support for AMD64, x86 and ARM
New languages come along all the time. So why should this one be any different?
Ken Thompson, and his experience with systems programming and languages, is one good reason. For another I can foresee that, for scientific computing in particular, there could be a very good future for Go. By providing an easy to learn and use programing environment, with a C and Python-like style, with easy to use messaging and concurrency and which compiles extremely fast and runs at near C speeds – there is a very good potential. If the future added to this MPI capabilities, and especially bindings for existing libraries (e.g. Thrust and SciPy ) and for CUDA – it could very well fill a perfect niche. This just might be the start of something grand.
Install instructions, beginning tutorials, etc.
This site also provides a cool browser based write-compile-run environment where you can achieve instant gratification with Go.
The actual Google code site.
To get a feel for the language and start using it immediately, you might want to read the sample hello world in the writing programs section of the install instructions.
You can execute Go programs using the above mentioned browser based compiler and run time tool.
Of course, you can also install the Go compiler and tools locally. You have two options for the compiler: the native Go compiler tool chain (6g, 6l, etc.) or gccgo, which uses gcc for the backed.
The official site has full instructions for setting up your environment. Requirements to build Go are minimal, and you can likely be up and running in minutes.
Nifty Cool Bonus: Note the following comment from the install instructions on how the Go linker works:
There is no need to list
hello.6‘s package dependencies (in this case, package
fmt) on the
6l command line. The linker learns about them by reading
Other References to the language:
A reference for GO language bindings can be found at:
The suitability of Go for scientific computing is discussed in an interesting Google Groups thread here.
Exploring the misc/ sub directory shows the source includes syntax highlight files for Vim, Kate and other editors as well as some other goodies.