constructorを日本語でなんというか?

http://lise-sophia.net/kktm/Essay/xx-shi.htm

このエッセイが面白かった。動詞に-erや-orをつけるような名詞は「◯◯子」「◯◯機」「◯◯器」などといった接尾辞がつけられる。特に抽象的な概念などの場合には「子」がつけられがち。例えばoperatorを「演算子」と呼んだりidentifierを「識別子」と呼んだりするように、と。

プログラミングの世界ではまさにそういう「抽象的な概念」であるが-erや-orがついた名詞というのはたくさんあるような気がする。どうなっているだろう?

constructorについては、「構成子」という訳語があるかな、と思ったが、「構築子」という用語もあるようだ。どちらも現存するらしい(前者は例えばJIS規格のFortran、後者はJIS規格のC#で使われている)。さてFortranのことは全く詳しくないが、C#くらいモダンな言語にはこの種の「◯◯子」がたくさんありそうだ。そこでJISX 3015をネットで検索して適当に見かけたものを探してみた。

なかなか面白い。みなさんも色々考えてみてほしい。

まずconstructorに対応するものとしてdestructorだけど、C#の仕様にはdestructorがない。あったけど紛らわしいのでfinalizerという名前になったようだ。JISX 3015にはその経緯も記載されて(翻訳されて)おり、destructorの方は「解体子」、finalizerは「終了化子」と訳されている。「化」は必要なのかなあ、でもないとちょっとおかしいのかなあ。うーん。

finalizerに対応するものといえばinitializerだろう。これは当然「初期化子」ということになる。これはまあ見覚えある気がするな。

次にiterator。これはどうなるだろうか、考えてみてほしい、がそれほど意外性はなさそうだ。「反復子」という言葉が入っている。

iteratorといえばgeneratorというものもあることがある。ただC#にはないので訳語はあるのかどうかわからない。自分なら「生成子」とでも名付けるだろうか。constructorと紛らわしいかなあ。難しいですね。

他にも色々な-erや-orがありそうだ。ありそうだと言いつつ、考えてみると意外と思い付かないものだけど。

逆にJISX 3015を眺めていて「おっ」と思った日本語の単語の方を二つ挙げておく。

「添字子」。これはindexerといったところだろうか。

「アクセス子」。えーと、accessorといったものだろうか、しかしもうちょっといい訳語はなかったものだろうか。さらにアクセス子の中には「イベントアクセス子」というのもあるようだが、もうそれなら全部カタカナ語にしちゃえよ感があって味わい深い。