<p><pre><code>  &gt; the culture of developers tends to the view that something which has
  &gt; always worked in every important implementation should be allowed and
  &gt; continue to work in new implementations
</code></pre>
Yes, and X3J11 stated as its first guiding principle,<p><pre><code>  &gt; Existing code is important, existing implementations are not.
</code></pre>
But then they committed the original sin against “simple C” by inventing ‘volatile’, breaking systems code written when <i>p[0]=x</i> was expected to write to location <i>p</i>. Unlike ‘const’, with which the programmer grants additional license to the compiler, C89 granted the non-‘volatile’ license to the compiler by default. In retrospect, I think C would have been better off retaining do-what-I-wrote as the default, and requiring the programmer to grant the compiler license to do otherwise. C already had the ‘register’ keyword to indicate that a variable should be compiled for speed and need not be literally preserved according to a naïve reading of the code.