「おまじない」
わけあってC言語でコードを書いた。先輩や同僚の書いたものを読んだり、原因究明のために(「おなかいっぱい」という表現がふさわしいほど)大量のオープンソースのものを読んだ記憶もある。最近は共同研究をご一緒していている企業から貸与されたコードを読むことも多くなっている。
今回、UNIXで標準的なライブラリだけを使ってC言語で書くことになった。これまでANSIやPOSIX準拠のライブラリのみを使って書いたのは、企業のプログラミング演習の講師をしたときくらいだ。私の場合、C言語でのコード書きというと巨大なライブラリが用意されていて、既存のコードをちょこっと改変して大量にテストする、というのがこれまでの個人的イメージだ。
標準的なライブラリのみを使ってスクラッチから書いたということもあり、ライブラリでどのような異常系の処理ができるのか、セキュリティ上の問題はあるのか、サンプルをみたい、実際のところきちんと動くのか(マルチバイトの扱い等)、ということも気になりサーチエンジンを使ってWeb上のドキュメントを探していた。検索したページの中に「これはおまじないです」という説明を結構目にした。Javaのimportの説明にはそれほど多くの「おまじない」という説明を見ないような気がする(個人的な感触でなんら定量的な裏づけはないが)。
いろいろなところで何度も「おまじない」という表現をみるとなんだか気になってきた。Cに「おまじない」的なものが多いんだろうか。。他の言語では「ここでのポイントは~であり、・・・の項目については後述するので興味があれば…を参照してほしい。」というような説明が多いような気がするが、先に書いたように定量的な裏づけも何もないし、私の思い込み、勘違い、たまたま、なのかもしれない。
勘違いかもしれないのでそれくらいで妄想を止めておいたらいいのだが、ひょっとすると「おまじない」はC言語が初学者のプログラミング言語ということに由来するのではないだろうかとも思えてきて、更に妄想が続いた。Javaのsuperやpublic static void main(String[] args)とかextendsも同様なんではないかと思うが、「おまじない」という表現はあまりみないように思う。そもそも利用者層の厚いC言語において、ANSIやPOSIX準拠の関数をサーチエンジンで検索して、検索結果の上位に現れるものをみているので、「おまじない」的表現が多くなるのは当然といえば当然なのだが。