|
Juliaのロゴ | |
| パラダイム |
オブジェクト指向プログラミング、関数型プログラミング、命令型プログラミング、マルチパラダイムプログラミング、ベクトル化、メタプログラミング、手続き型プログラミング、並列計算、多重ディスパッチ |
|---|---|
| 登場時期 | 2012年8月23日 |
| 開発者 |
Jeff Bezanson、Stefan Karpinski、Alan Edelman、Viral B. Shah |
| 最新リリース | 1.13.0/ 2026-09-09 |
| 型付け | 付随型アノテーション及び型推論の動的プログラミング言語 |
| 影響を受けた言語 |
MATLAB、Python、LISP、C言語、FORTRAN、NumPy、Lua、R言語、Scheme、Perl、Ruby |
| プラットフォーム |
Linux、Microsoft Windows、macOS |
| ライセンス | MITライセンス |
| ウェブサイト | |
| 拡張子 |
jl |
Julia(ジュリア)は、科学技術計算および数値解析を主な用途として設計された汎用プログラミング言語である。2012年にMITの研究者らによって公開された。動的型付けを採用し、LLVMを基盤とするJITコンパイル方式により実行時にネイティブコードを生成する。
高水準言語の記述性とコンパイル言語に匹敵する性能を志向して設計されており、並列計算、分散処理、C言語およびFortranとの相互運用性を備えるオープンソースソフトウェアである。
Juliaには、@ccall マクロを使用してC言語やFortranのライブラリを呼び出すための組み込みサポートがある。外部ライブラリを使用し、Python、R言語、C++、Java、SQLなどと相互運用し、関数を呼び出したり呼び出されたりすることもできる。
C言語の printf を呼び出す例。
@ccall printf("Hello, World!\n"::Cstring)::Cvoid
Python とは同じ動的型付けのプログラミング言語であり類似点が多いため、相互運用がしやすい。ただし、NumPyはC言語と同じくrow-majorで配列の添え字は0から始まるが、JuliaはFortranと同じくcolumn-majorで配列の添え字は1から始まる。下記は Julia の側から PythonCall を使用した例である。
using PythonCall
np = pyimport("numpy")
print(np.array([1, 2, 3], dtype=np.float32))
同様に JuliaCall により、Python の側から Julia を呼び出すことも可能であり、Julia は計算が高速にできるので、計算量が多い部分だけを Julia により計算するということも可能である。下記は Python の側から JuliaCall を使用した例で、Julia の多次元配列と NumPy を組み合わせて使用している。
from juliacall import Main as jl
import numpy as np
np.array(jl.rand(range(10), 3, 5))
JuliaではHello worldを次のように書く。
println("Hello, World!")
次のコードはJuliaで書いた行列AとBの行列積である。
A = randn(10, 10)
B = randn(10, 10)
C = A * B
このように、MATLABや、PythonのライブラリであるNumPyなどと同様に、数学的な操作を簡潔に書けるうえに、行列積に関しては単にBLASのライブラリ(デフォルトはOpenBLAS)を呼び出しているだけだが、行列積を含めて多くの機能がC言語やFortranと同程度の速度で動作する。