私は他人とは違う

お題は[私は他人とは違う]となりました。


まぁあたりまえですね。私は他人とは違います。あなたも他人とは違います。
人というクラスをインスタンス化したわけです。具体的に示してみましょう。

#include
using namespace std;

class Hito
{
  public:
    Hito ();
};

Hito::Hito()
{
  cout << "うまれた" << endl;
}

int main ()
{
  Hito *watashi;
  Hito *tanin;
  try
  {
    watashi = new Hito;
    tanin = new Hito;
  }
  catch (...)
  {
    cout << "うまれなかった" << endl;
    return -1;
  }
  if (watashi == tanin)
  {
    cout << "わたしと他人は同じ" << endl;
  }
  else
  {
    cout << "私とあなたはちがう" << endl;
  }
  return 0;
}

それではコンパイルして実行してみましょう。

$ g++ hito.cpp
$ ./a.out
うまれた
うまれた
私とあなたはちがう
$

というわけで、私と他人は違います。納得しましたか?納得しましたよね?
しかしコンストラクタに細工されていたりわけのわからないdefineをコンパイル時にされたりしたらこれもうまくいかない可能性があります。いわば遺伝子組み換えですね。遺伝子組み換えの結果私とあなたが同じになる可能性があるということです。遺伝子の操作に関して、近年紙面を賑わしたこととしてはクローンが思い出されます。さてこのクローン、なぜ問題視されるのでしょう?

ソフトウェアでは頻繁にウイルスというものが問題になります。なぜソフトウェアでは頻繁にウイルスが大発生大繁殖大流行するのでしょうか。
これは、同じ種類のソフトウェアはインスタンスが異なっていても中身は全く同一のもの、すなわちクローンであるからです。つまり、同種のソフトウェアであればどのようなものであっても(一般論としては)常に同じように動作する一方、いずれかのソフトウェアのインスタンスに存在する問題は、それが同種のソフトウェアであれば異なるインスタンスのソフトウェアにも存在する問題なわけです。この特徴は、全ての同種のソフトウェアは同じ攻撃方法で弱点を突くことができるということを示しています。

さて、生物はなぜ個体毎に大きく特徴が異なるのでしょうか。
これは、各個体がもつ弱点を種として互いに補完するために他なりません。すなわち、同じ方法で攻撃した場合、特定の個体を死滅させることは可能であっても、個体ごとの違いがあるために別の個体には有効な攻撃とはならないということです。
このように個体それぞれが異なる弱点をもつことで、種全体としては同一の攻撃に対する被害を最小限に食い止めているわけです。

この事実は、あなたの欠点は別の人の長所であるということが生物としての実に優れたメカニズムであるということを表しています。
あなたがもつ欠点のために決して卑屈になってはいけません。あなたの欠点は誰か他の人が補っていて、同時に他人の欠点をあなたが補っているということを忘れないでください。あなたは完璧ではないからこそ人間という種の役に立っているのです。

若干話しが逸れました。これらは、クローンは種の滅亡に向かう行為であるということを意味しています。クローンの存在は種の繁栄にはなんの役にもたたないのです。

私は他人とはちがう、それが劣っているか、優れているかなんて小さいことはきにせず、そこに生物としてのすばらしさを感じてほしいのです。

(本記事は以前別のblogにて与えられたテーマに沿って記事を作成するという企画で書いたものです。)