2009/01/23
やっぱりポインタのポインタは難しいようです
アリエルでは、プログラマとして応募してきた人に出すための設問を用意しています。現在、C版とJava版があります。 C版の作成は古くて、正直、もう廃棄してもいいかなと思わないのでもないですが、Javaは未経験でC/C++の経験はあります、という人はいますし、そういう人はいわゆるなんちゃってJavaプログラマよりは相対的に能力が高い傾向にあるのでC版も残しています。
最近、立て続けに、他は完璧な回答なのにポインタのポインタが絡む設問だけは間違い、という回答を受け取りました。結果引数(引数で値を返す関数。Cでは必要悪)で、返す値がポインタ値なので、引数の型をポインタのポインタにする必要がある設問です。他の設問で、ポインタを理解しているように見えました。しかし、ポインタのポインタが分からないということは、ポインタをきちんと分かっていないと判断せざるをえません。
昔なら一発でダメ出ししていたのですが、最近は、ポインタのポインタが分からなくても別にいいか、という気になってきました。ポインタが分からない人にC/C++のコードを書かせる気はないですが、ポインタが分からなくても、リファレンスが(感覚として)分かっていればJavaは使えます。
ここでのポインタとリファレンスの用語は、「値に対する演算が可能か否か」で使い分けています。リファレンスに対する演算は存在しないので、リファレンスのリファレンスは存在しない、が正しい回答ですし、結果引数のような悪習も考えない、というのが正しい態度です。引数は入力専用、出力は返り値で、という正しい態度が身につきます。
と言うわけで、ポインタが分からなくてもいい、という結論です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/pointer/tbping