Index: [Article Count Order] [Thread]

Date:  Tue, 18 Mar 2003 10:39:27 +0900
From:  Shin <omura@....jp>
Subject:  [XP-jp:04237] Re: 浮動小数点演算や幾何演算のテスト
To:  extremeprogramming-jp@....jp
Message-Id:  <3C2ECEF366A58omura@....jp>
In-Reply-To:  <20030315152136Q.hiranabe@....jp>
References:  <20030315152136Q.hiranabe@....jp>
X-Mail-Count: 04237


おおむらです

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とマルチスレッドが外部表明でカバーできないのは、時間が主要な
ファクターになるからでしょうか? 何かもっと本質的な問題が
あるのかな??

マルチスレッドに関しては、たとえば、スレッド間のタイミングに
関するシナリオを書いて、それをシミュレーションしてくれる
ツールみたいのがあればいいなあと思っているのですが、そういう
ツールはないんでしょうか?

すいません、最後はとりとめがなくなってしまいました…
ううむ。全部か・・・