Go the way to Go
Tags: go, functional, productivity, performance
Published: 2022-03-16 20:04:05

Well, well well, today we need to take a small teleportation to the future of software development. But before let's first look at the background.
- In 1972, a very wise guy called Dennis Ritchie develops the first version of C at Bell Labs.
- In 1979, another smart brain Bjarne Stroustrup enhances C to add more object oriented fetures such as classes also at Bell labs. C++ was made open for everyone to use in 1985.
- In 1991, we see the birth of the worlds most powerful language(as of the present), python, by Guido Van Rossum.
- In 1994, a language which was ignited to truck who viewed Rasmus Lerdolf's resume, called Personal Home Page(PHP), that was later released for use by others in 1995, which we may call its birth year.
- In the same year, 1995, we see another smart brain named James Gosling developed Java at Sun Microsystems though rumors say that it was ignited in 1991 but let the world to know about it in 1995. 
- Also in the same year, 1995, we also see the birth of the world's second best programming language, JavaScript, developed by Brendan Eich, currently may be the most popular programming language!.

... the list is endless.

**But here is the catch**
The first multi-core processor was developed by IBM, in 2001, [more details can be read here](https://www.ibm.com/ibm/history/ibm100/us/en/icons/power4/)  and at this time the only latest programming language was C# which was created in 2000, one year before the birth of multi-core processor architecture.

Therefore, with the new architecture in place, languages started putting measures to use this great feature, but that was not their nature. We see JavaScript introducing promises for asynchronous performance, python, C, Java, C++, C# do the same so as to support the multiple events since the number of threads to work on tasks were increasing. But these were all added features and of these programming languages had this by default. 

**To our rescue!**
Robert Griesemer, Rob Pike, and Ken Thompson in 2012(when it was made public), 10 years back from the time of writing this article, (but developed in 2007), developed a language that combines all the good parts of the dear oldies, Java, Python, JS, C++, C#, C and ignores the worst parts they have, at Google. The language gets its name from (you guessed it right), Google as that's where it was developed from. Various features that you need to install as libraries, packages ..., will be implemented by default in Go. 

Well, right now, the transition is not instant, but the future will dictate us to fully move to Go as most of the biggest companies have already changed their performance sensitive programs to Go. 

**Why Go?**

- Go is popular for cloud-based or server-side applications. 
- DevOps and site reliability automation are also popular ways to use Go. 
- Many command-line tools are written in Go.
- Go is used in the world of artificial intelligence and data science.
- Some use Go from micro-controller programming, robotics, and games.

However, Go really shines the most when it comes to infrastructure. Some of the most popular infrastructure tools today are written in Go — such as Kubernetes, Docker, and Prometheus.
Generally, wherever you need a lot of performance and concurrency, Go has got you covered. 

Speed comparison between Go and Java.

Go results:

```
Factorial   Time To calculate factorial
10000       0.03 seconds
50000       0.41 seconds
100000      2.252 seconds
500000      68.961 seconds
1000000     224.135 seconds
```

Java results:

```
Factorial   Time To calculate factorial
10000       0.112 seconds
50000       1.185 seconds
100000      2.252 seconds
500000      89.500 seconds
1000000     385.868 seconds
```

That's a small sample test, but you can explore more with other languages and see how Golang beats the rest in performance.

Note: It is only in Golang where you do not even think about async and sync as Go by default is the only asynchronous programming language ever made.

Whereas python, C#, Java, C ..., are still proving to be our present, after teleporting to the future, I found Go being widely used more than anything else!! So start learning it today from [here](https://go.dev/doc/)