単数形と複数形

 プログラミング言語に関してはその発祥は殆ど欧米なんですけど、欧米の言語というのは実に似たり寄ったりでして大きく分けてラテン語、ゲルマン語、ギリシャ語に分けられるということらしいです。フランス語、スペイン語、イタリア語なんかはラテン語がその発祥元ですし、英語、ドイツ語辺りはゲルマン語が発祥、ギリシャをはじめ黒海周辺、バルト三国からロシア語にかけてはギリシャ語が由来しております。どれもこれも文法的には似たり寄ったりでして、ドイツ語が理解できればオランダにいっても旅行程度だったらさほど苦労しない。日本人にとって日本語と英語はまさに外国語同士なのですが、英語とオランダ語なんかは殆ど親戚筋の方言に近いものがあります。同様にして韓国語と日本語はかなり近いので文法的にも発音的にも覚えやすい。外国語というのは便宜的に「国境」で分けているのでどれもこれも外国語という感じがしますが、実際に喋ってみると外国語同士にして外国語にあらずということはよくわかります。
 それぞれの言語にはそれぞれの特徴があるんですが、我々日本人にとって最も理解不能な欧米語の概念は複数形ではないでしょうか。我々と言ってしまいましたが実に私自身にとってはこの複数形は最も不可解な代物なのです。ヨーロッパの殆どの言語には厳格に単数形と複数形があります。しかもこれを間違うとかなりおかしなニュアンスになってくる。このおかしなニュアンスというのが日本人にはなかなかわかりずらいところではありますが、数年間欧米の言葉を話しているとそういうのがちょっとわかってくるわけです。しかし、ちょっとわかるんですが具体的にどんな風にわかったのかはこれまた説明し辛いです。
 しかしながらプログラム言語だとこれがよくわかる。欧米発祥のプログラム言語は単数形と複数形をかなり頻繁によく使うわけです。それがいわゆるスカラー変数と配列変数というものです。単数形と複数形を見事に概念化してくれていました。
 ちょっと話を戻しますが、数学には集合という概念があります。これは数学に限らずいわゆる科学的な思考には切っても切れない概念なのですが、例えば人間(ホモ・サピエンス)が存在するとして、この人間というのは東京の下町育ちでもケープタウンの八百屋さんでもブラジルのサッカー選手もみんな人間なので人間という集合の何かに入ります。残念ながら人間なみの知能を持つチンパンジーなんかは今のところ人間の集合にはなりません。チンパンジーはチンパンジーの集合になります。
 この集合という考え方は日本語よりも欧米の言語の方が実に敏感でありましてそもそもの文法にしっかりと組み込まれているというわけです。仮にNHKが現在の政治情勢について街角インタビューを試みた場合には新橋のサラリーマンとかお台場に家族レジャーに来た人とか新宿南口改札とか典型的な東京名所でインタビューを行うわけですが、東京在住の典型的な1人々の中の任意の人物ということを想定してインタビューをするし、また視聴者もそういう態度で聞く。その時、英語ではpeopleという言葉があるのですが、この言葉は単数形も複数形もないんです。しかしニュアンスとしてpeopleは複数形な感じがする。(辞書的には間違っているかもしれません。)同様にしてドイツ語のleute(人々)にも単数複数の区別がない。日本語も人々という風に「人人」とダブルで言っているところからみると複数形のニュアンスですでに喋ったり書いたりしているんです。この時、我々の頭に思い描くそのイメージはある集合をバックボーンにした任意の一人であって、その人物個人が確固とした独立した存在としてインタビューを受けているとは想像しない。これをa manと表すのが欧米風。田中角栄さんについて立花隆がインタビューを受けているとか、オーム真理教についてDr.苫米地がインタビューと受けているというのであればそれは専門家としての確固とした個人を対象にインタビューがなされていることは容易に想像できますが、新橋のサラリーマンのインタビューは決してそうではない。a manではちょっと収まらない個性と専門性を帯びていて、もし仮にa manがそんな個性と専門性を所持していたら何だかとっても嫌な気分になるではないですか。
 そういったある種の集合(新橋のサラリーマン=日本(特に都心の)サラリーマン)という集合のイメージは、言葉の中で必ずあるものです。ここまでは説明すると日本人でもよくわかる複数形の概念です。
pineapple.jpg しかし林檎やパイナップルとなるとこれまた難しくなる。我がやの近所の回転寿司には必ずパイナップルが皿に盛られて流れてくるのですが、このパイナップルを見て南の国でわんさかとぶら下がっているパイナップルをこれまたわんさかという人間が箱詰めしているなんてことを想像しながら食する人は少ない。でも欧米人はそんな想像を多分しているんだと思います。じゃないと単数形と複数形を使うことはできない。a pineappleはそのようなわんさか箱詰めされているようなパイナップルの中の任意の一つというような意味でa pineappleと言えるのが欧米人。日本人はもっと甘くて黄色くておいしいpineappleを最も最初に想像するために単数形と複数形という区別をつけないわけですよ。
 科学的な分析やプログラミングの理論性というところから申し上げると、不思議なことにこれらの単数形と複数形の区別は日本人であり日本語を使っていてもちょっと気にしなくてはいけない場面が出てくるんです。つまり集合です。MySQLデータベースなんか使っていると複数あるレコードの一つであったり、複数のレコードの中のいくつかであったりと思考回路がちょっと欧米風になってくる。欧米の言語が理論性に優れているといわれる所以は、ここらの単数形と複数形、また集合とその任意のサンプルというような分析的な視野がすでにネイティブの言語に感覚として含まれているからなんじゃないかと思われます。
 実際は欧米の人が理論的であるとか、日本人が理論性に乏しいとかいうのは全然なくて頭の悪いイギリス人もドイツ人もたくさんいるわけでして、言語からその特定の人間の性質には全く言及できないのですが、言語そのものの本質でいうと確かにそういうことになります。
 そんなわけで、プログラミングにはスカラー変数と配列なんです。もうどのプログラム言語を学ぶとしてもこの変数の用法が大切なんです。同様にして欧米の言語でも単数形と複数形はかなり重要です。
 ではなぜにスカラー変数と配列変数なのかというと先の集合に対する想像と同じなんですね。
 プログラミングには最も多く使う変数には、ブール値と数字と文字があります。数字と文字が変数として使われるのは当たり前ですが、ブール値というのは何ぞやというと、いわゆるYES/NO、ON/OFF、S極/N極、無/有といった相対する二つの概念を扱います。そしてこの概念はスカラー変数(単数)を使うので十分です。しかし!先のパイナップルの例のように日本人にとって単数でも複数でもどうでもいいというものではなく、「明らかにその背後の集合を想像できる」という場合、あるいはその概念そのものがすでに複数の実態の集合であるという場合には数字であろうが文字であろうが複数形、つまり配列変数を使うことになっちゃうんです。そこでスカラー変数に値を入れたらプログラマー失格。
 ああ、なるほど、欧米の方々はそんなことを考えていたのですね、と言いたくなるような単数と複数の考え方なのですが、例えばPerlなんですが、Perlはサブルーチンに何らかの引数(パラメーター)を渡す際に常時配列なんです。語弊を招いてしまうのでもう少し詳しくいうと、与えた引数はいずれにしろ複数で受け取るということになっております。これはさすがラリー・ウォールという感じでなかなかよいアイディアです。というのも渡された引数が単数であれ複数であれ、すでに複数であることを予見しつつ複数として受け取るということにしているんです。もしそれが単数であったならば複数の一番最初の部分だけを取り出せば単数になるってことです。こういうプログラミングの考え方は何だかちょっとおもしろいです。
 長ったらしい文章ですみません。