The Go Programming Language
Go is a lightweight programming language, which we especially like to use for implementing high scalability and performance-critical parts of our applications. As we have used it in numerous projects, we recommend to ADOPT it.
Benefits
- creates statically compiled binaries by default (which are extremely easy to distribute)
- cross-compilation to different platforms is very easily possible
- has a great standard libary
- supports parallelization of work using goroutines
- is very fast and light on resources
Drawbacks
- I personally (Sebastian) think the concept of gopath and the go workspace folder is not good, as it might lead to non-reproducible builds when having many different projects.
- there is no official/standard way of doing dependency versioning. We have used glide in the past, though dep seems to become the new de-facto standard.
- is a garbage collected language, so there exist GC pauses. However, we did never experience any problems in our kinds of applications yet.
Alternatives
- rust is a systems programming language with very unique concepts, leading to memory safety without a garbage collector. I'd try to learn Rust generally as a replacement to C; while I see Go as a little more high level. Thus, I'm rating rust as ASSESS.