Juliaは、高度な計算科学や
数値解析の分野から汎用プログラミングまでをカバーする高水準の動的
プログラミング言語です。
並行計算、
並列計算、
分散コンピューティングに対応し、
C言語やFortranへのForeign function interfaceをアダプターパターンなしで利用できます。ガベージコレクション、先行評価、
浮動小数点数計算、線形代数学、高速フーリエ変換、
正規表現照合などのライブラリを備えています。
特徴
多重ディスパッチ: Juliaの中核となる機能で、引数の型に基づいて実行する関数を動的に選択します。
動的型付け: 変数の型を明示的に宣言する必要がなく、柔軟なプログラミングが可能です。
高速な実行速度: LLVMコンパイラフレームワークを利用し、C言語に匹敵するほどの高速な実行速度を実現しています。特に数値計算においては、PythonやR言語よりも大幅に高速です。
パッケージマネージャ: 組み込みのパッケージマネージャにより、外部ライブラリのインストールや管理が容易です。
メタプログラミング: Lispのようなマクロやメタプログラミング機能を備え、コード生成や最適化を柔軟に行えます。
相互運用性: C言語やFortranのコードを直接呼び出すことができ、
Python、
R言語、
C++、
Java、
SQLなどとの連携も可能です。
相互運用性の詳細
Juliaは、@ccallマクロを使用して
C言語やFortranのライブラリを直接呼び出すことができます。また、外部ライブラリを使用することで、
Python、
R言語、
C++、
Java、
SQLなど様々な言語やシステムと相互運用できます。
例えば、
C言語のprintf関数を呼び出す例を以下に示します。
julia
@ccall printf("Hello, world!
"::Cstring)::Cint
Pythonとの相互運用では、
PythonCallパッケージを利用することで、Juliaから
Pythonのコードを呼び出したり、
PythonからJuliaのコードを呼び出したりできます。この際、
NumPyのようなライブラリも連携可能です。ただし、
NumPyはrow-major(行優先)で配列のインデックスが0から始まるのに対し、Juliaはcolumn-major(列優先)で配列のインデックスが1から始まるという違いに注意が必要です。
以下はJuliaから
Pythonの
NumPyを呼び出す例です。
julia
using
PythonCall
py"""
import numpy as np
a = np.array(
1, 2], [3, 4)
print(a)
"""
逆に、
PythonからJuliaを呼び出すことも可能です。Juliaの高速な計算能力を活かし、計算量の多い部分だけをJuliaで処理するなどの使い方ができます。
python
from juliacall import Main as jl
jl.eval("using LinearAlgebra")
a = jl.eval("rand(3,3)")
b = jl.eval("rand(3,3)")
c = jl.eval("a
b")
print(c)
コード例
Hello World
Juliaで"Hello, world!"と表示するコードは以下の通りです。
julia
println("Hello, world!")
行列積
Juliaで行列Aと行列Bの行列積を計算するコードは以下の通りです。
julia
A = [1 2; 3 4]
B = [5 6; 7 8]
C = A B
println(C)
このように、MATLABや
Pythonの
NumPyと同様に、簡潔に数学的な操作を記述できます。特に、行列積の計算はBLASライブラリ(デフォルトは
OpenBLAS)を呼び出しているだけで、
C言語やFortranと同程度の速度で動作します。
沿革
Juliaの開発は2009年に始まり、2012年2月にオープンソースとして公開されました。2018年8月8日にバージョン1.0がリリースされ、2020年8月1日にバージョン1.5がリリースされました。
2018年12月には、開発者の3人がSIAM(アメリカ工業及び応用数学会)によるジェームズ・H・ウィルキンソン賞を受賞しました。
関連項目
Fortran
Mathematica
NumPy
SciPy
R言語
MATLAB
GNU Octave
参考文献
数多くの書籍や論文でJuliaに関する情報が提供されています。以下にいくつかの参考文献を挙げます。
洋書
Nagar, Sandeep (2017). Beginning Julia Programming-For Engineers and Scientists. Springer
Bezanson, J; Edelman, A; Karpinski, S; Shah, V. B (2017). Julia: A fresh approach to numerical computing. 59. SIAM Review. pp. 65-98.
Ben Lauwens and Allen B. Downey: "Think Julia: How to Think Like a Computer Scientist", Oreilly & Associates Inc, ISBN 978-1492045038 (2019年5月).
Eric Darve and Mary Wootters: "Numerical Linear Algebra with Julia", SIAM, ISBN 978-1-611976-54-0 (2021).
Tobin A Driscoll and Richard J. Braun: "Fundamentals of Numerical Computation: Julia Edition", SIAM, ISBN 978-1-611977-00-4 (2022年8月).
Noel Kalicharan: "Julia - Bit by Bit: Programming for Beginners", Springer, ISBN 978-3-030-73935-5 (2021).
C. T. Kelley: "Solving Nonlinear Equations with Iterative Methods: Solvers and Examples in Julia", SIAM, ISBN 978-1-611977-26-4(2022年).
Clemens Heitzinger: "Algorithms with Julia", Springer, ISBN 978-3-031-16559-7 (2022).
和書
Joshi, Anshul 著、石井一夫、岩中公紀、太田博三、大前奈月、兼松正人、古徳純一、菅野剛、高尾克也、中村和敬 訳『Juliaデータサイエンス―Juliaを使って自分でゼロから作るデータサイエンス世界の探索』NTS、2017年(原著2016年)。
Kamiński, Bogumił、Szufel, Przemysław 著、中田秀基 訳『Juliaプログラミングクックブック 言語仕様からデータ分析、機械学習、数値計算まで』オライリー・ジャパン、2019年10月。
進藤裕之, 佐藤建太:「1から始める Juliaプログラミング」、コロナ社、ISBN 978-4339029055(2020年3月26日)。
石井一夫:「基礎から学ぶJulia 基本文法からデータサイエンスまで」、SCC(エスシーシー)、ISBN 978-4886470225(2021年1月25日)。
Tanmay Bakshi, 菅原 宏治 (訳):「Julia超入門」、東京化学同人、ISBN 978-4807920211(2021年2月14日)。
永井佑紀:「1週間で学べる! Julia数値計算プログラミング」、講談社 (KS情報科学専門書)、ISBN 978-4065282823(2022年6月23日)。
後藤俊介:「実践Julia入門」、技術評論社、ISBN 978-4297133504(2023年3月15日)。
佐藤建太:「Juliaプログラミング大全」、講談社、ISBN 978-4-06-531819-5 (2023年6月1日)。
小高知宏:「Juliaによる数値計算とシミュレーション」、オーム社、ISBN 978-4274230493 (2023年6月20日)。
永井佑紀:「Juliaではじめる数値計算入門」、技術評論社、ISBN 978-4-297-14128-8 (2024年5月13日).
外部リンク
公式ウェブサイト
The Julia Manual
Tobin A. Driscoll and Richard J. Braun: "Fundamentals of Numerical Computation" ※ Julia version
佐藤純一, 鷲沢嘉一「動的プログラミング言語Juliaの紹介」
Ben Lauwens and Allen Downey: "Think Julia: How to Think Like a Computer Scientist", (2018).
永井佑紀:「物理で使う数値計算入門:Julia言語による簡単数値計算」
Julia Computing Receives DARPA Award to Accelerate Electronics Simulation by 1,000x
Julia in physicsでのチュートリアル講演
Julia でデータサイエンス 統計検定や一般化線形モデルなどの計算とプロットの完結コード
「数学と物理におけるJulilaの活用」、マス・フォア・インダストリ研究 No.27、九州大学(2024年)
「Julia in physics2024」、東京大学