>>>たとえそれが糖衣構文とはいってもポインタをあたかも配列のように扱うのはプログラマの意図すべきことではない。
>>完全に間違っている。
 だから、意図的にやるなといっているんだよ。
 
>>君がどういう印象を持つかにかかわらず、[] は配列を操作する演算子ではなく、ポインタを操作する演算子である。
>>ポインタに対して [] を作用させるのは言語仕様上まったく正当で、また配列はポインタに成り下がるから、
>>配列名に対して [] を作用させるのも同じ理由で正当である。
 正しい。配列名が、ポインタに成り下がることは、前にも書いた。私もよく使う。

 そうではなくて、ポインタを配列と認識することに問題があるといっている。
foo_t bar(baz_t *baz);とfoo_t bar(baz_t baz[]);という宣言について考えよう。
前者は、明らかにポインタを引数としている。後者もポインタを引数にしているが、そのポインタは、配列の成り下がりというのを明示している。
ここで、後者に対して、関数定義をしている実装コード内で添え字演算子を用いることについては、間違っていない。
前者に対して、関数定義をしている実装コード内で添え字演算子を用いることについては、
間違えとまではいわないが、それを目にしたときには首を傾げるだろう。
はじめから、後者の書き方を採用すべきだ。

>>重要なことは、ポインタの指す場所以降の領域がいかなるものであるかということであって、
>>識別子がポインタであるか配列であるかではないし、それに対してどんな演算子を使用するかでもない。
 そのとおり、シーケンシャルな場合でないと添え字演算は成立しない。
関係ないけど、"bar"[i], (cond ? bar_ary : bar_ptr)[i]こんなのは見たくない。

 シーケンシャルなデータ構造で解決できればいいんだけど、そうでない場合に、ポインタが絡む。
だから、あえてポインタに間接参照演算子を使い、添え字演算子を避けている。防衛的にプログラミングしているってことね。

>>そこまでして識別子の種類を明示的に区別したいなら、ハンガリー記法でも使うことをお勧めする。
 使ってます。システムハンガリアンね。lint病にかかったのかなぁ。