現在、微分方程式の数値システムを解くためにCと一部のFORTRANを使用しています。
私はこれらの両方の言語に少しうんざりしていますが、(かなり)効率的なコードが必要です... OCamlに切り替えることを考えています。
その価値はありますか?
現在、微分方程式の数値システムを解くためにCと一部のFORTRANを使用しています。
私はこれらの両方の言語に少しうんざりしていますが、(かなり)効率的なコードが必要です... OCamlに切り替えることを考えています。
その価値はありますか?
回答:
ジェーン・ストリート・キャピタルの人々は確かにそう思います。彼らは2009年にCMUで OCamlの使用について講演しました。
私が考えることができる唯一の欠点は、マトリックスが一級市民ではないことです。
まず第一に、数値計算では、高水準言語は低水準言語よりも長期的にははるかに有用であるという珍しい発言をしたいと思います。天気予報で使用される数値シミュレーションで働いているフラウンホーファー研究所の研究者を大まかに引用させてください。
過去10年間で、CPUは1000倍速くなり、アルゴリズムは1000 * 1000速くなりました。これは、昨日のCPUで実行されている今日のアルゴリズムが、今日のCPUで実行されている昨日のアルゴリズムを1000倍上回ることを意味します。
明らかに、ディスクやRAMなどのCPU速度やアルゴリズムとして考慮すべきパラメーターは他にもたくさんありますが、このステートメントは、低レベルの言語を選択した場合、間違った要因(1000ではなく1000)に焦点を当てていることを理解するのに役立ちます1000 * 1000)。
もちろん、特定の数値アルゴリズムを考えると、CまたはFortranが(実際にはそうではない)大きな要因でOCamlまたはCommon Lispを上回ることが期待できます。しかし、実際に数値問題に興味があり、アルゴリズムを改善したい場合は、アイデアを高レベルで表現し、アルゴリズムを簡単に改善できる高水準言語を選択する必要があります。
補足として、OCamlで数値コードを記述することを検討する場合は、OCamlが関数、インライン関数、unbox floatにパラメーターを渡す方法について確実に知っておく必要があります。これらすべての詳細は、Xavier Leroyのノートに記載されています。
少なくともマルチスレッドプログラミングを見るまでは、OCamlが好きでした。