Saturday, December 13, 2014

Video Review: Introduction to Go Programming, by John Graham-Cumming, O’Reilly Media

Exactly what I wanted, a fast-paced introduction to Go and it did the job of getting me started on my first real Go program.  This is an excellent introduction to Go Programming - just what it says on the tin.

This video is not for people new to programming, it’s fast paced and I find that it assumes quite a bit of programming knowledge.  This is not a criticism at all - what makes it unsuitable for complete beginners is exactly what makes it ideal for experienced programmers who just want to get up to speed with a new language.

I was impressed that the author, John Graham-Cunning, does each video episode live, continually writing and re-writing code segments on the fly with hardly any errors or hesitation.  He quickly moves from task to task with just enough explanation so that you can follow making it a very efficient learning process.  There were times when the videos raised questions in my mind, questions I knew I’d have to search for the answer myself.
But again this is fine, if the author provided such a deep analysis as to anticipate all our questions … it would make for a very boring video, which this was not.  The author is also very pleasant to listen to.

The video starts out by covering the basics of the language - the inevitable hello world program, how to build from source and the included godoc documentation tool.  From there we treat different data types (int, string, bool, arrays, slices, maps), multiple return values, and control statements (if, switch, for loop).
After this introduction the concept of concurrency is introduced covering go routines, channels, the select statement and buffered channels.  It was particularly interesting to see how Go handles concurrency.

Next up are interfaces and packages where Go does not follow standard object-oriented practices, probably because of the desire to not implement classes or more specifically to not implement subclassing, the bain of many an OO language.  Go does still provide abstractions for data and behaviour through the struct keyword but it does not instantiate objects or subclass.
This in particular is an area that I’d like to have been able to read something related to the subject.
I found this discussion quite interesting about Go’s approach.

The last 10 or so videos cover some of the practical aspects of Go programming such as the tool chain, unit testing and some of the most frequenly used standard packages for i/o, http, json, strings, sorts, logging, time and how to link with c code.

This is the second video training that i’ve followed from O’Reilly and although I’ve really enjoyed them both and learnt a lot from them I still feel the need for some written support.  Even if it’s some high level slides - actually I’d prefer to have some detailed writing and some high-level slides to accompany the videos - It would really help me get the best from the videos.
Well I find that my attention sometimes drifts from the videos, and also sometimes I listen to the videos at times when it isn’t practical to watch them.  It would really help me to be able to read the same or similar content and then I could follow more easily when watching/listening.  Of course there are perfectly good documents available on Go, but it would be good to have some referenced text associated with each video.

I was keen to learn more about Go, Googles’ 5 year old systems programming language, having some significant past experience with C/C++ in my early career and still bearing the scars of pointer exceptions and all those weird hoops you have to jump through to get things done in C++.  I’ve also done a bit of C++11 recently which has really advanced the language from the one I knew in the 90’s.
These videos had the effect on me of dispelling Go as some weird language with weird conventions, an idea I’d built up whilst watching some discussions on the Go (Google Groups’) mailing list.  So Go looks pretty impressive to me, only time will tell.  Now I have to continue using it.

I thoroughly recommend these videos for experienced programmers who need something to get them started on Go.  5 hours 17 minutes of video.  Excellent.
The videos can be found on the O'Reilly product page here.

No comments:

[Conference -] Developing Micro-services on Kubernetes

In April I had the chance to present at , first in Warsaw on Apr 24th, and then in Wroclaw ("wroslof" was my best at...