Go (programming language)

Go, also known as golang or Google Go, is an open source programming language created by engineers of the technology company Google. Go is a systems programming language, the class of programming languages used for writing operating systems, game engines, and other systems, as opposed to languages writing application software run on those systems. Google’s development of Go addressed some of the issues engineers had with leading systems programming languages such as C, while attempting to retain the elements that make such languages valuable.

113931291-115592.jpg

Overview

Go was developed by Robert Griesemer, Rob Pike, and Ken Thompson in 2007 and later announced by Google in 2009 once it was decided to implement the language. It is one of several languages influenced by communicating sequential processes (CSP), a language first described in 1978 for handling patterns of interaction in concurrent systems, and C, a programming language developed in the early 1970s for the Unix operating system. Like C, Go was designed for efficiency. It improves on C (from the perspective of the implementations the design team had in mind) by improving memory safety in most areas, facilitating a functional programming style, and being overall smaller and more lightweight by eschewing those features in C that are the most cumbersome and complex (including pointer arithmetic and generic programming).

Go was intended to have many of the features of dynamic languages such as JavaScript and Python, specifically avoiding the need for repetition and aiming for readability. It also needed to support networking and multiprocessing. At the same time, it was a language clearly conceived in the tradition of C and C++ since, if the experiment went well, it was intended as a potential C replacement.

Go is used in similar circumstances as the Erlang and occam programming languages, but the three languages handle the semantics of interprocess communication in different ways. For instance, Go and occam cannot read messages from channel out of order, while Erlang can use matching to read events from the message queue out of order. While Erlang and occam closely resemble CSP in semantics and syntax, Go differs in syntax and is only somewhat similar in semantics.

The year it was introduced, Go was named programming language of the year by coding standards organization TIOBE for its rapid increase in popularity. Since its introduction, Go has been implemented not only by Google but also by a number of companies, including cloud storage provider Dropbox, video-streaming service Netflix, online audio platform SoundCloud, and ridesharing service Uber. Some specific programs written in Go include the CoreOS open-source operating system; Docker, a Linux system for automating the deployment of applications inside software containers; Kubernetes, a cross-platform container cluster manager Google developed for the Cloud Native Computing Foundation; and Juju, an orchestration management tool for Ubuntu Linux. Juju (then called Ensemble) was originally written in Python, marking one of several notable occasions in which something written in a dynamic programming language was migrated to Go.

Upgrades have been made to the programming language throughout the years. In 2022, generics were added to Go. This enables users to write code that is independent of the types being used in the program. They can type parameters for function and type; define interface types as sets of types, and type inference, which means users can omit type arguments.

An earlier programming language, Go!, is unrelated.

Bibliography

Chang, Sau Sheong. Go Web Programming. Shelter Island: Manning, 2016. Print.

Donovan, Alan A. A., and Brian W. Kernighan. The Go Programming Language. New York: Addison-Wesley, 2015. Print.

Doxsey, Caleb. Introducing Go: Build Reliable, Scalable Programs. Sebastopol: O’Reilly, 2016. Print.

Finnegan, Matthew. "Google Go: Why Google’s Programming Language Can Rival Java in the Enterprise." TechWorld. IDG UK, 25 Sept. 2015. Web. 19 Aug. 2016.

Golang.org. Go Programming Language, 2016. Web. 19 Aug. 2016.

Goriunova, Olga. Fun and Software: Exploring Pleasure, Paradox, and Pain in Computing. New York: Bloomsbury Academic, 2014. Print.

Griesemer, Robert and Ian Lance Taylor. "An Introduction to Generics." The Go Blog, 22 Mar. 2022, go.dev/blog/intro-generics. Accessed 15 Nov. 2024.

Kennedy, William, Brian Ketelsen, and Erik St. Martin. Go in Action. Shelter Island: Manning, 2016. Print.

Kincaid, Jason. "Google’s Go: A New Programming Language That’s Python Meets C++." TechCrunch. AOL, 10 Nov. 2009. Web. 19 Aug. 2016.