2024年7月27日土曜日

プログラミング言語Juliaに立ちはだかるMATLABとFortranの壁

このエントリーをはてなブックマークに追加
Pocket

2012年2月に公開されてから12年が過ぎようといているのだが、プログラミング言語Juliaが伸びてこない。

Juliaは数値解析に特化した性質を持ち、数値解析における高速性と、多様なパッケージとそのリポジトリーなどの利便性を持つ無料で使えるオープンソースなソフトウェアなのだが、速度的に劣り値段は貼るプロプライエタリ製品のMATLABの後塵を拝し、速度はちょっと速いかも知れないが利便性に劣るFortranを抜ききれていない。

今月のTIOBE Indexでは34位で、PYPL Indexでは24位。2020年10月のTIOBE Indexでは32位で、PYPL Indexでは24位*1。4年間でほとんど位置が動いていない。数値解析以外には向いていないので、上位にはなかなか来ないであろうが、用途が同じMATLABやFortranと比較しても大して変わっていない。MATLABは相変わらずJuliaにいて、むしろTIOBE Indexでは2020年10月に37位だったFortranが9位につける謎の躍進を遂げている(PYPL Indexでは相変わらず圏外)。Fortranのブームは無いと思うが、Juliaのブームが来ていないことは分かる。

MATLABとFortranにも強みはあるし*2、学習コストを払ってJuliaに移行すべきほどの利点がないか、職場のスキルセットやレガシーコードがMATLABとFortranに固められているのかは分からないが、壁は高かった。JuliaはJuliaで難がある面もある。妙に型指定が求められる事が多い*3一方、抽象型はあるが使うな的なパフォーマンス考慮事項があるし*4、最適化のためにコンパイルしたバイナリーを配らない方針のせいかパッケージのロードが遅かった*5(注意:2024年1月1日のバージョン1.10から大幅改善)。これは些事だが、典型的な女性の名前であるため、検索するとドラマやポルノ女優の情報が大量にひっかかる。ルンゲ=クッタ法で数値計算をしてプロットするぐらいならば、FortranとRの組み合わせの方が簡単かも知れない*6

勝負がついたわけではない。SのクローンであるRがリリース後、統計解析ソフトウェアでもっとも一般的な存在になるまで20年ぐらいかかっている*7。Juliaはまだ12年目であるし、あと8年ぐらいでMATLABとFortranを抜きされるかも知れない。2024年1月1日のアップデートは、ライトユーザーを呼び込むためには大きな前進であった。Fortran用のパッケージマネージャー(fpm)が万が一普及したら、Juliaを使う有り難味は半減しそうではあるが。

*1関連記事:プログラミング言語Juliaの現在位置

*2MATLABは、MathWorks社がライブラリを整備して、それらが標準としての地位を確立しており、MathWorks社のウェブページから整理された情報が提供されている。大学や職場でライセンスを購入するので費用的な心配がなく、速度への欲求が低く、分量のあるコードを書かず、ソフトウェアよりも他の事に時間を使いたい数値解析ユーザーにとっては快適だ。

Fortranも言語仕様が現代化されてきており、計算に必要なライブラリを整備し、利用ノウハウを学べば使い勝手は高い。ファイル入出力などのI/Oまわりは煩雑で出来る事も乏しいが、ファイルに計算結果を保存しておいて、他のソフトウェアで利用する使い方ならば困ることはない。また、他の研究者との共同研究やレガシーコードの面倒を見ることを考えたり、スパコン(HPC)などの利用を考えると、Fortranは覚えざるを得ない現実もある。

*3JITでコンパイルして実行するため、人間のだらけた記述では最適化が上手くいかないのかも知れない。

*4Juliaのコードを更に高速化する方法 - MyEnigma

*52023年後半ぐらいに、MATLABで1秒で終わる数値解析が0.1秒になったが、プロットをしたらMATLABの描画よりも10秒余分に待たされたような話を見かけた。

*6Fortranで書いたバイナリファイルをRで読むのは難しくなく、「Modern fortranでルンゲクッタ法」のコードをちょっといじってRでプロットしてみたのだが、Fortran使いではない私でも困難は無かった。

*7そしてStataなどが使われなくなったわけでもない。

0 コメント:

コメントを投稿