Re: else if について
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らしいということで。
前田敦司
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735