必要なのはエクセルなのか

計算式がこみいってるものをチマチマ実装するのをやめにしたいのです。ある,ややこしい計算があるとします。物理計算とか構造計算です。計算式は,専門家さんが考えます。いろんな公式を駆使します。すると出てくるのは,式1とか式2とかです。場合分けも山ほど出てきます。条件Aとか条件Bとかです。単位にも注意しなければなりません。[mm]だったり,[MPa]だったり,無単位[-]だったりします。

確かにMatlabあたりを駆使すれば,Mファイルでうまくまとめることができれば,専門家さん自身が使いこなしてくれれば,勝手にドーゾ,な感じです。

しかしながらそれは,カンペキに準備され,カンペキにテストされた一枚岩を磨き上げる行為です。頻繁に専門家さんが計算式を更新したりすることには用をなしません。専門家さんと実装屋さんがタッグまたはチームを組んで,継続的にメンテするなら,そういうやりかたでも構わないでしょう。

プログラムで計算式を作ると,依存関係は実装で静的に決まってしまいます。つまり,計算式を実行する順序に気をつけなければならないのです。ある計算式1の中に出てくる変数Xは,別の計算式2で定義されている,と言うような場合です。計算式2のプログラムを呼び出してから,1のプログラムを呼び出さないと,エライことになります。ほとんどの場合,エラーも出ないでしょう。しかしそんなことさえも21世紀のソフトウェア技術は解決してくれないのでしょうか?

欲を言えば,専門家さんが書いた計算式の導出ドキュメントや単位も統一的に取り扱えないとお話になりません。数式処理系Mathaticaを使えば,解決できると言うのでしょうか?

もっと低レベルな問題もあります。分数やら平方根やらが入れ子になった,ややこしい計算式をプログラムに書き下してみてください。そしてそれが間違いなく元の計算式と同一のものであることをテストするにはどうすれば良いですか?ここでは計算順序による精度悪化などという高尚な問題は考えません。非常に低レベルな問題です。

確実に書き下したと,確認する方法を示せないのです。気をつけたってダメなんですよ。ダブルチェックしてもらいますか。代表的な値で検算しますか。昭和のニオイがプンプンしますなぁ。

私が考えたこれらの小さな問題に対する小さな答えはこうです。書き下した計算式から元の数式を生成すればよいのです。いまどきなら,MathMLなどもあります。TeXでも構わないかもしれません。生成された計算式を専門家さんがいつでも参照できるようなシステムが必要となります。つまり計算式をハードコーディングしてはいけません。計算式自体を動的に取り扱えることが必要となります。

副作用として,計算式同士の依存関係を動的に検出して正しい計算順序をシステムが自ら決定することが出来ます。ややこしいルールベースやトラックバックは不要です。単なるマッチングで構いません。

計算順序を決定できるなら,計算式を統合して計算のツリーがを完成させることができます。あとはこれをコンパイルするなりインタプリタで解釈するなり好きにすれば宜しい。

私の考えでは計算式を書き下すのはそれでもなお実装屋です。数式をGUIで編集できるようになっても,ここで示した答えの一部を利用しなければ他の問題は何ら解決されないのです。

ばらばらの計算式を書く,書き下す,システムに放り込む。それを繰り返すだけで,ややこしい計算をこなせるのです。

おっと条件による場合分けについて書き漏らしています。またいずれ書かないでしょう。

補足がここ:カルキングって名前で損するタイプだよね〜に。