06. About Go

A Brief introduction to Go

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. - Golang.org

Go is best described as "C" for 21st century. Go was developed in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson at Google and open sourced in 2009. Go is general purpose programming language that can be at various places.

Go has no implicit numeric conversions, no constructors or destructors, no operator overloading, no default parameter values, no inheritance, no generics, no exceptions, no macros, no function annotations, and no thread-local storage. - The Go Programming Language by Brian W. Kernighan, Alan A. A. Donovan

So what is Go?

  • Go is general purpose programming language.

  • Go is compiled language.

  • Go is more type safe than C,C++.

  • Go is strongly typed language.

  • Go has static type checking.

  • Go needs manifest typing. Compiler has to know each type at compile time.

  • Go compiler can also perform type inference in many cases.

  • Go has duck typing like features like interfaces.

  • Overall Go is extremely simple, expressive and powerful.

Why Go was created?

Go is created to bridge gap between safety and performance. Languages like C, C++ are very performant, but at the same time, they are not safe. On other hand languages like Ruby, Python are safer, but are slower. Go sits at a sweet spot where, Go is fast enough to build platforms, at the same time provides safety like Ruby, Python.

What Problems Go tries to solve?

  • slow builds

  • uncontrolled dependencies

  • each programmer using a different subset of the language

  • poor program understanding (code hard to read, poorly documented, and so on)

  • duplication of effort

  • cost of updates

  • version skew

  • difficulty of writing automatic tools

  • cross-language builds

Who is using Go ?

In a nutshell, we wanted a language with the safety and performance of statically compiled languages such as C++ and Java, but the lightness and fun of dynamically typed interpreted languages such as Python - Rob Pike