プログラミング四方山: 2008年7月アーカイブ

 新しい検索エンジンCuil(クイルと読みます)。28日公開したばかり。
開発したのはグーグルの元チーフアーキテクトのアンナ・パターソンさん。
アキハバラ@DEEPでダルマが提唱していた検索エンジンの命名傾向とは微妙に違ってますが、覚えやすい名前かな。ググるに対してクイると言わせたいとか。まさかね。
 現在は英語圏を中心とした検索ですが、インデックスは公開時で1200億以上とのこと。日本の検索エンジン利用率のトップはYahoo!で次がGoogleですが、Cuilはこの上位2つの検索エンジンの牙城に食い込むことができるでしょうか。
よほど画期的で、ブラウザの「ホームページ」を変えさせるほどの便利さがないとなかなか難しい気がしますが、注目のサイトであることは確か。日本語サイトの登録が殆ど無い現状を大きなチャンスと見るか黙殺するか。さて。

PHPは型判定を割と勝手にやってくれます。
人によっては便利なんでしょうが、ワタクシC言語出身なのでそれがとっても気持ち悪い。
違う型同士を比較とか関数に型違いの引数を渡すとか気味悪い。まあその気味悪さを乗り越えて使ってみると確かに便利なんだけど、中身の処理を意識しないで使うとバグの元になる。それも自分で見つけるのが困難なバグになりかねない。あとPHPはバージョン変わると挙動が劇的に変わることがあるので厳密にできるところはそうした方が後々のため。
たとえば、

bool in_array ( mixed needle, array haystack [, bool strict] )

という関数がある。
これは第一引数の値が第二引数の配列内に存在するかどうかを判定するものだが、配列の各要素の型は必ずしも一様ではないため違う型同士の判定が起こり得る。その場合の落とし穴がこれだ。

$str_array = array('a', 'b', 'c');
$result = in_array(0, $str_array);

この処理の結果、$result はなんと TRUE になる。
比較の際に第二引数のほうを数値にキャストするからだ。

$result = in_array(0, $str_array, TRUE);

とすると型の一致も判定するので、$result は FALSE となる。
型判定、とても大事。ちょっとしたスクリプトを書くくらいのコーディングでも NULL と 0 と FALSE の違いくらいは意識したほうが身のためと言えましょう。

このアーカイブについて

このページには、2008年7月以降に書かれたブログ記事のうちプログラミング四方山カテゴリに属しているものが含まれています。

次のアーカイブはプログラミング四方山: 2008年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.14