ポインタを制する者はプログラミングを制する
「ポインタを制する者はプログラミングを制する」と最近よく思うのだが、どうだろか?
another level of indirection
「もう一段の間接参照」を導入すると、コンピュータのほとんどの問題は解決できる。
この言葉、元々Edsger Dijkstraが言い出したそうだ。
「リファクタリング本」にも、「実践UML」にも、上記の一節が載っていて、いつも気になっていた。
結局は、ポインタそのものではないか!
例えば、複数アプリがメモリを気にしないでもいいように仮想メモリを導入したり、複雑になりがちなController層をアプリケーション・ファサード層とビジネス・デレゲート層に分けたり、イベントをCommandパターンに当てはめて使い回す等、応用例は多い。
ポインタの概念を突き詰めていけば、Aspectにも繋がる。
C言語に限らず、Javaでも、ポインタでつまずく初心者は多い。(うちの新人もそうだった)
ポインタが難しい原因は、一つは、メモリ上に本当のデータがどこに置かれているのか分かりにくい事と、もう一つは、ポインタの排他制御が面倒である事の二つではないか?
前者は、Javaのインスタンスは複数作成できる事実を知っていれば、それほど難しくない。「Java謎+落とし穴徹底解明」には、「マルチプルインスタンス」という言葉で説明している。
後者は、スレッド制御をどこまで理解しているか、が問われる。
「モニタ」「セマフォ」は又今度まとめよう。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- TwitterやFacebookは人力キュレーションツールとして使う(2022.10.02)
- 「現代病「集中できない」を知力に変える 読む力 最新スキル大全」の感想(2022.08.28)
- 人類は海辺から生まれた~水生類人猿説が面白い(2022.08.09)
- 戦前の日本人の気質はまだ成熟していない青年期と同じだった(2022.06.14)
- 物理学を攻略するためのマップ(2022.04.18)
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
コメント