C言語に関して特徴的だと思うことが3つあります。
実はこの特徴はXMLとよく似ています。
XMLがシンプルなのに理解できない理由は、それがメタ言語つまり言語を作る言語であるという理由によります。メタ言語とは抽象的な存在であるために、具体的なイメージを描いて理解することは難しいのです。それにも関わらずシンプルゆえにすぐに使うことができます。使える以上は理解できているはずだと錯覚することで、上のような状況が発生します。
実は、C言語も基本的に同様であることに気付きました。C言語の標準には多数の「処理系定義」という言葉が使われていて、標準Cだけでは動作の結果が1つに定まらない要素が多数あります。つまり、標準Cが規定するものは具体的な言語ではなく、あり得る多数の可能性の集積体としての抽象的な言語であると考えると分かりやすいでしょう。
このように考えればC言語も一種のメタ言語であり、実装されたC言語という具体的な言語を作り出す言語であると見なせます。
メタ言語としてのC言語を正しく使うとは、結果が1つに決まらない機能を使わない、という意味ではありません。そうではなく、結果が1つに決まらない可能性の海としてC言語を扱うことを意味します。
たった1つの結果について論じることができるのは、あくまでC言語の特定の実装、特定の環境に対してだけです。
この2つを混同し、標準Cの世界でたった1つの結果を得ることを前提とした語りは不毛であり、そのような前提で導き出されたどのような結論も実地では通用しがたい可能性があり得ます。