Go language is 11 years old this year, where to go, and what is the current situation?

Don't say don't know, just talk about the next jump. The Go language has been open source for the 11th anniversary, and I feel like singing along the way. Release History (organized by polarisxu) is as follows:

  • On March 16, 2011, the first stable version of the Go language r56 was released;

  • On March 28, 2012, the first official version of the Go language, Go1, was released, and 1.x compatibility was promised;

  • On May 13, 2013, the official version of Go1.1 was released.

  • On December 1, 2013, Go1.2 was officially released;

  • On June 18, 2014, Go1.3 was officially released;

  • On December 10, 2014, Go1.4 was officially released;

  • On August 19, 2015, Go1.5 was officially released. This version implements bootstrapping, that is, removes the C code and uses Go to develop the Go language;

  • On February 17, 2016, Go1.6 was officially released;

  • On August 15, 2016, Go1.7 was officially released; the context package was introduced;

  • On February 17, 2017, Go1.8 was officially released;

  • On August 24, 2017, Go1.9 was officially released; aliases were introduced;

  • On February 16, 2018, Go1.10 was officially released;

  • On August 25, 2018, Go1.11 was officially released. Began to strongly support Go modules;

  • On March 1, 2019, Go1.12 was officially released;

  • On September 3, 2019, Go1.13 was officially released;

  • On February 25, 2020, Go1.14 was officially released; goroutine supports asynchronous preemptive scheduling;

  • On August 11, 2020, Go1.15 was officially released;

  • In February 2021, Go1.16 is expected to be officially released; it will include a new file system interface and support for static file embedding during construction, linker rewriting, and Go modules are enabled by default and officially available for Apple Silicon (GOARCH=arm64) Mac Support.

Look now

The current Go language has set off a wave of craze in China, and the speculation is very hot. A large number of paid columns/videos related to the Go language have appeared on major platforms such as Geek Time, Lagou Education, Nuggets Booklet, and Mukenet.

At the actual work level, Bytedance, Tencent's sideways to the Go language, and other major first- and second-tier factories have appeared a lot of Go positions, which also indicates that the current has reached a better outlet.

At the open source project level, a large number of cloud-native related components such as Kubernetes, Etcd, Prometheus, Docker, etc. are all developed in the Go language. Knowing a Go language makes troubleshooting easier.

At the level of enterprise development, a large number of developers in other languages ​​have transformed to the Go language. In enterprise software development, Go language is used for new projects, and old projects are retained, forming a strangling model that maintains the new and old systems at the same time, and then gradually migrates. :

Strangler mode

In the interview, PHP and C++ are more common languages, which will form a Go+PHP (new + old system) situation in the enterprise, or Go adjusts the operation mode of CGO. This also benefits from the ease of use and certain glue characteristics of the Go language.

At the level of training institutions, major institutions have somewhat attacked the Go language, but the current Go language is mostly dominated by middle and senior talents, that is, software development practitioners with experience in other languages. Therefore, the market situation of training institutions is relatively poor.

At the social recruitment and job level, in a narrow sense, the basic situation is still consistent with the basic situation of "Take You to Know the Market of Golang" I wrote in 2018:

2018 market analysis

The following is the geographical distribution of the "2020 China Go Developer Survey Report" collected by GoCN:

2020 China Go Developer Survey Report

The most popular areas of Go language are still: Beijing, Shanghai, Shenzhen, the main body is concentrated in the first-tier cities, and the opportunities here are the most.

Look at the data: TIOBE

Judging from TIOBE's programming language rankings, the overall popularity of the Go language is not particularly high (compared with the old language), but as a programming language, it has performed very well in just 11 years:

TIOBE ranking

At the same time, it is often said in the industry that the Go language will kill PHP, C++, Java, etc. It is not realistic in the short term at present, and the official has no plans in this regard, because it is good to choose the right language for the right scenario.

TIOBE reminded that this month’s ranking is 13th, and the highest ranking appears in May 2020. At 10th, it has basically stabilized near this figure recently. At least in recent years, it will not be able to kill the big buddies.

Looking to the future

Go1 has complied with the Go1 compatibility promise as always, which brings a boost to many companies that are using the Go language. But it also brings some "troubles" to the Go language. That is, changes with destructive changes cannot be implemented in Go1.

Therefore, in order to solve some "problems", we also want to achieve better features. In 2018, the Go2 plan was released. For details, see Go 2, here we come!, which contains a large number of features.

Judging from the current basic arguments and the actual situation, compatible implementations will be implemented in Go1. For example, one of the most anticipated functions "generics" is expected to be released in Go1.17 at the earliest. Example:

// Print prints the elements of any slice.
// Print has a type parameter T and has a single (non-type)
// parameter s which is a slice of that type parameter.
func Print[T any](s []T) {
 // same as above
}

It released the latest design draft in late June. If you have further requirements for generics, you can pay attention to design/go2draft-type-parameters, and some incompatible modifications will go to Go2 if they cannot be implemented directly after the exact evaluation. Go to:

Milestones

Go2 believe that when released, certainly not go run xxx, it is estimated will change command set, to show distinction.

to sum up

At the age of 11, the Go language has become popular in China. An operator recently contacted the Go language as a language "prepared to occupy half of the language of the future". Readers who are still on the sidelines can consider starting with a wave of bonuses.

But the "success" at this stage does not mean that the follow-up will continue to be strong, and it is inseparable from all developers' efforts to open source in the community.

TIOBE Index

Let's think about two questions together:

  • Why do you like Go language? What are his shortcomings?

  • If Go language wants to continue to occupy more markets, in what areas does it need to work?

What is your answer? Tell everyone in the comment area!


Share Go language, microservice architecture and strange system design

???? Long press to follow fried fish and swim in the ocean of knowledge

Guess you like

Origin blog.csdn.net/EDDYCJY/article/details/109685365