2009/09/22(火)プログラマの適性判定テスト

 ものすごく旧聞に属することで恐縮だが、日本語プログラム言語なでしこのホームページに第1回コンピュータブル文学賞について書いてある。「あたしコード、っていうか FizzBuzz。」というプログラムが受賞したのだけれど、このFizzBuzzって何かというと、1から順番に数を数えていき、3で割り切れる時にFizz、5で割り切れる時にBuzz、3と5の両方で割り切れる時にはFizzBuzzと言うゲーム。詳しくはFizz Buzz - Wikipediaを見てほしいが、世界のナベアツがやっている3と3の倍数の時にアホになるというのはこのFizzBuzz問題をマネしたものらしい。

 受賞作の「あたしコード、っていうか FizzBuzz。」は2009/03/22 - diaroid - Site Untitledで見ることができる。ケータイ小説の文体で書いた日本語プログラムだが、これを実行すると、ちゃんとFizzBuzz問題が表示される(こんな感じ)。

 で、先ほど書いたWikipediaのページに「どうしてプログラマに・・・プログラムが書けないのか?」というページがリンクされていて、さらにそのページから「Coding Horror: Separating Programming Sheep from Non-Programming Goats」というページがリンクされている(日本語訳はプログラミングできる人とできない人との間の深い溝 - 翡翠はコンピュータに卵を生むか)。ここに書いてあるプログラミング適性を判定する問題が面白い。以下のようなものだ。

int a = 10;
int b = 20;
a = b;
aとbの新しい値は以下の組合せのうちどれか:
a = 20,b = 0
a = 20,b = 20
a = 0, b = 10
a = 10,b = 10
a = 30,b = 20
a = 30,b = 0
a = 10,b = 30
a = 0, b = 30
a = 10,b = 20
a = 20,b = 10

 コードを一度も見たことがない計算機科学部の新入生向けのテストだそうだ。プログラムやってる人なら常識的すぎるが、知らない人には何のことやら分からないだろう。

変数への代入を表したもので、答はa=20,b=20となる。このテストを受けた「学生の44%は代入がどのように働くかについて一貫したモデルを持つに至る」そうだが、逆に言えば、半数以上は代入が理解できず、ということはプログラマに向いていないことになる。

 人には向き不向きがある。プログラマに向いていなくても政治家や芸術家や実業家に向いているかもしれず、悲観することは何もないが、自分の適性を知らずに進学先を決めている人も多いのだろうなと思う。こういう適性テストは入学後ではなく、入学前にやった方がいいのだろう。