自然言語とコンピュータ言語

自然言語(日本語とか英語など)とコンピュータ言語(JAVAとかC++など)は、どう違うんだろうと考えることはままある。

が、ふと、同じようにできるのでないかと思った。

例えば「私は人間である」というのは自然言語だ。これをJAVA的に表すと

String watashi = "人間";

しかし、これが変なのは、「私は学生です」もありえるが、一旦、人間ですを入れると学生ですが入れられなくなるのだ。

だったら、watashiをクラスにすればいい。

class Watashi {
    List<String> attributes = new ArrayList<>();
}

こういうクラスを作っておいて、

Watashi watashi = new Watashi()

とインスタンス化すれば、

watashi.attributes.add("人間");
watashi.attributes.add("学生");

などと、いくらでも私という存在の属性を加えていくことができる。逆にこのインスタンスがあれば、

String reply(String question){
  switch(question){
    case "あなたは何ですか":
        return "私は"+attributes.get(0)+"です";
    case "あなたは学生ですか":
        if(attributes.contain("学生")){
            return "はいそうです";
        }else{
            return "いえ、私は学生ではありません";
        }
   }
   return "わかりません";
}

などと、質問に対して答えることができる。これで、do(する)、playなども関数としてクラスに組み込むことができる。