ろじかるんるんものがたり

病人が特に何も書かない。無駄だからだ。

頭の良さと可読性

技術ポエム。

世の中にはとんでもなく頭の良い人というのが極稀にいる。当然プログラマ界隈にもそういった人間が極稀にいる。しかし、そういった人たちの仕事が素晴らしいとは限らないらしい。

 

人間は頭が悪いので、こんぴうたあ様にお仕事をしてもらうのに、自然言語よりは formal な言語を使う。こんぴうたあ様(正確にはその上で動いているおーえすーやそふとうぇあー様)が解釈できる言語は色々あるわけだけれど、その formal さにはばらつきがある。

繰り返しになるけれど人間は頭が悪い。そんな人間が誤ってこんぴうたあ様に変なことをお願いしないように、言語の側で、馬鹿なことをいえないようにしたりする。頭の悪い人間は、言語の処理系に「お前そんな馬鹿なこというんじゃない」と叱られながら、一所懸命にプログラミング言語というものでコードを書く。言語の処理系ではチェックが足りなかったりするので、そんな時には静的解析とかに頼ったりする。

 

コードは複数の人間が読み書きしたりするので、できるだけ他の人間が読みやすいように心がけたりする。可読性という奴です。読みやすさというのは勿論人によって違うのだけれど…まあ兎に角何かしら読みやすさというものを誰だって気にしている(はず)ということです。そうでないこともある?そうでない環境はろくでもないので逃げたほうがいいと思いますよ。

 

世の中の殆どは、大体そんな感じだと思うのだけれど、とんでもなく頭の良い人達は、言語の処理系に叱られない程度に、複雑なコードを書いてしまうことがある。頭の悪い人たちはそれがどのようなものなのか、中々分からない。頭の良い人達は、それを読み書きできてしまう。結果として、恐らく品質はよいのだろうけれど、頭の悪い人達には読めない産物ができあがったりすることがある。

例えば R から始まる pure OO な動的型付言語で、それ Struct 使って名前つけましょうよみたいな部分が、片っ端から配列だったりする。例えば C から始まるトゲトゲした感じの歪なゴテゴテとした巨大な言語で、それロックの順序大丈夫なんですか非自明ですよという部分が、どうやら大丈夫らしかったりする。正しく理解するにはそれなりに頑張って読み込む必要があり、時には動かしながら、ログを仕込んでみたり、デバッガで値を見てみたりと、色々して要約理解できました、となることがある。ならないこともある…つらい…

 

頭のいい人たちは頭がいいから、自分の書いたものが頭の悪い人たちには読めないかもしれない、ということは承知しているはずである。しかしここに、「頭はいいが人間性に難あり」といった面倒な仮定が加わると、「うーんそうだけど最後にまとめてリファクタリングするよー(意訳:だるい)」みたいな返事が返ってきたりする。いや今してもらわないとあんたが倒れたらどうするんだと思うわけだけれど、強く言ってもやる気を削ぐといけないし、程ほどに言う。

勿論、別に頭の良さをひけらかすためにそういった書き方をしているのではなく、頭が良い故に難しいコードを読み書きできてしまうのだと思う。ボクは頭が悪いので、実感としては中々分からないし、お前のコードは読めないと面と向かっていわれたことは今のところ記憶にない(お前のコーディングは何やってるかわからないといわれたことはあるし、最早自分にも分からない)

 

古くは Jargon File の The Story of Mel なんかが似たような事例だと思う。何時の時代にもとびぬけて頭のいい人間というのはいる。頭いいなーと思ってた人が「いやあの人おかしいよ」みたいにいう、そういうような人。

特別結論なんてないし、頭の悪い下々のもののためにどうしてくれなんて強くいえないけれど、難しいなあと思うわけですね。実際問題、頭の良い人よりは頭の悪すぎる人のほうが問題になることが多いし。頭の悪すぎる人について書いたら、ポエムじゃなくて単なる愚痴になりそうなので、そういうのは書かない。

 

頭良くなりたい。聡明さを備えており、十分に知的で、ウィットに富んだ美少女として生きて死にたかった。