« 中国の「ソースコード強制開示」 | トップページ | 抽象化のステップ »

2009年5月10日 (日)

X = X + 1 ? 意味わからん

と、人生で初めてコンピュータ・プログラムというものをみたときに思いました。言語は、 MSX-BASIC でした。

しばらくプログラムを眺めているうちに、右辺の X が、”古い X ”で、左辺の X は、”新しい X ”を意味している、X は X でも、違う X を意味しているらしい、ということに気付いたのですが。

X = X + 1 というのは、一文で read-modify-write の 3 つの操作を表現していますから、コンピュータをよく知らない人間には、理解するのは難しい文なのかもしれませんね。さらに、等号というなじみのある記号を、「記憶域への代入」という、別の意味で使われている、というのも理解の妨げになるでしょう。

このことを思い出したきっかけは、「Java 並行処理プログラミング」にある、以下のサンプルコード。

public class Holder {
  private int n;

  public Holder(int n) { this.n = n; }

  public void assertSanity() {
    if (n != n) {
      throw new AssertionError("This statement is false.");
    }
  }
}

assertSanity メソッドを呼び出すと、 AssertionError を投げることがある、というものですが、一瞬、意味がわかりませんでした。

|

« 中国の「ソースコード強制開示」 | トップページ | 抽象化のステップ »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/80472/29542168

この記事へのトラックバック一覧です: X = X + 1 ? 意味わからん:

« 中国の「ソースコード強制開示」 | トップページ | 抽象化のステップ »