[php]needle in a haystack

カテゴリ: php / author: uechoco / 2009年11月30日 01:12:11
この記事を読む時間:227くらい

プログラミングをやっていると、慣習的に用いる変数名、引数名と言った物があります。例えばfor文の変数はi、j、kとか。たまに知らない慣習もあります。今回調べたのは「haystack」と「needle」。文字列検索系の関数の引数名としてよく使われています。例えば下記のstrposやらstrstrやら。

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

この習慣はphpだけのものではなくて、C言語から来ています。

char *strstr(const char *haystack, const char *needle);

で、実際のところ、なんでhaystackとneedleなのかというところですが、恥ずかしながら、私はhaystackという英単語を知りませんでした。haystackは「干し草」という意味のようです。needleはもちろん「針」ですね。

英語がわかる人には常識なのかもしれませんが、英語には、haystackとneedleという単語を用いた慣用句があるんです。

  • needle in a haystack: 見つけることが不可能なもの、捜しても見つかりそうにないもの、無駄骨
  • find a needle in a haystack: 干し草の山の中の針を見つける、見つかる望みのないものを見つける
  • look for a needle in a haystack: 干し草の山の中にある1本の針を探す、無駄骨を折る

だいたい同じような意味で用いられます。
C言語が定義された頃は、文字列検索関数が対象文字列(haystack)から目的の文字列(needle)を見つけ出す様は、干し草の山の中から針を見つけるくらいに大変なことだった、ということでしょうか?(適当に考えていますが、そういう意味としかとれないですよね)

プログラミングの世界にもうんちく話ってありますよね。
他にもこういった慣習をご存知の方はコメントに書いてください!


コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2012 うえちょこ@ぼろぐ. WP Theme created by Web Top.