科学はコンピュータモデリングに依存している - だから、それがうまくいかないときはどうなりますか?

ペニシリンの変遷の発見から相対性理論と量子力学の理論まで、科学がコンピュータの前であっても驚異的なスピードで進歩しました。 これの多くは、科学的方法の堅牢性に依存しています。科学的結果は、他の科学者によって複製され、拡張されて検証されます。

しかし、私たちが科学をやり遂げる方法は変化しています。自然を理解するために複雑なコンピュータモデルにますます依存しています。 そして、これらのモデルは、再現することがほぼ不可能であることが判明しました。つまり、科学の重要な礎石が挑戦されています。 この変化の現実の影響には何があり、何ができるでしょうか?

「自然哲学」として知られる前近代科学は実証的であった。 経験科学は過去の観測を用いて未来についての予測を行い、その後テストすることができる。 ティコ・ブラヘ、16世紀のデンマークの天文学者は、このように天を正確かつ包括的に観察しました。

近代科学は、しかし、理論的です。 理論科学はまた、予測を行い、それが数学的モデルからではなく、以前の観測から、それらを導出します。 運動のアイザック・ニュートンの法則を考える、など 重力の逆2乗則.

たとえば、太陽の周りの地球の軌道を表す方程式があります。 この方程式を使用して、特定の変数を挿入してソリューションがどのように変化するかを見ることができるコンピュータモデルを構築することができます。 その日に将来の日付を入れて地球の位置を読み取ることができます。 他の惑星系をモデル化するために同じプログラムを使うこともできます - それはすべて同じ数学に基づいています。 あなたがしなければならないのは、関連するボディーのさまざまな質量やさまざまなプロパティを差し込むだけです。


インナーセルフ購読グラフィック


そのような数学的方程式は利用可能であるときには素晴らしいですが、しばしばそうではありません。 例えば、我々は、いわゆる「方程式」を解く簡単な方程式は存在しないことを知っている。三体問題月、地球と太陽のような - 」、その3体の周りを周回し、重力によってお互いに影響を説明しています。

現在の科学の多くは、さらに複雑なシステムを扱い、同様に正確な解決策を欠いています。 そのようなモデルは、システムがある瞬間から次の瞬間にどのように変化するかを記述する「計算的」でなければなりません。 しかし、このように進化を「シミュレート」すること以外に、将来のある時点で正確な状態を決定する方法はありません。 天気予報はおなじみの例です。 1950のコンピュータの登場まで、実際に起こったよりも早く将来の天気を予測することは不可能でした。

現在の科学は、通常、複雑なシステムを記述する数学的モデルを工夫し、次にこれを計算シミュレーションに変え、モデルを検証するためにシミュレーションを実行して予測を行います。

モデリングが失敗したとき

モデリングは、天体物理学や 気候予測 バイオインフォマティクスと経済学 しかし〜がある 議論が増える この科学は再生を通じて検証することが難しいという事実について

実験的な方法を言葉で単に記述するだけでは不十分であることが分かります。 これは、英語などの自然言語が計算を正確に記述するにはあまりにも漠然としているからです。 結局のところ、プログラマがプログラミング言語を使用する理由があります。 ソフトウェア開発における最大の課題の1つは、あいまいな要件を正確な動作仕様に変換することです。

人類は - 科学者さえも - すべてのことが誤りである。 プログラムに情報を変換すると、途中でバグが発生する可能性がほとんどあります。 例えば、多くの科学者は、スプレッドシートなどのデータ探索ツールに依存しています。スプレッドシートは、使いやすさのために設計されており、堅牢性のために設計されていません。 スプレッドシート内のセルの間違った範囲を集計するだけで、警告は表示されません。 これは、 方法論上の欠陥 米国共和党が暫定政策の根拠としていた論文の中で、

同様に、 最近の研究 米国企業Enronの調査中に公開された15,770スプレッドシートには、少なくとも1つの公式を含むスプレッドシートの24%に空白セルの追加などの明らかなバグがあることが示されました。

自然科学では、 火星気候オブザーバー火星の気候を調べるために1998で打ち上げられた宇宙探査機は1年後に失われました。制御ソフトウェアの1つの部分が誤ってメートル法単位の代わりに帝国を使用したからです。 別の研究で 同じデータセット、アルゴリズム、プログラミング言語を使用して - - 同じ地球科学実験の9の独立した実装で得られた結果はほとんど一致を示しました。

さらに、研究論文の読者が著者の正確な意味をうまく解釈し、それをプログラムに完璧に変換できたとしても、それを実行する際には落とし穴がまだあります。特に厄介な問題の 42 つは、コンピューターが数値を処理する方法から発生します。コンピュータは 17 や -3.14 などの整数を完全な精度で操作できますが、??2 や ?1.414?XNUMX などの実数を操作するための標準的な手法では、おおよその精度しか許可されません。これらの近似は、同じ値を計算する一見同等の方法で次のことが可能であることを意味します。 異なる結果をもたらす.

では、何ができるのですか? 専門家のソフトウェア開発者であっても、正確なソフトウェアを確実に生産することができない場合、科学者のようなアマチュアプログラマーにはどんな希望がありますか?

1つの作業は、経済市場のエージェントの行動や細胞間の薬物の拡散など、特定のクラスの問題に合わせた「ドメイン固有の」プログラミング言語を設計するためのツールを作成することです。 これらは、専門家が一般的なプログラミング言語でそれらを間接的にエンコードするのではなく、慣れ親しんだ用語で直接計算を記述することをはるかに容易にすることを目指しています。

第2のアプローチは、より表現力豊かであるがユーザフレンドリーな「タイプシステム」をプログラムのために設計しようとするものである。 これらは、スプレッドシート内の空白セルや異なる単位で値を混在させるなど、「ばかげた」エラーをキャッチするのが簡単になります。 しかし、すべての論理エラーを排除することはできません。 3番目の行は、近似の問題を避けるために、正確な算術演算に使用できるコードのライブラリを開発することです。

これらのアプローチが今後の問題を解決するのに役立ち、あるいは少なくともリスクの一部を排除する可能性があります。 結局のところ、世界は科学を必要とし、科学者はコンピュータが必要です。これはすぐには変わることはないでしょう。

著者について

ジェレミーギボンズ、オックスフォード大学コンピューティング教授 プログラミング言語研究テーマの責任者。

この記事はもともと会話に登場しました

関連書籍:

at InnerSelfMarketとAmazon