What Made GoLang So Popular? The Language’s Creators Look Back – The New Stack

What Made GoLang So Popular? The Language’s Creators Look Back – The New Stack


Since its open source in 2009, the Go programming language has grown steadily in popularity. Now the five Google software engineers behind their original creation are taking a look at what fed that growth.

Writing in ACM Communications, the five original creators of Go point out that even his early work “benefited greatly from the advice and help of many Google colleagues.” And the second sentence of the newspaper emphasizes that it is now a public project “with contributions from thousands of people and dozens of companies.”

With the support of a strong community, Go has achieved undeniable and widespread popularity. In the latest Tiobe index, an estimate of the world’s most popular programming languages, Go ranks 14th.

Docker and Kubernetes are writing to Go, the paper notes, adding that language is also “the basis of the critical infrastructure of all major cloud providers and is the implementation of most projects hosted on the Cloud Native Computing Foundation. “.

But a more interesting question is Because Go became so popular …

The paper argues that it was Go’s “development-focused philosophy” that helped its community thrive, and then it credits that community, and the technology it created, to making Go an “important component of ‘modern cloud computing environment’.

In short, looking back over the past 13 years, the creators of Go believe that language has been successful in training its approach to the “global environment” in which software projects are designed. “Go’s approach is to treat language features as no more important than environmental ones.”

The authors of this article were Rus CoxRobert Griesemer, Rob PikeIan Lance Taylor and Ken Thompson.

The first days

It didn’t hurt that Go came from Google, just over 10 years after the launch of the search engine company in 1998. And Go’s compact tracks were also easier to deploy because (unlike Java) did not need a standalone runtime environment to run.

Other language features also helped make it attractive, as Go was one of the languages ​​that included a “garbage collection” feature to automatically free memory that was no longer used by variables. And so, the paper notes, Go took advantage of the new multi-core processors, running their garbage collection in a dedicated kernel to reduce the impact on latency.

This type of concurrency was provided as a basic part of the language, not as an optional independent library. In fact, this explains much of why Go was built the way it was. A section of the document entitled “Origins” describes how Go grew from the experiences of Google, with a large multilingual code base shared by some 4,000 active developers.

His daily experience showed the need for a better way to process loads to scale, harnessing the power of new multi-core chips. Looking back, the creators of the language write that Go “is our answer to the question of how a language designed to meet these challenges could be.” Go was specifically designed to provide excellent support for concurrency and parallelism, which means that not only could Go process various tasks efficiently, but it could also be executing multiple tasks at once.

In the world before Go, engineers had been stuck with awkward syntax and “stacks of large, fixed-sized threads,” the paper argues, and threads that allowed concurrence were unpopular because they were difficult to create. use and manage. . A footnote even refers to a 1995 article by the creator of the TCl writing language, John Ousterhout, entitled “Why Threads Are a Bad Idea (for Most Purposes).”

“Resolving this tension was one of the main motivations for creating Go,” they write, and then called it “the main unusual property of language …”

Beyond language design

The paper also acknowledges that Go’s popularity today is due in part to the fact that the broader technology industry now routinely uses cloud service providers and the scalable production environments they allow (which Go was designed to address). There are other different advantages.

The paper later notes that Go “eliminates undefined behaviors that cause so many problems in C and C ++ programs.” (For example, Go simply throws a runtime exception and stops a program from running if the code attempts something risky, such as dereferencing a null pointer or using an index beyond the boundaries of an array or portion ).

But the creators of Go attribute the popularity of Go to something else. They emphasize that “more significant was the initial work that laid the groundwork for packaging, dependencies, compilation testing, deployment, and other day-to-day tasks in the world of software development, aspects that are not usually more important in language design “. This attracted developers who “planted” their ecosystem with useful packages. And while the original version only supported Linux and MacOS X, this enthusiastic community had soon created versions of Windows for the Go compiler and libraries, as well as bringing them to other operating systems.

The paper then argues that the focus on developers permeates language development. For example, Go’s high-quality encryption libraries (including support for SSL and TLS secure communications protocols) are observed from the beginning. And the standard Go library also includes an integrated HTTPS client and server to interact with other online systems.

But what is most significant is the way forward nanses their libraries. The Go compiler was designed to carefully import only the libraries needed to be included in its binaries, which prevented behavior seen in other languages ​​where entire libraries were imported, just to make sure that including the necessary functionality.

And with developers in mind, Go makes it easy to import external libraries from other domains (along with a way to automatically check for supported versions). “As a language for distributed computing, there is no central server in Go where Go packages should be published,” the document states. (Although there is an audience now mirror of available Go packages plus a cryptographically signed record with the expected content.)

Go also has support in standard distribution for optimization techniques such as program profiling, as well as support for test features such as fuzzing. The document notes that Go even has a convention for the layout of the code. (And those of Go gofmt The tool analyzes the source code in this standardized design.) This and other built-in tools helped make it easy to create everything from IDE connectors and debuggers to frames and creation automators. The creators of Go argue that its language was specifically designed to encourage tool creation and automation, and “As a result, the Go world has a rich, ever-expanding, interoperable set of tools.”

Thus, language was only part of its appeal, their article argues. “The whole story has to involve the whole Go environment: libraries, tools, conventions, and the general approach to software engineering.”

Stay constant

Another section of his paper also promotes language coherence. The creators of Go acknowledge that in its early years “we modified and adjusted it with each weekly release. Users often had to change their programs when upgrading to a new version of Go.”

But since 2012 (with the official release of version 1 of Go), we have publicly committed to making only changes compatible with versions prior to the standard language and library, so that programs continue to run without changes when be compiled with the newest versions of Go “.

The result? Since then, the language “has been almost frozen,” the document explains, but with spectacular growth in tools. Specifically, these are “better compilers, more powerful compilation and testing tools, and improved dependency management, not to mention a large collection of open source tools that support Go.” The paper argues that this helped foster the creation of educational materials and attracted users and “a thriving third-party package ecosystem.”

At one point, the paper even argues that Go’s carefully balanced feature set prevented the language developers from over-extending it. But the document closes by looking at the exception to this rule, when Go added an important new feature. Just two months ago, Go added parametric polymorphism, which “adapted well to the rest of Go …”

“Making such a big language change while staying true to the principles of consistency, completeness and community will be severe proof of this approach.”

The creators of Go recognize that a community is needed to maintain a programming language. And maybe we need a community to build one. The paper ends with a thank you to your Google colleagues for the advice and support in the early days of Go, a group that foreshadows the flood of community support to come. “Since its public release, Go has grown and improved thanks to an expanded Go team on Google along with a large set of open source contributors. Go is now the work of a literal cast of thousands, too many to list them here.

“We are grateful to everyone who helped make Go what it is today.”


The New Stack is a wholly owned subsidiary of Insight Partners, an investor in the following companies mentioned in this article: Docker.





Source link

Related post

EDUCAUSE 2022: How Data Collection Can Improve Student and Faculty IT Support

EDUCAUSE 2022: How Data Collection Can Improve Student and…

At Indiana University, Gladdin said, to make life easier for students and faculty, they implemented a course template for the Canvas…
UGC, AICTE warn students against online PhD programmes offered by EdTech platforms | Latest News India

UGC, AICTE warn students against online PhD programmes offered…

The University Grants Commission (UGC) and the All India Council for Technical Education (AICTE) on Friday issued a joint advisory against…
UGC, AICTE warn students against online PhD programmes offered by EdTech platforms | Latest News India

UGC, AICTE warn students against online PhD programmes offered…

The University Grants Commission (UGC) and the All India Council for Technical Education (AICTE) on Friday issued a joint advisory against…

Leave a Reply

Your email address will not be published.