This will be a series of tutorials about Go language. The first post is a bit boring and talks about the current Go ecosystem and the language’s overview. As well as its advantages and disadvantages.
I’ve been working with Node.js for many years and then with Go within my latest projects. I’ve been programming since 10 years old for 25+ years (guessed my age?). I want to share what I learnt with you.
I’ll go into the details of each piece of information here in this post afterwards, in the next posts. This post is here for giving you a quick overview of Go without going into the language specific details and tutorials.
It’s an open source programming language from Google. Made its first stable release, 2011.
What does it mean that it’s an open source programming language?Well, it’s created by Google as I said. However, even you can contribute to it by creating new proposals, fixing bugs, making it faster. It’s like a living being growing in front of you. If you’re curious, its source code is hosted here on Github.
Robert Griesemer, Rob Pike and Ken Thompson. They started designing the language around 2007. The language open-sourced in 2009. Read more here.
Go design inspired from languages like Algol, Pascal, C, Modula, Oberon, Smalltalk and Newsqueak.
Go inherited mostly from Oberon language and its syntax is from C. Go’s OOP is more like Smalltalk but in Go, you can attach methods to any type. And concurrency is mostly from Newsqueak which is a language also from Rob Pike and heavily inpired from Hoare’s paper of CSP (Communicating Sequential Processes).
Fast languages like C, are difficult to work with and not safe. Compiling speed, dependencies and runtime errors are vast. Interpreted languages like Java and Ruby are safe but they’re slower and have many dependencies, one of them is the interpreter itself, the virtual machine which is needed to run the code. Javascript and Node.js is a wild kid; which is interpreted, weakly-typed and unsafe to work with (although there are some workarounds).
Also, as an example, Java became too complex and verbose to write. There are many keywords which can be guessed from the context the language constructs inside in (which is called inferring). Ruby is joyful to work with however it’s not designed for speed in mind. Javascript lets you free, go wild and slowly kills you (maintainance nightmare, callback hell, no built-in solutions for safety).
Programming in a compiled language like C is not fast because of the compilation step. However, working with an interpreted language like Ruby is fast, because it’s interpreted and you can see the results fast after you save the source code.
There are at least 2 millions programmers in the Go community.
Most notable companies are: Google, Docker, Dropbox, Heroku, Medium, Lyft, Uber, and others.
Percentage of Stack Overflow questions for Go
Most used and wanted languages in 2017
https://www.tiobe.com/tiobe-index/
Also see: Go 2016 Survey Results.
Go has the cutest mascot ever. OK…, Let’s see the real advantages.
Go wants you to compose things not inherit like in other OOP langs.
go fmt
automatically rearranges your code for you after each save (if you configured that in your text editor).
Before `go fmt`
After `go fmt`
go lint
makes suggestions to improve your Go code.
$ go lint nocomment.gonocomment.go:3:1: comment on exported function NoComment should be of the form "NoComment ..."
Err everywhere. You need to check errors for each of the error producing function in your code explicitly. Again, for me, this is not a disadvantage, I love the explicitness of Go programs. There are some proposals to change error handling which I don’t like them at all.
res, err := http.Client.Get("http://ip.jsontest.com/")
// there are no try-catch exceptions in Go, check errors explicitlyif err != nil {return err}
// ...
You made it here! Thanks for reading!
❤️ Please Add claps! Share it on twitter!
🐦 I’m mostly tweeting about Go: @inancgumus.
Let’s stay in touch weekly for new tutorials and for my online Go course.
Originally published at medium.com on September 20, 2017 in “I’m Learning Go” publication, click this link to subscribe to the publication.