I should also talk about disadvantages and which I think are real and which are not, or not serious
- no abstractions: i think this is completely wrong, one can build great abstractions in C
- no package manager: IMHO languages should not have packager managers
- difficult to learn: I think this wrong (but see below)
- safety: partially true, but there are ways to deal with this effectively (also the advantages of alternatives are exaggerated)
- out-dated: partially true with respect to the library
- weird syntax: partially true, but hardly serious
- not enough investments in tooling: rarely discussed, but I think this a problem (tools are mature, but still a lot could be improved)
- difficult for beginners: the out-of-the-box experience is bad. one needs to learn how to do stuff in C, find good libraries, etc.