I have posted previously about some of the courses I have been doing recently online. Most of these have been programming related, but some have been in general IT skills that may be useful to me. My employer has paid for a Coursera subscription and I am keen to make the most of it. The courses have included:
The latter two were heavy going and I needed something a bit lighter. There is a third part to those that I will get to soon. I have heard a lot about the Go language. You will often see it referred to as 'golang' based on the official site, but also as this is easier to search for than the word 'Go'. Hive has a similar problem.
Go was created by Google engineers relatively recently to make it easier to build some of the systems they needed with features like concurrency without some of the complications of languages like C++. It was also made efficient when it came to compiling.
I opted for this course that looked like a basic introduction. It is my impression that people who are totally new to programming might struggle a bit as some of the concepts covered are fairly technical. The language is a lot like C with lots of {} braces, but less need of semicolons. The way the code needs to be structured can cause a few headaches, especially with multi-line statements.
I was not especially impressed by the instructor. He knows his stuff, but he is not the best presenter for video lectures with lots of hesitation and he often had to correct himself. The syllabus is a bit of a mix as it covers some basics such as input/output and data types, but then goes off into things like JSON whilst ignoring writing functions.
It is only four weeks of lectures, but you can complete them at your own pace. The limiting factor may be the need to get peer reviews of your assignments by other students. The course forum is full of requests for these reviews, so it is fairly useless to get detailed help on other aspects. The assignments themselves are not too complex, but you are likely to have to do extra research to find the features you need. For example some call for text input, but the command described in the lectures cannot handle strings with spaces and you may need an alternative. Luckily there are lots of online resources available. I found Go by Example very helpful.
I have not really seen enough of Go from this course to tell if it will be useful to me. Some of the data structures are interesting, but you have to do another two courses to get to things like concurrency.
I was able to install the Go tools on Ubuntu Linux as a 'snap' package. That is all command line and I just used a text editor for my code. Executable files were around 2MB for my simple scripts, so I expect these is some form of runtime system embedded in there, possibly for when libraries are required. I think the language is fairly platform neutral, but then so are others that are commonly used these days.
Here is a simple program to print squares of numbers.
package main
import (
"fmt"
)
func main() {
for i:=0; i < 10; i++ {
fmt.Printf("%d squared = %d\n", i, i*i)
}
}
I will have to consider whether I do further courses on this language. I am not sure what I will need next at work, so I am fairly free to look at different options. I do like Python, so may do more with that. I need a practical project to get me fired up.