True.
Nonsense.
Rubbish.
Perhaps your software developers don't use memory protection appropriately on your systems - other people do.
You will find that on any modern "big" OS (even Windows), trying to write to the code segment of your program will cause a segmentation fault (or equivalent fault). You get the same effect if you try to execute data or the stack. You need specific features, calls, permissions, etc., to mix data and code - something required for JIT compilers, VM's, etc. (Remember what I said about high security working against usability?)
On microcontrollers, code is almost invariably in flash - and thus cannot be directly overwritten.
About the only systems where it is generally possible to write to the code space without jumping through hoops (required for software updates, loading new programs, etc.) is if you have a system that has slow external flash, fast ram, and which copies the code from flash to ram at startup. Using an MPU to lock this code after loading is usually rather easy.
And the "C language" does /not/ compile to mixed-up messes. I explained about sections in a previous post - you claimed it was just the same as what you had written yourself, but more detailed. Either you didn't understand what I wrote, or you didn't understand what you wrote yourself. Either way, you clearly don't know how the C language or C compilers work, and are clearly unwilling to learn.