カレンダー

2021/07
    
       

広告

Twitter

記事検索

ランダムボタン

8タブ4スペース

by 唐草 [2021/09/10]



 ドラマなどでプログラムコードを見て「ギザギザしてた文章だ」と思えるのは、ぼくがプログラム経験者だからだろうか?HTMLからC言語に至るまで多くのコンピュータ言語は、行頭にたくさんのスペースが入っている。だからコードを遠くから眺めると鋸歯のように見える。と言っても伝わらないだろうから架空の例を書こう。

function example(users):float {
  n = 0;
  sum = 0;
  foreach (users as user) {
    if (user.score>89) {
      user.set_grade("S");
      n++;
      sum += sum;
    } else {
      user.set_grade("A");
    }
  }

  return sum/n;
}

 各行の1文字目がバラバラになっているのを感じてもらえると嬉しい。どの言語でもこんな感じでギザギザになっている。
 ところが、多くの言語で行頭の空白に意味はなく、あってもなくてもコンピュータにとっては変わらない。それなのにこの空白を巡って様々な意見や考えがあり、あたかも宗教戦争のような終わりなき論戦の的になっている。
 この空白は、人間がコードを読みやすくするためのもの。ひと目でカッコで囲われた範囲を理解できるように字下げ(インデント)を行っているにい過ぎない。上の例では最大3段の入れ子になっていることが、行頭の文字揃えから理解できる。このぐらいシンプルなら字下げがなくても理解できるが、普段ぼくが仕事で書いているようなコードはもっと長い。数百行に渡る入れ子構造は、字下げなしではとても読めない。
 多くの人が、読みやすさのために字下げすることに納得している。それなのに争いが起こってしまう。
 争点は字下げの仕方ではなく、字下げにどの文字を使うかという点にある。
 ある一派はタブを使う。別の派閥はスペースをいくつか置く。タブもスペースもどちらも見えない文字なのに、どちらを使うかで揉めている。しかも、各派閥も一枚岩ではない。タブ派は、タブの表示幅を4文字分にするか8文字分にするかでいがみ合っている。スペース派は4スペースで決着を見たようだが、空行にもインデントを入れるかで割れているようにも思える。
 それぞれの派閥の中で完結していれば話は単純なのだが、コードは何人もが集まって書いたり、前任者から引き継いだりすることもある。そういう時に派閥の衝突が起きてしまう。結果、字下げがぐちゃぐちゃになって、人間には理解しがたいものができてしまう。
 ぼくは4スペース派。今日は久々に8文字タブ環境にぶつかって地獄を見た。滅せよ8タブ。