Go Introduction

Go(or Golang) is an Open source programming language that focuses on Speed and Simplicity. It was developed at Google. It is a statically typed programming language and yields compiled machine code binaries. It is also a concurrent and garbage-collected language in nature.

It was created by developers at Google to create efficient software. Go ensures type safety and it also allows us to harness the multiple cores of processors that are used today.

It can be referred also as a modern-day programming language because the choices that the developers used while developing it make it much more agile and future-ready. Its compilation speeds are on par with most of the peer languages, and though it is a statically typed language it does feel like a dynamically typed language.

History of Go

Go was created by Robert Griesemer, Rob Pike, and Ken Thompson.

In 2007, Google ran into few problems with the languages they were using at that period of time. They had to maintain millions of lines of code, and whenever they wanted to test new changes of the code, they would have to compile the entire code into a runnable form, which was very slow and tedious.

So, Google assigned Robert Griesemer, Rob Pike, and Ken Thompson to sketch out some goals for a new programming language, these mainly were:

  • It should compile Fast

  • Shouldn't have cumbersome code

  • The unused memory should be freed automatically(garbage collection)

  • Good support for processors with multiple cores

In short, the goal of the Go programming language project was to eliminate the slowness and clumsiness faced by Google due to the complicated and confusing programming languages they were using at that time. For example, consider the case of C++, the compilation of a large amount of C++ could sometimes take an entire day at google, which definitely was unreasonable, both regarding the productivity and the time.

After finalizing the goals, Go was formed in a couple of years. It was fast to write code in it and it produces programs that can be compiled very fast and were easy to run as well. It also solved most of the issues that Google was facing at earlier times.

In 2009, the Go project switched to an open-source license. It then became free for anyone to make use of and any developers can also contribute to the project. Google still maintains the development of the language and they have a small team dedicated to it, but because of so many open source contributions by developers all around the world, it is fair to say that it won't be as much as a success without open source contributions.

Go Version History

The following table contains the version history of the Go language.

Version Name Release Date Description
go1 March 2012

Added Support for New Core Functions, and much more.

go1.1 May 2013

Included several compilers and runtime bug fixes, and much more.

go1.2 December 2013

Includes bug fixes to the runtime, net, and database/sql packages, and much more.

go1.3 June 2014

Includes bug fixes to the compiler and the net, and crypto/rsa packages, and much more.

go1.4 December 2014

Includes bug fixes to the linker, log, syscall packages, and much more.

go1.5 August 2015

Includes bug fixes to the compiler, assembler, and the fmt packages, and much more.

go1.6 February 2016

Includes fixes to the compiler, runtime, tools, documentation, and much more.

go1.7 August 2016

Includes fixes to the compiler, runtime, documentation, and much more.

go1.8 February 2017

Includes fixes to the compiler, linker, runtime, documentation, go command, and much more.

go1.9 August 2017

Includes two security fixes and much more.

go1.10 February 2018

Includes fixes to the compiler, runtime, and much more.

go1.11 August 2018

Includes fixes to the compiler, documentation, and much more.

go1.12 February 2019

Includes fixes to cgo, the compiler, the go command, and the fmt packages, and much more.

go1.13 September 2019

Includes security fixes to the net/http and net/textproto packages, and much more.

go1.14 February 2020

Includes security fixes to the encoding/binary package, and much more.

go1.15 August 2020

Includes security fixes to the net/http/cgi, fmt, and much more.

go1.16 February 2021

Includes security fixes to the archive/zip and encoding/xml packages, and much more.

How Go differs from other programming languages?

It is quite fair to say that there are many things that Go does differently when compared to other programming languages. Some of them mainly are:

  • No overloading of methods and operators

  • Built-in concurrency and ease of memory sharing

  • No type inheritance

  • Maps are built-in

There are many more such feature differences that are present in Go, which helps it to achieve things differently and most of the time results in an improvement over its peer languages.

The Go Playground

The Go playground has become a very essential part of Go. It allows us to execute Go programs without any setup required. In order to do that just visit this link. It contains a simple editor where you can write your Go code and then you can run the code on Google servers, and the result will be displayed on the browser itself.

What projects should you use Go for?

While it is quite alright if you use Go in any domain of development, but there are few domains of software development where it shines the best. Some of these are:

1. Cloud Services

Go is also called the language of cloud computing. It provides top performance and also its inbuilt concurrency makes it a great choice for the same. Many cloud businesses such as Apple, Kubernetes, Docker, etc make use of Go.

2. Media platforms

Go shines when it comes to scaling products to millions of users. It is very good at handling such a large amount of traffic. Youtube, Netflix, and many more such media platforms make use of Go to handle millions of users.

3. On-Demand Services

Uber achieved the highest query per second with help of Go. In their case, Go helped a lot in improving the throughput and lowering the latency.

4. Distributed Products

Go provides great support and has acted as the core language for the development of distributed products. Some of the famous examples are InluxDB and CockroachDB.

5. Command-Line Interfaces

Go is ideal for designing CLIs. Its ability to compile very quickly into a single binary, and also being able to be consistent across platforms is what makes it a great choice while developing CLIs.

Future of Go

There's no denying that a language which is just a decade older and with all the modern rich features won't be popular in near future. Nowadays, if you want to develop robust software applications that should scale well and is fast, and handles the memory well, Go seems to be the best option. It took inspiration from the "C" syntax and yet it is easier to learn and avoid some of the pitfalls that its peer languages had.

Most of the famous tech giants are using Go in one way or another. Some of them have changed their entire code structure as they found "Go" much more assuring than the languages they were using earlier. It is also fair to say that the future of Go also depends on the open-source community, which is responsible for all the debates and speculations about the new futures that should be added to the language.

Go has gained an immense amount of popularity and is expected to grow even more in near future.

Conclusion

In the above article, we learned what is Go, then we learned about the brief history of Go. Following that we learned how Go is different from other programming languages, then we got a rough idea about the Go playground, following that we learned what projects suit Go as the main development language, and lastly, we learned about the Future of Go.