Saturday, April 13, 2013

2013-04-13 Saturday - Go Programming Learning Resources

I'm spending some time today exploring the Go Programming Language
http://golang.org/
http://code.google.com/p/go/
http://code.google.com/p/go/source/browse
http://code.google.com/p/go/issues/list


Go Programming Language Blog
http://blog.golang.org/

Google Group: golang-nuts
https://groups.google.com/forum/?fromgroups#!forum/golang-nuts

...and working my way through some of the various articles and documentation
http://golang.org/doc/install
http://code.google.com/p/goclipse/wiki/GettingStarted
http://golang.org/doc/effective_go.html
http://golang.org/doc/code.html
http://golang.org/doc/articles/wiki/
http://golang.org/doc/


"GoClipse is an Eclipse plugin that adds IDE functionality to the Eclipse platform for the Go programming language. The purpose of GoClipse is to create an environment in which development of Go is easy for a beginner to intermediate user"
https://code.google.com/p/goclipse/

I've installed the goclipse 0.7.6 plugin  into Eclipse Juno (4.2) SR2
http://goclipse.googlecode.com/svn/trunk/goclipse-update-site/

 3:15pm update...

After experimenting with the goclipse plugin for a few hours...I've experienced what seems to be a number of issues with it...

1) The goclipse wiki documentation appears to be woefully out of date (see references to a non-existent /cmd directory)
See: http://stackoverflow.com/questions/9957449/cant-use-packages-in-goclipse

The goclipse exemplar code in the wiki (for the clock.go module) needs to be modified as follows:

package clock

import (
    "time"
)

func IsAM() bool {
    localTime := time.Now()
    return localTime.Hour() <= 12
}

2) Moving a directory/file from the pkg folder to the src folder doesn't appear to trigger auto-rebuild(?)

3) Directories/packages created under /src are not automatically detected by goclipse

4) Adding a new directory (in either src or pkg) to the build path doesn't appear to help goclipse find the source file

5) When executing via the Run-As command, a Go console sometimes (?) didn't open

6) Finding/Importing a system library in a source file under the /src directory failed (e.g. "time" - works fine, if the source file is under the \pkg directory, but won't work if it is in the /src directory)?

7) Creating a custom package in the /pkg directory can't be found
8) Sometimes(?) unable to delete the .exe generated in the \bin directory, from within Eclipse.




As of today, there were 51open issues for the goclipse project (which is 50% of all bugs to-date)
http://code.google.com/p/goclipse/issues/list

Note: there were [5] updates to the update site (under subversion)  in all of 2012 (rev 440 ==> 0.7.6) was the last on 12/18/2012  - and no updates in 2013 (yet)
http://code.google.com/p/goclipse/source/browse/

Google User Group for goclipse
https://groups.google.com/forum/?fromgroups#!forum/goclipse
NOTE: doesn't seem to be very active...


If you prefer vim or emacs as your editor, you may want to investigate Gocode (an auto-completion daemon) http://marketplace.eclipse.org/content/goclipse

For users of the Sublime editor:
http://www.sublimetext.com/2
https://github.com/DisposaBoy/GoSublime

Notepad++
http://go-lang.cat-v.org/text-editors/notepad-plus-plus/

Another possible IDE:
https://code.google.com/p/golangide/


stackoverflow articles that reference goclipse
http://stackoverflow.com/search?q=goclipse

Other blog postings related to using goclipse
http://richitexperience.wordpress.com/2012/10/19/goclipse_preferences/
http://richitexperience.wordpress.com/2012/11/05/goclipse-project-properties-dont-forget-it/

Interesting Blogs that discuss aspects of Go programming
http://blog.natefinch.com/2013/01/go-is-for-open-source.html
http://jordanorelli.tumblr.com/post/42369331748/function-types-in-go-golang

Other Go Language Resources
http://go-lang.cat-v.org/

John Graham-Cumming's CloudFlare presentation: Go Concurrency
http://www.slideshare.net/jgrahamc/go-oncurrency

A List of Go Projects
http://code.google.com/p/go-wiki/wiki/Projects

No comments: