おおむらです
Sat, 15 Mar 2003 15:21:36 +0900
hiranabe@....jp wrote:
>■ Jon Louis Bentley,Programming Pearls:,Addison
>Wesley Publishing Company,1988,ISBN 0201118890
>訳:野下浩平,プログラマ設計の着想,近代科学社,1989, ISBN 4-7649-0158-7
>
>■ Jon Louis Bentley,More Programming Pearls:Confessions of a Coder,Addison
>Wesley Publishing Company,1988,ISBN 0201118890
>訳:野下浩平/古郡廷治,プログラマのうちあけ話−続・プログラム設計の着想,近代科
>学社,1991,ISBN 4764901773
思わず反応してしまいました。
この本は、すごく好きです。CACMに連載中も、とりあえずこれだけは読んでました。
assertの話以外にも、面白い話題満載ですね。
私はassertより前にプログラムの証明のFloydの方法を知っていたのですが、
実行できるものであるという意識がなかったので、コードの中の実行可能
なassertを見たときは、なんてゆうか、こんなこともできるんだ♪
みたいな驚きがありました。
>歴史的な進化としては,
>
> 内部表明 -> DbC -> 外部表明
という分析は面白いですね。
>私が感じているのは,多くの内部 assert は,メソッドを細かく分
>割することで,外部表明に移行することが可能だいうことです.
本来は、オブジェクト指向にかかわらず、assertのように
プログラムの正しさというか、ある時点で成立する/してほしい条件を
意識しながらコードを作ると、自然とプログラムは機能単位の関数に
分解していくことになると思います。
正しさを意識しながらプログラムを組んでいくと、自然と、
goto文を使わなくなりますし、ループや概念の塊が
あったら自然と、関数を作るようになります。
理論としての帰結ではなくて、正しいことを言いやすいように
コードを書いていくという姿勢が、こういう結果になると
思うのです。
でも、現実は、平鍋さんのおっしゃるように、プログラミングの
概念(Mayerさんのはプログラムの理論みたいな気もするけど)が
主導できてるんですよね。
プログラムの正しさに着目するような立場から、オブジェクト指向
のようなパラダイムが生まれてきてたら、面白かろうなと思ったり
もします。それとも既存かな?
>となりますが,現在でも,内部表明が有効として知られてる分野
>に,「アルゴリズム」,「OS」,「マルチスレッド」が,あると思
>います.複雑な数値計算以外にも,OS やマルチスレッドの分野
>は,assert 無しでコーディング/デバッグするのが非常に難しいでしょう.
>現在は,ユニットテストの流行によってこの傾向が進んで来てい
>る.ただし,うまく分割できないものは,やはり残るのではない
>か,と思っています.それの代表例が先に上げた3つの分野です.
ここらへんの話、概観したことがないので興味があります。
「アルゴリズム」で分けるとすごく漠然としているので、どうなの
かなあと思います。文脈からは「数値計算」のことを言われているように
思いますが、門外漢なのでよくわからず。
OSとマルチスレッドが外部表明でカバーできないのは、時間が主要な
ファクターになるからでしょうか? 何かもっと本質的な問題が
あるのかな??
マルチスレッドに関しては、たとえば、スレッド間のタイミングに
関するシナリオを書いて、それをシミュレーションしてくれる
ツールみたいのがあればいいなあと思っているのですが、そういう
ツールはないんでしょうか?
すいません、最後はとりとめがなくなってしまいました…
ううむ。全部か・・・