Golang, Introduction of Google's Go Programming Language
Tags: go, codenewbie, computerscience
Published: 2020-08-25 06:14:56

The Go language was designed and implemented by three very famous engineers: Ken Thompson, Robert Griesemer and Rob Pike at Google. By the way, the question will definitely be in your mind, why did they create the language? Or what was the problem they were trying to overcome which inspired them to create a new programming language, when there are already many powerful language available.

The answer is efficient compilation, efficient execution, concurrency and of course ease of programming.

Referring to the above mentioned things, you will again be thinking about the characteristics of Go, so first I will tell you about the syntax of Go, the language has strong/static type system so if you come from a dynamic type language like Python or JavaScript then it might be a bit unexpected for you. Well there is a sensitivity to strong/static types, system are typically associated with very verbose syntax. But as per the design decision around creating Go, the decision was made to put as much emphasis on compiler helping you figure out what the types are rather than you figure it out Single binary output is another feature of the language, which does not mean that it contains all the assets of an application,on your own.

The syntax for Go is inspired by C, and some of the features are also derived from Python and JavaScript which we will see in more detail later, and also, that Go is a multi-paradigm language, meaning that it is procedural as well as object oriented. Being a multi-paradigm, we do not have to create objects for everything here nor do we have to use processes for everything. Almost all types of programs are a mixture of procedure and object oriented code based on a specific type of problem. It is strongly encouraged throughout the community to look at your use case, and to adopt a procedural or object oriented style.

Go is a garbage collected language, which means that, when you are working with Go, you will not need to manage your memory. This was a decision taken to make the language stronger. Go also focuses on rapid compilation, so one concern with some languages ​​that they have longer compile time which was very hard for engineers to stay in a nice productive flow, as they write tests and rapidly compile the application and make sure that things are working.

Single binary output is another feature of the language, which does not mean that it contains all the assets of an application, If you are building a web application, you can have additional HTML, CSS, JavaScript files, but all Go code is compressed into a binary. The reason behind this is simple deployment. But you can also write a separate library and allow an application to use it and discover functionality at run-time. But the primary use case for Go is to compile it into a single binary.

Go has built many applications such as Docker, Kubernetes. Speaking in terms of companies, Uber, Facebook, Netflix Digital Ocean and Google are regularly using it in their production environments.

Keeping it small and sweet lets end the lesson here, I shall come up with language specifications and advanced concepts in coming posts. Feedback appreciated!

Best Regards,
Dave