March 28, 2012
Congratulations to the Google Go team. The Google Go Language has reached Version 1.0. Since November 2009 the Go team has worked steadily to polish what was already an excellent language idea. They were very receptive to input from developers and encouraged participation in the development of the language. It is a great example of how an open source project should be run.
I started this site soon after the introduction of Go to help people get started. It has not been updated for a while, however much of what it contains is still relevant. The scripts need to be updated to use the new Go Tools like Go Install for an automated build. Go is now a standard mime type in newer Linux distributions, so syntax highlighting is already there for most editors. Go installation is now much easier, you can just download the appropriate binary libraries for your OS, you do not need to maintain your own sources and compile everything from scratch.
The question most often is asked by the person new to Go is, “What editor or IDE should I use?”. The short answer is, “To get started, use whatever you like”. All that is required is a basic editor. For old school or command line lovers, you can use ed, nano, vi, vim, emacs. Even though I am old and have used all of these, I prefer a graphic IDE. Here your choice is again very broad. For Linux users, you can start with whatever your distribution offers. Gnome based distributions have or can easily add Gedit. KDE has Kate. You could even use Leafpad.
There are 2 other choices that are worth considering for more advanced needs, both are cross platform. Eclipse is a very full featured professional IDE. A plug-in has been written, Goclipse, that integrates Go project build and debugging functionality into Eclipse. GolangIDE is a simple, lightweight IDE for Go that includes all of the important features of a good IDE. Both include built-in gdb graphical debugging.
The Go language has many interesting improvements in syntax over existing systems languages. But, what makes Go compelling to me is that it makes concurrent programming easy and robust. The other mainstream languages, like Java and Python (and I like Python), are clumsy, convoluted and just plain painful in their handling of concurrent processing. They do not give one any feeling of scalability or robustness. With the future of processors definitely going toward more and more cores, it important for our programs to automatically take advantage of them without any special consideration, Go does that with incredible simplicity.