1. 14
  1.  

  2. 2

    I hope there’s been enough publicity about C gotchas, at this point, that most professional programmers know to do a quadruple-take whenever handling pointer arithmetic or type-punning. And that’s hopefully only when they need to use C.

    1. 2

      Fun part for me is how people describe it as a “close to the metal” language that lets you “work directly with memory operations.” Then, I see an article talking about how pointers, a critical part of it, are abstract things that might not work the way you think they do. They also find the language specs’ meaning debatable in a language whose programmers often oppose using formal specs for things like languages or compilers. That part was totally predicted by prior results in formal specification.

      1. 3

        Fun part for me is how people describe it as a “close to the metal” language that lets you “work directly with memory operations.” Then, I see an article talking about how pointers, a critical part of it, are abstract things that might not work the way you think they do.

        This is because the language is more abstract than people generally think it is. They often talk about the speed of C (because “it’s a compiled language”), or the stack, or the heap (or memory layout in general), or how “the size of char is 8 bits and size of int is 32 or 64 bits, depending on how old your Intel CPU is”, or about any of many other implementation details attributing them to a programming language that never defines strictly such things or sometimes even doesn’t even talk about them, leaving them for the language implementors.