
コラム0110 優秀なプログラマーを採用する方法
採用面接で、自分の思ったことをプログラミングできるスキルがある人かどうかを判断しなければいけないとき、まずはこれまで作ったソフトウェアの内容と目的をインタビューします。さらに、ある程度以上のプログラミングスキルかあるかどうかを判断するために、「関数の再帰呼び出ししたことありますか?」と聞くようにしている時期もありました。
再帰呼び出し(リカーシブ)とは、自分で自分自身を呼び出すことで、ツリー構造などのデータを扱うときに簡潔に記述できる手法です。プログラミングが格段にラクになるので、ある程度経験があると使うことが多いと思います。きちんと作らないと無限ループに陥りますので、初心者向けにはあまり教えません。下記は関数fooを再帰的に呼び出している例です。
void foo(int a)
{
if (10 < a) return;
foo(a + 1);
}
無限ループとは、計算が永遠に終わらない状態のことです。上記の例で、3行目のif文の行がない場合、無限にfooが呼び出され続けて、プログラムがフリーズしたようになります。最近は事前に無限ループに陥る箇所をエラーとして警告してくれるコンパイラもあります。
ちなみにfooとは、適当な名前の代表です。fooを自分で好きな名前に変えてね、という意味です。その他にhogeとかもよく使われています。なぜfooやhogeという言葉を使うのかは知りません。