【じゅりあ】

Julia(ジュリア) とは?

最終更新:
💡 数値計算を、対話的に書いて性能も工夫する

数値計算や科学技術計算で活用される汎用プログラミング言語。動的な書き方とコンパイルによる高性能を目指し、引数の型の組み合わせで処理を選ぶ多重ディスパッチを重視する。

📌 このページのポイント
Julia:数値計算と多重ディスパッチ同じ関数名でも、引数の型を見て適用できるメソッドを選ぶ整数 + 整数整数向けの処理行列 + 行列行列向けの処理初回の待ち時間と、計算の性能を分けて測る
多重ディスパッチの簡略例。すべての引数の型の組み合わせを見て、適用できる最も具体的なメソッドを選びます。
ひよこ ひよこ
Juliaは、数値計算だけの言語?
ペンギン先生 ペンギン先生
数値計算や科学技術計算に強みがあるけれど、汎用言語だよ。対話的にコードを書けて、配列や数式を扱える。Webアプリや他のプログラムとの連携などにも使えるんだ。
ひよこ ひよこ
Cと同じくらい速いの?
ペンギン先生 ペンギン先生
高性能を目指した言語で、LLVMを使って機械語へコンパイルするよ。ただし何を書いても常にCと同じ速さになるわけではない。アルゴリズム、型の使い方、メモリー確保、ライブラリーや入力条件で変わるので、必要な処理を実測しよう。
ひよこ ひよこ
最初の実行が遅いのは、なぜ?
ペンギン先生 ペンギン先生
初めて呼ぶメソッドなどでは、コンパイルに時間がかかることがあるよ。パッケージの読み込みにも時間がかかる場合がある。初回の待ち時間と、準備が終わったあとの計算時間を分けて測ると、使い方に合うか判断しやすいんだ。
ひよこ ひよこ
多重ディスパッチって何?
ペンギン先生 ペンギン先生
同じ関数でも、引数の型の組み合わせに合うメソッドを選ぶ仕組みだよ。たとえば整数同士の足し算と、行列同士の足し算では扱い方が違う。Juliaはすべての引数の型を見て、適用できる中で最も具体的なメソッドを選ぶ。Juliaだけに存在する発明という意味ではないよ。
ひよこ ひよこ
Pythonから、全部移すべき?
ペンギン先生 ペンギン先生
目的と既存のコードによるよ。必要なライブラリー、開発環境、運用やチームの経験も考えよう。JuliaにはPythonやC、Fortranなどとの連携手段もある。計算の一部で使う方法も検討できるけれど、連携の手間やデータのやり取りも含めて確かめるといいね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Julia」って出てきたら「数値計算に強みがあり、書きやすさと性能を目指すプログラミング言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Julia」 = プログラミング言語の名前
💬 数値計算だけでなく、アプリ開発や他の言語との連携にも使えるよ。

参考資料

← 用語集にもどる