2007年12月06日

Peter Van-Roy、Seif Haridi『コンピュータプログラミングの概念・技法・モデル』

 Peter Van-Roy、Seif Haridi『コンピュータプログラミングの概念・技法・モデル』(翔泳社)を読んだ。読んだというか、ページを最後までめくった。特に後半は、書いてあることを適当に妄想しながら読んだ。理解しようとして読めば、おそらく半年はかかる。
 
・データフロー変数が格好いい
 (未束縛の変数を読もうとすると、その変数が束縛されるまでスレッドがブロックされるという変数)
 
・遅延実行構文が格好いい
 (X = ByNeed hoge と書くと、Xを読もうとするまで hoge の実行が遅延される)
 
・「継承は、プログラムを構造化するための、1つのプログラミングツールにすぎない、と見る。この見方は全く奨められない。クラスが代替性を満たさないからである。バグと悪い設計が後を絶たないのは、この見方のせいである。名前は控えるが、大きな商業プロジェクトが破綻した例がある。」(532ページ)「数年前、ある有名な会社がOOPに基づく野心的なプロジェクトを立ち上げた。数十億ドルの予算にもかかわらず、プロジェクトは失敗に終わった。その原因の1つがOOPの誤用であり、特に継承に関してであった。」(535ページ)というのはTaligentのことか?
 (Taligent: 「オブジェクト指向OS」なるものを作って売ろうとしたチャレンジャー。10年以上も前に潰れたが、Javaに呪いをかけた(1, 2)ことで今も悪名を轟かせる)
 
・制約プログラミングは表記法に工夫の余地がある気がする。制約プログラミングが普及しないのは、表記法のせいではないか。
 
・プログラミング言語の計算モデルにありうべき拡張として、「1. 動的スコープ。2. 膜(membrane)。3. トランザクション支援。動的スコープとは、コンポーネントの振る舞いが状況によって変化することである。膜とは、プログラムの一部に囲いを巡らし、その囲いを通して参照しようとすると「何かが起きる(something happens)」ようにすることである。これは、データ構造や手続き値の内部に隠蔽されている参照についても同様である。トランザクション支援とは、あるコンポーネントの実行が成功裡に終了しなければキャンセルできるようにすることである。」(870ページ)
 トランザクション支援は、トランザクションという概念の構成(ファントムリードをどう考えるか等)に踏み込むので、あれこれ妄想すると楽しい。
 
 ろくに読んでいないので、お勧めかどうかよくわからない。

Posted by hajime at 2007年12月06日 18:50
Comments
Post a comment






Remember personal info?