First Go Programming Language experiences
I'm currently doing some first steps in Googles new programming language Go just for evaluation. The compilation on OS X is simple and there's also an integration into XCode. But even if XCode has some nice features it's such a rudimentary integration that I switched back to my favorite editor TextMate. The package provided by Google contains also an integration into this editor.
The first impression showed nothing really new, nothing spectecular. Go is a C-style language, statically typed, together with some stuff helping to write less code, with maps as first class types like in Python, with interfaces and methods bound to types but with no inheritance. Coroutines - Go calls them goroutines - can be spawned and the communication between them is done using channels. Go knows lambdas, garbage collection, run-time reflection, multiple return-values, and a very simple export of constants, variables, functions, and channels - just wirte the first letter in uppercase. Beside the basic language Google provides a set of useful packages and some tools with Go. In many aspects my favorite languages Erlang, Smalltalk, and Scheme are more clean, somehow more elegant in their specific domain. So what makes Go anyhow interesting? Why digging deeper? It's just the mix. Not a mix of brand new features but a mix of well known features. The C-style may attract all C, C++, D, Java, C# developers, the maps and the short variable declarations are fine for users of dynamically typed languages, interfaces and type-bound methods provide a basic OO, and goroutines together with message passing are OK for Erlang or Scala developers. So Go is not really imperative, functional, object-oriented or concurrency oriented, it's more or less a pragmatic language. I'll do a bit more with it and then write about my experiences and the comparison to other languages here.