IIJIMA Hiromitsu <delmonta@ht.sakura.ne.jp> writes:

> 河野さんはどちらかといえば理論屋さん(と認識しています)だから、美しさに
> こだわるんでしょうかね。
> 
> でも、実用屋の立場からすると、曖昧なコードによるバグ混入を避ける、そのた
> めには少しは美しさを犠牲にするのもやむを得ない、という発想になっておかし
> くないと思います。特に、perl の p は practical の p ですので。

人間にとっての実用面だけじゃなく、理論的にも汚らしくて嫌な感じですよ。
曖昧な文法ってのは、文法だけでは構文木の形が決まらないってことですから
ね。LALR(1)だと、shift/reduce conflictですね。(工夫すれば曖昧でない文
法としても書けますが。)

"dangling else problem"とかで検索すると、人間にとっての曖昧さ(バグの源)
と構文解析の曖昧さの両方についてたくさん出てきます。

> > 曖昧さよりも else if って書ける方が重要だと思う。

else ifの連鎖って、K&RでCを勉強して知るまでは必要だとも思わなかったで
すね。Pascalを使っていた頃は、後の(文法的には内側の)ifは字下げして書く
のが当然だと思っていたから。初めて見た時は「なんて気持ち悪い字下げだ」
と思いました。

それ以前にも、Modula-2のelsifキーワードはなるほどと思ってたんですけど
ね。(Fortran77のELSE IF文は知らなかった) もしPascalで
    if ... then
       ...
    else if ... then
       ...
    else if ... then
とか書かれたら違和感があっただろうなあ。同じレベルに字下げするelse if
の連鎖は、文法の欠陥を人間がカバーする工夫(elsifの代用品)でしょう。
elsifより間違いやすい点は、まあいかにもCらしいということで。

                                前田敦司