Welcome to the world of Go
What is Golang?
Go, often styled Golang for easier searching, is a programming language guided by simplicity. It is:
Who created Golang?
Go was written from scratch 10 years ago at Google by Rob Pike, Robert Griesemer, and Ken Thompson. They had become frustrated with the unnecessary complexity of available programming languages, deeming them “too subtle, too intricate, and far too verbose.”
The story goes that Go was created during an excessively long wait the developers were having for some C++ code to compile. Out of this frustration they created a language for the modern computing landscape.
Why is Golang so fast?
The benefits of hybridity
Go is an attempt to combine the ease of programming of an interpreted, dynamically-typed language with the efficiency and safety of a statically-typed, compiled language. It’s easy and enjoyable to work with but also does a lot of the useful things a statically-typed language does, such as picking up errors at compile time.
Compilation efficiency was prized by the Go creators and as a result they designed a language that exhibits impressive build times. Here again simplicity plays a key role, as Go avoids slowing down the compiler by avoiding some of the pitfalls of other languages. For example C++’s re-reading of header files slows its compile time, whereas Go’s dependency management works across modules and cuts out all that extra work.
Go is a fully garbage-collected language and in some languages garbage collection can harm the speed of execution. However Go’s team have worked on this. In Go 1.8, pauses for garbage collection are “usually under 100 microseconds and often as low as 10 microseconds.
Working in Go
Go has a full development environment that developers generally find easy to work in quickly, finding many potential issues addressed by useful commands such as go doc, go get, go test, and go run.
Go’s intended simplicity makes it easy to learn and therefore accessible for inexperienced programmers. It also has a rich tooling ecosystem that accelerates the speed at which one can get to grips with the language. This makes it ideal for large collaborative projects.
What is Golang good for?
Generally, Go is great for any project requiring simplicity and performance however it also has some powerful and specific benefits.
Concurrency is a first-class citizen within Go. It was designed at Google to handle their increasingly large projects and by using goroutines where a language such as Java uses Threads, it can handle huge projects efficiently. Tens of thousands of goroutines can run concurrently and Go still performs with impressive speed.
This emphasis on concurrency, combined with the fact that Go was designed for server software and to solve “Google-sized problems,” creates a language particularly suited to cloud computing. This is one of the reasons projects such as Docker choose Go and also one of the reasons Go continues to grow in popularity as the cloud becomes increasingly dominant.
Fans of Go (also known as Gophers) describe Go as having the expressiveness of dynamic languages like Python or Ruby, with the performance of compiled languages like C or C++.
So Go is a performatic and simple language, with concurrency naturally built into it, deployment being as easy as it can be, created by some of the best minds in computer programming today, supported by Google and huge community of open source developers, that has a lot of momentum and has been growing faster and faster every day.