THE 2010S

Go

In 2007, at Google, engineers faced a problem that had become commonplace in the company. Existing languages no longer met the needs of modern applications: intensive networking, multicore processors, distributed environments. Rob Pike, one of the designers of the future Go language, summed up this technical impasse with some frustration. The industry had numerous tools, certainly, but none truly fit the bill.

Cloud computing had just emerged from infancy, service-oriented architecture was finding its footing in large organizations, and continuous integration was beginning to transform development practices. The computing landscape already resembled today’s. Go was not born in a laboratory cut off from the real world; it emerged at the heart of the constraints faced by development teams.

One striking detail in this story: among Go’s creators is Ken Thompson, who had designed UNIX and the C language decades earlier. This lineage is far from anecdotal. It traces a direct line between two eras of computing, with Go embodying a contemporary reinterpretation of the principles that guided C’s creation.

Java, which appeared in 1991, had established itself through its portability. But its proprietary status until 2006 created complications: the 2012 Oracle lawsuit against Google attests to this. As for C, born in 1972 to rewrite UNIX, it had spread for lack of alternatives; it was one of the few fast and cross-platform languages accessible to early programmers. Go, on the other hand, was designed from the outset for current needs.

The language stands out through its thoughtful design. Compilation times remain short, machine code is generated directly, strong typing imposes a discipline that makes programs readable and reliable. Comprehensive and free documentation accompanies the whole. In a development team, often large and with varied skills, these characteristics take on another dimension: collaboration becomes more fluid, build times are reduced, existing code is more easily deciphered.

With automatic memory management, developers no longer need to explicitly program memory allocation and deallocation, unlike in C or C++. This automation improves productivity, certainly, but above all it strengthens security by reducing vulnerabilities related to memory handling errors.

Native concurrency support represents perhaps the most significant innovation. Applications can execute multiple tasks simultaneously rather than sequentially, thus exploiting multicore processors. For applications distributed across multiple servers or microservice architectures, this functionality proves invaluable.

Deploying Go applications remains simple. Unlike Java, which requires local interpreters or virtual machines, Go programs compile into standalone binaries. The Get tool downloads and installs an application via a single command. This approach perfectly matches DevOps practices that prioritize consistency in development pipelines and simplicity of updates.

In the field of data science, Go demonstrates its versatility. It easily integrates algorithms written in Python into microservice applications. The resulting performance often eliminates the need for optimization in C or C++, low-level languages known for their complexity.

The developer community around Go has continued to grow. In 2016, more than 700 programmers contributed to its development. The TIOBE programming language index illustrates this rise: Go moved from 55th to 10th place between 2016 and 2017.

Many open source platforms have adopted Go. Cloud Foundry chose it for components like gorouter, which manages connectivity for microservice applications. Docker, which transformed application deployment, is written entirely in this language. Docker developers opted for Go in 2013, attracted by its ease of installation, testing, and adoption. InfluxDB, a high-performance storage system, leverages the language’s efficiency and reliability.

Leading technology companies have integrated Go into their infrastructures. Dropbox migrated a significant portion of its infrastructure from Python to Go to improve its scalability. Netflix uses Go to create microservices requiring performance and scalability. Uber developed its real-time geolocation service in Go, which displays the best performance among all its services.

Go’s success is explained by its alignment with modern software development needs. Its design takes into account cloud environments, distributed processing, and microservice architectures. Ease of use, combined with high performance and facilitated maintenance, makes it a relevant choice for companies modernizing their applications.

Go’s emergence marks the evolution of programming languages toward solutions adapted to cloud computing and distributed architectures. Contemporary software development needs have led to rethinking programming tools, creating a language that meets the requirements of current computing while maintaining an elegant and pragmatic approach.