bluetomcat 6 days ago

The perceived complexity from a semantic standpoint comes from the weakly-typed nature of the language. When the operands of an expression have different types, implicit promotions and conversions take place. This can be avoided by using the appropriate types in the first place. Modern compilers have warning flags that can spot such dodgy conversions.

The rest of the complexity stems from the language being a thin layer over a von Neumann abstract machine. You can mess up your memory freely, and the language doesn’t guarantee anything.

1
drob518 6 days ago

Exactly. C started off as high level assembly language. That was both a strength, at first, and a weakness, later on.

codr7 6 days ago

It's still both its core strength and core weakness, which is why it's not going anywhere.