Go is a compiled language, not an interpreted language based on virtual machines, it's just a subjective feeling that the executable programs produced by compilation are naturally different from the operating system. It is like wearing a set or not wearing a set. In addition to the compilation type and C language, go also has a lot of similarities. It is said that go is an enhanced version of C. Therefore, I think go should be favored by many C language programmers, at least I have no hold. Python is a simple and elegant language that I think is the same as C. Unfortunately, I really don't like dynamic types, so I won't say much about the disadvantages. Go claims to have Python development efficiency, however, it adopts the same static and strong type as C, and does not support forced type conversion. The lack of loss is the enhancement of C language, and the security has finally been strictly guaranteed at the language level.
Go has built-in types such as string, array, map, and even pointer, satisfying the dependency of C language players on pointers and facilitating program development. It provides a complete basic type system, which can bring high efficiency to development. In addition to a complete type system, it also provides simple encapsulation to implement object-oriented programming, which is all supported at the language level, rather than using the C language for object-oriented programming. Today, the value of object-oriented systems is not so obvious, especially Java and C ++. They provide a large number of language systems, interfaces, various inheritance, and abstraction, which easily leads to over-design;
But what the go language provides is only the most basic object encapsulation. Without complex features, it is hard for you to design too much.
Go introduces the package management mechanism, which is the same as Java, which facilitates modular development by programmers. Although senior players in C language can also use C language for modular system design, this is undoubtedly difficult for a novice. The package mechanism introduced by go language provides you with the idea of Modular programming at the language level.
Python has a tuple type. One obvious benefit of this type is that the function supports multiple return values. I have been wondering whether C, C ++, Java, and other traditional languages do not support multiple return values at the beginning. Is it really the result of keeping up with the mathematical model Y = f (x? Of course, the Go language has never been used for such excellent features. After a rough look at the libraries provided by the Go project, it is found that an important application of multiple return values is to separate the calculation results returned by the function from the error. What a C function often does is that the returned value is a positive number, which is the expected result. If it is-1, it is an error in the function compute process; java functions throw an exception when an error occurs in the calculation process and terminate the calculation. C and Java are not perfect, C is too weak, and Java is too bloated. Exception mechanisms are really a very boring technology. c ++ programmers seldom use exceptions, but Java programmers are so happy that the result is that the hierarchy of code Nesting is terrible.
C-language programmers may suffer the most from memory management problems. C systems that cause memory leakage due to memory release Miss often occur. Since go is enhanced by C, GC is implemented, and programmers no longer have to worry about memory leakage.
In addition to the excellent features of these languages, the biggest highlight of Go is its support for parallel programs. c/Java and other languages all implement parallelism through threads, and the language itself does not support parallelism; while the ancient language of ADA has achieved language-Level Parallelism early on. The parallel technology of Go is called goroutine. Therefore, go does not have the concept of a thread, which allows programmers to conveniently and correctly Write multi-core programs.
Finally, I attached the word carved by Google +-"small language, a large database is King ".