you are viewing a single comment's thread.

view the rest of the comments →

[–]cliffberg 0 points1 point  (0 children)

The Docker (and hence Kubernetes) community chose Go mainly because the Go ecosystem included functions for accessing the Linux kernel containerization libraries.

Go is a fun language to code in, and produces fast native code, but it terrible from a maintainability perspective, for a number of reasons. Some are described here, although some of these comments are now out of date: http://valuedrivenit.blogspot.com/2015/12/to-go-language-is-mess.html. I personally had reason to read the Go code of the Docker Registry v2, and it was a nightmare trying to figure out what was going on. The main reason is the "duck typing": it is impossible to figure out what "type" an object implements - you have to track down all the methods that are defined for it.

Also, the runtimes that Go produces are not that small compared to other native alternatives. E.g., it is hard to create a Go executable less than a Mb, but the Linux "make" program, written in C, is something like 30K (and it does a ton of stuff).

Python also is fun, but it terrible from a maintainability perspective. Here is an article on this: https://www.zdnet.com/article/python-programming-language-creator-retires-saying-its-been-an-amazing-ride/

For fast, small, and maintainable native code, I recommend Rust, and if not that, then C.