Why do you need a new language
In the last decade, C/C++ has not developed very well in computing, and no new system programming language has emerged. The degree of development and system efficiency are not compatible in many cases. Either efficient but inefficient development and compilation, such as C++; Or perform inefficiently, but have efficient compilations, such as. NET, Java; There was a need for a programming language with more efficient execution speed, compilation speed, and development speed, and Go was born.
In traditional languages like c++, people spend too much time learning how to use the language rather than how to better express the ideas of the writer, and compilation takes too long, too long for the compile-compile-run chain. Dynamic languages such as Python do not have strong typing constraints, so many problems need to be found at run time. Such low-level errors should be left to the compiler to find.
-
The human cost is getting higher
-
Machines are getting cheaper
-
The performance of the machine is getting better and better
-
Achieve a balance between development efficiency and running speed
Before GO, neither assembly languages nor dynamic scripting languages could be both efficient in execution and efficient in development.
Developing efficiency: PHP > Java > C/C++
20 percent of Google engineers’ time
Google’s “20 per cent time” approach allows engineers to spend 20 per cent of their time working on projects they like. Google Now, Google News, and traffic information on Google Maps are all products of 20 percent of the time.
Go also started out as a product of 20% of the time.
Iii. Founder
The three authors of Go are: Rob Pike. Parker), Ken Thompson. Thompson) and Robert Griesemer (Robert. Gretzmer).
-
Rob Pike: Was a member of the Unix team at Bell Labs and the Plan 9 operating system initiative. He worked with Thompson for many years and co-authored the widely used UTF-8 code.
-
Ken Thompson is the author of B and C and the father of Unix. Winner of the Turing Award in 1983 and the National Medal of Technology in 1998. Along with Dennis Ritchie, he was the originator of Unix. Thompson also invented the B programming language, which grew out of C.
-
Robert Griesemer: Was a major contributor to Google V8, Chubby, and HotSpot JVMS before developing Go.
Also included are Russ Cox, the Plan 9 developer, and Ian Taylor, who worked on improving the currently widely used open-source compiler GCC.
Iv. The creation and development of Go
4.1 Naming of Go
This is an email from Rob Pike to Robert Griesemer and Ken Thompson on Tuesday, September 25, 2007 at 3:12 PM about the topic of programming language discussion. The text of the email reads: I got some inspiration on the drive home. 1. Name the programming language “Go”. It’s short and easy to write. The utility classes can be named goc, GOl, and GOA. The interactive debugging tool can also be named “Go”. Language files with.go suffixes and so on
That’s where the name of Go came from, and Robert, Rob, and Ken started working on it internally at Google, until 2009, when Go became open source, and the Go project team launched on November 10, 2009, That is, the language is officially open source as its official birthday. The source code was initially hosted on code.google.com and was gradually migrated to GitHub over the years.
4.2 Notes in the development process of Go
The first thing was the first big surprise in the development and design of the Go language was the following email:
This is an email from Ian Lance Taylor to Robert Griesemer, Rob Pike, Ken Thompson about the Go GCC compiler front end at 7:06 PM on Saturday, June 7th, 2008. My colleague recommended the website http://… / go_lang. HTML. It seems like an interesting programming language. I wrote a GCC compiler front end for it. While this tool still lacks a lot of functionality, it does compile the prime filter shown on the web site.
The addition of Ian Lance Taylor and the implementation of a second compiler (GCC Go) brought both shock and joy. This is not only an encouragement to the Go project, but also a proof of feasibility. The second implementation of the language is critical to the process of developing language specifications and defining the standard library, as well as helping to ensure its high portability, which is part of the promise of the Go language. Ian Lance Taylor has since become a central figure in the design and implementation of the Go language and its tools.
** The second thing was that Russ Cox brought his language design talents and programming skills to the fledgling Go team in 2008. Russ discovered that the universality of the Go method meant that functions could also have their own methods, which led directly to the implementation of HTTP.Handlerfunc, a feature that made Go suddenly infinitely possible. Russ also proposed more generalizing ideas, such as the IO.Reader and IO.Writer interfaces, that laid the foundation for the overall structure of all I/O libraries.
** The third thing was hiring security expert Adam Langley to help Go expand into the world outside Google. **Adam has done a lot of work for the Go team that is not widely known, including building the original Golang.org website and the Build Dashboard. But his biggest contribution is the creation of the Cryptographic library. At first, for some of us, the library seemed too small or complex. But this library became the basis for many important networking and security software in its later years, and has become a key part of Go’s development history. Many web infrastructure companies, such as Cloudflare, rely heavily on Adam’s work on the Go project, and the Internet is better for it. I remember that when BeeGo was designing, we also got a lot of suggestions from Adam when the session module was designed. Therefore, as far as Go is concerned, we sincerely thank Adam.
** The fourth thing is a company called Docker. It was the use of Go for project development that led to the container industry in computing, leading to projects like Kubernetes. Now, it’s fair to say that Go is a container language, which is another completely unexpected result.
Except the famous Docker, completely with GO implementation. Kubernetes, the industry’s most popular container orchestration management system, is implemented entirely with GO. Later Docker Swarm was completely implemented with GO. In addition, there are a variety of well-known projects, such as ETCD/Consul/Flannel, Qiniu Cloud storage and so on, all use GO to achieve. Some say GO became famous in the cloud era. But why not rephrase it? It was also the GO language that prompted the development of the cloud.
In addition to cloud projects, there are companies like Toutiao and UBER that have completely restructured their businesses using GO.
Five, the last
Go is Google’s second open source programming language (System Development Language) released in 2009. It is based on compilation, garbage collection, and concurrency. The Go language is optimized for programming multiprocessor system applications, and programs compiled using Go can be as fast as C/C++ code, while being more secure and supporting parallel processes. As a language appearing in the 21st century, its near-C performance and the development efficiency of a near-analytic language, as well as nearly perfect compilation speed, has become popular all over the world. Especially in cloud projects, Golang is used for most of the development. Golang, I have to say, has long been popular. For a new project with no historical burden, Golang might be the perfect choice. Many people call Go the C language of the 21st century, because Go not only has the simplicity and performance of C. It also provides various practical features of server development in the 21st century Internet environment. Rob Pike, known as the father of Go, said that whether you agree with Go depends on whether you agree that Less is more or Less is Less. The whole design philosophy of Go language is: simple, practical reflected incisively and vividly. Now Go has been a cloud computing programming language, Go language back to Google this tree, and there is no lack of talent, is worthy of the name of the “ox second generation”. Imagine this: a programming language that has only been around for a dozen years has become the dominant player in such a huge and growing industry, a success that no one could have imagined.