視線の流れ
プログラミング言語には、プログラマの意図をコンピュータに伝えるという大事な仕事がある。そしてもちろん、プログラマ間でもコードを読み合うわけだから、読まれるという点では自然言語と同じ意味で「言語」でもある。
どうしても気に食わない事がある
『Real World Haskell』から引っ張ってきた、ごく普通のHaskellコード
let capCount = length . filter (isUpper . head) . words
これを読むときは、どう考えてもコードを右から左へ……それどころか、右へ左へ視線をさまよわせながら読むことになると思う*1。どうしてこんな記法にしたんだろう? 何か深遠な理由があるのか、他にどうしようもなかったのか。
どうしてこうなった
少し考えてみた。たぶんHaskell(とかMLとかの関数型言語)が意識しているのが数学の合成関数の記法。
右から左だ。とはいえ今更のように、この記法を発明した数学者*2に文句を言うわけにもいかない。xにf、g、hと順番に適用してるだけなんだから、こんな記法でも良いと思うんだけどなあ
……これがまさにオブジェクト指向ってことかな。オブジェクト指向は記法的にも読みやすいというメリットがあるのかもしれない。