In November 2021, Go celebrated its 12th birthday. Go has come a long way since its beginning. Within a decade or so, this programming language has made its place among the top programming languages because of its simple and easy-to-learn programming constructs + its various modern programming features like concurrency, garbage collection, efficient memory management, robust compilation, faster build time, and cross-platform development capabilities. This tutorial is for you if you want to learn and know how it started.
History of Go Programming Language
Over a decade ago, Robert Griesemer, Rob Pike, and Ken Thompson began to sketch concepts and goals for developing a new programming language that is easy, statically typed, and similar to C. They all designed it at Google in 2007 to enhance programming productivity in an era where multi-core systems are abundant. Also, networked machines and large codebases can utilize more processing power while executing code was also the focus of this language. The creators wanted to manage the criticism other languages face when developers use those old languages at Google. Again, while developing the Go language, the creators keep in mind the usefulness and other characteristics earlier programming languages provide. The creators got motivated by the shared dislikes other engineers and developers showed towards C++. Go language perfectly solves and addresses these problems.
Two years later, in 2009, making it a fully open-source BSD-style license, Go was released for both Linux and Mac OS platforms. The three creators released Go to the public as an open-source project. Later, the first Windows-portable of Go language got announced on the 22nd of November of the same year. Go 1.0 (the first market-ready version) got unleashed in March 2012. Since 2012, Go has grown from version 1.1 to 1.18 (2022), and the release of Go version 2.0 is underway! Because of its multi-core utilization feature, many developers started using it to develop cross-platform enterprise apps, cloud-native apps, web assemblies, network-based programs, server-side programming, etc. Its adoption and growth went exponentially, & soon it came into the leaderboard of top programming languages.
In November 2016, the Go and Go Mono fonts go introduced by font type designers Kris Holmes and Charles Bigelow, mainly for using it in the Go project. Go is a humanist sans-serif that resembles Lucida Grande, and Go Mono is monospaced by style.
Criticisms and Wonders Go Bring to the Programming World
Since Go is open-source and the community of contributors and developers is also growing, some of them find that this modern programming language is lacking in general programming. This language immediately drew considerable criticism because it lacked the support for generic programming in its initial versions. The designers showed concern towards this criticism and planned to bring comprehensive generic programming. They noted that built-in functions were, in fact, type-generic but get treated in exceptional cases. Later, all versions of Go support generic programming through the use of an empty interface type.
Again, in August 2018, the Go's principal contributors released draft designs proposing to introduce and make better generic programming & error handling mechanisms. In that released draft, he asked the users to submit feedback for introducing these features. However, the proposal for error handling ultimately got abandoned. In 2020, a new draft design document got published that would include the essential syntaxes for declaring generic functionalities in the program & its associated types. This draft came with a code translation tool, go2go, allowing Go users to try the new syntax with the generics-enabled version of the online Go Playground (online compiler).
Various Versions of GO
Release | Status | Release date | Maintenance end |
---|---|---|---|
go1 | No updates provided | 2012-03-28 | 2013-12-01 |
go1.1 | No updates provided | 2013-05-13 | 2014-06-18 |
go1.2 | No updates provided | 2013-12-01 | 2014-12-10 |
go1.3 | No updates provided | 2014-06-18 | 2015-08-19 |
go1.4 | No updates provided | 2014-12-10 | 2016-02-17 |
go1.5 | No updates provided | 2015-08-19 | 2016-08-15 |
go1.6 | No updates provided | 2016-02-17 | 2017-02-16 |
go1.7 | No updates provided | 2016-08-15 | 2017-08-24 |
go1.8 | No updates provided | 2017-02-16 | 2018-02-16 |
go1.9 | No updates provided | 2017-08-24 | 2018-08-24 |
go1.10 | No updates provided | 2018-02-16 | 2019-02-25 |
go1.11 | No updates provided | 2018-08-24 | 2019-09-03 |
go1.12 | No updates provided | 2019-02-25 | 2020-02-25 |
go1.13 | No updates provided | 2019-09-03 | 2020-08-11 |
go1.14 | No updates provided | 2020-02-25 | 2021-02-16 |
go1.15 | No updates provided | 2020-08-11 | 2021-08-16 |
go1.16 | No updates provided | 2021-02-16 | 2022-03-15 |
go1.17 | Maintenance phase | 2021-08-16 | Q3 2022 |
go1.18 | Currently in use | 2022-03-15 | Q1 2023 |
go1.19 | Planned to release | Q3 2022 | Q3 2023 |
go2.0 | Development stage | Q3 2024 | Q3 2025 |