Over the past decade, Go has become one of the most popular programming languages in the world and one of the most loved by its community of users. So in celebration of Go’s tenth birthday, we’re taking a look back at its origins
In 2007, Ken Thompson, Rob Pike, and Robert Griesemer began work on a new programming language at Google. It was conceived as an alternative to C++ and Java, languages that they had come to feel were bloated and slow to compile. The project was greenlighted by Google management after three months of continuous prototyping in December that year.
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Go is expressive, concise, clean, and efficient.
Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction.
Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
Go is descended from C but has a very different design. In fact, the designers have described Go as having "no bells and whistles". Its modest character makes Go an ideal language for doing practical, real world programming.
Go is not a revolutionary new programming language. Instead it takes the good aspects of some old ones and brings them together with everything modern software development knows about making code maintainable, scalable, and efficient.
We have been asked this question many times, from friends, conference attendees, and even strangers. The answer has two parts:
- Go is a very powerful language.
It has helped us build many projects reliably and efficiently, from backend services to distributed systems to mobile services. The simple, clear syntax and powerful standard library make it easy to express a solution without having to rely on external libraries (although they are easy to use when you need them).
- Go is a very practical language.
It's especially suited to projects that are large enough to need organization but small enough to be completed by a small team. We like the "just enough" philosophy; Go's features are geared toward practicality, not theoretical purity or saving keystrokes.
The go community is amazing. There is such a strong sense of camaraderie and shared belief in the value of the language.