プログラマの理解の基盤 (続き)

昨日のエントリで、檜山さんの問い掛けに反応してみたのですが、判ってはいましたが、読み返してみるとやはり中途半端ですね。特に後半の二点について。
今日も同じなのかもしれませんが、少しだけ補足しておきたいと思います。

代入文の右と左で使える式の形を構文ルールとして理解すべきでしょうか。けっこうバラエティありますよ。n = 3*x; a[1] = n + 2; *(p + 1) = a[i - n];とか。

左辺値と右辺値って、恥ずかしながら私は明確には理解できていません。
演算結果と式という位の認識です……

と書いたのですが、あまりに適当過ぎますね。
`演算結果と式' って当たり前過ぎなので何を言いたいのかサッパリ判らなくなっていますが、これは、

  • 式を評価した結果、代入式の左辺には演算結果を格納しようとするので、左辺値としては演算結果を格納可能な属性を持つ要素しか指定できない。
  • 代入式の右辺は、式として成立可能ならば何でも指定できる。

という様なことが言いたかったのでした。(これは C の言語仕様が元になっている考えですが、他言語でも概ね同じと解釈しています)
そして、これ以上のことは実は考えていないので、檜山さんの問い掛けに答えられる気がしなかったのですが、良く考えてみると、上に書いた事だけ理解していれば良いと言えるのかもしれないな、と思う様になりました。
勿論、上に書いた事がが正しいならばですが。

続いて、

メソッド内で使える「this って何?」と聞かれたら…。

については、自分自身と書きましたが、これには、オブジェクトやインスタンスという概念が理解できていないとならない様に思います。
なので、まずメソッドの実行を指示された (メッセージを受け取った) レシーバのオブジェクト、インスタンスを認識させた上で、そのターゲット自身を指すと説明しないとならないのでしょうかね。
メッセージを受け付けてメソッドを起動したオブジェクト (レシーバ) が、自分自身を指し示す指示語として `this' や `self' を認識するという感じでしょうか。

こうしてみると、前半の二点に比べ、後半の二点は「なんかすごく即物的なこと」という様な、プリミティブな事柄には触れずに説明が可能な気がしてきましたが、もう少し考えないとダメな気もします。

[追記]
考えてみたら、こういう `続き' のエントリを書いても元のエントリから送ったトラックバック先からは認識されないんじゃなかろうか、ということで、檜山さんのところの (やっぱりこれも) これまた続きのエントリにトラックバックを送っておきます。
檜山さんの中間報告エントリの内容に呼応した内容ではないのですが、それについてはまた書きたいと思っています。