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タブ。