2 min read
Golang is an open-source, compiled, and statically typed programming language designed by Google.
Or we can say, designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. Why ' at' Google, not ' by' Google? I will tell you about that later in the blog,
But what is statically typed 🤔 -
Statically-typed language is a language where variable types are known at the compile time like C++, Java, or C.
So, Why Golang... Why Google needed a new language when there are other compiled and statically typed languages...
Google has two massive problems. One of them is compile time.
Google builds things that are so ridiculously huge that it takes 5 hours to rebuild chrome from scratch even on a big fat i7 system. There were whole server farms dedicated to recompiling. The pain of compile time on these builds is so great that Google has invented build tools that separate the dependency analysis and compiling, just to gain a few percent in build time using conventional languages.
They felt that they could do better and should, support their systems. Golang is designed for quick compilation without the need for dependency checking, so it addresses the building pain.
The other problem is string processing.
Google reads and analyses a lot of web pages, which are text files. They do a lot of string manipulation, and it needs to be efficient. Google built a rich library of string functions into Golang, Garbage collecting makes strings in Golang simple to think about, and efficient in ways some other string libraries are not.
As a language design, Golang is not unreasonable. It does what it says on the tin. It’s not in any way innovative, but certainly well designed for a very specific aim.
It's not the end of the blog, coming on Golang's invention. It was not actually Google who invented Golang, but yes they developed it by providing the resources to the team. Golang was probably going to happen wherever Thompson and Pike were, they just happened to have been snapped up by Google.
Rob Pike had already developed a sort of precursor to Golang at Bell Labs for Inferno called Limbo, which was designed to be a “scripting” language to connect components.
Ken Thompson designed and implemented Unix (also at Bell Labs) as well as B, the predecessor to C (created to make utilities for Unix).
In my opinion, Golang was most likely going to happen with or without Google.