* * *

Yes!!! You read it right. Go is the future of all programming paradigms. Go was created as a future-proof language to meet the challenges of the present and anticipate challenges of the future. One famous Go programmer even quoted that “If I had to describe Go with one word it’d be ‘sensible’.”

 

History of GO 

Go, also called Golang was designed and developed by Google engineers Robert Griesemer, Rob Pike, and Ken Thompson to solve the problem faced by them in using C++.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.

Go came onboard in November 2012 and is widely used at Google and  many other companies. Below is the link to the list of companies where Golang is used as a main programming language. 

GoUsers

It is currently used worldwide and its latest stable version is Go1.11 .

Need of Parallelism 

As we all know Moore’s law is failing. We are reducing sizes of chips and increasing number of transistors. But this has its own limitations because at such level, quantum properties star to apply which puts more cost.

Manufactures now a days are using more cores and hyperthreading concept is introduced, but this also has its own limitations.  Processors are costly too.

So, if we cannot rely on the hardware improvements, the only way to go, is more efficient software to increase the performance. But sadly, modern programming language are not much efficient.

So, what is Golang?

Go, often styled Golang for easier searching, is a programming language guided by simplicity. It is:

  1. Compiled

  2. Concurrent

  3. Statically-typed

  4. Garbage-collected

  5. Efficient

  6. Scalable

  7. Readable

  8. Fast

  9. Open-source

Features of Go 

1. Awesome letter of Credence  

Since it is developed and financed by Google so no one can claim on its credibility. It was developed as a language to meet future requirements.

2.   Open Source 

For a language to be continuously evolving it must be freely accessible and Go contains this feature. All Gophers ( Golang Developers) are continuously detecting and eliminating problems of Go and thus helping it to become better, cleaner and more efficient.

3. Quick 

It does not contain OOPS concepts like inheritance or classes. It contain simple structures, and is completely based on functions. Also it  gives output very quickly.

4. Concurrent 

The most important feature for which GO is used widely is Concurrency. Golang is concurrent and thus allows many tasks to run simultaneously and effectively. And with the help of Goroutines and channels, writing concurrent programs is much easier.

5. Efficient Garbage Collection

Due to this feature it recollects garbage memory automatically and thus helps in executing concurrent programs efficiently by allocating them freed memory.

6. Statically Typed 

Since it is compiled and statistically typed so developers have to be more accurate and attentive. This leads to a neater and safer code.
 

What makes it so Fast ?

Because it is

1. Hybrid 

It is a combo of ease of programming of interpreted dynamically typed language with safety of statically typed compiled language. Thus code can be written very fast but also errors are checked and corrected at compile time only.

2. Compile Time Efficiency 

Golang does not re-read header files and slow down compilation process, like other languages, instead it works across all the modules and thus cuts that extra time. So its compilation time is much lower than other languages. This is further improving version by version like Go 1.8 launched with an improvement of 15% compilation time than it predecessors.  

3. Efficient Treatment and Storage of Values 

In GO

Var name int32= 2018

The size of name variable is 4 bytes whereas  if you write the same in python

>>>name= 2018
>>>sizeof(name)

It will give 24 bytes as size of name, six times the size in Golang and thus makes it poor performer than GO.

4. Better Cache Performance 

Go lets us create compact data structures, inlines functions automatically thus reducing compile time overhead thereby helping in avoiding unnecessary redirection thus utilizing cache better.

5. Contains Goroutines, Channels 

Due to this it is used almost in every company now a days for concurrent programming. Goroutines are similar to what we call thread in Java.

Disadvantages of Go 

  1. No code reusability ( inheritance).

  2. Less flexible than dynamically typed languages.

  3. Lack of 3rd party modules.

Overall Golang is the Golden Mean because it is fast and efficient than many languages including C, C++, Python or Ruby.

How to learn Go 

The Tour of GO is the best resource to start learning Go. It contain all features ,syntax information of go. I recommend every newbie to take a tour of Go. Other than these the blog by Dave Cheney contains complete information about resources and frameworks in Golang. Do Visit this blog some time.

And lastly, the best way to master anything is to practice. Learn, Code and Repeat!

Happy Learning!