Julia (プログラミング言語)
Juliaのロゴ | |
パラダイム | オブジェクト指向プログラミング、関数型プログラミング、命令型プログラミング、マルチパラダイムプログラミング、配列プログラミング、メタプログラミング、手続き型プログラミング、並列計算、多重ディスパッチ |
---|---|
登場時期 | 2012年 |
開発者 | Jeff Bezanson、Stefan Karpinski、Alan Edelman、Viral B. Shah |
最新リリース | 1.10.3/ 2024年4月30日[1] |
型付け | 付随型アノテーション及び型推論の動的プログラミング言語 |
影響を受けた言語 | MATLAB、Python、LISP、C言語、FORTRAN、NumPy、Lua、R言語、Scheme、Perl、Ruby |
プラットフォーム | Linux、Microsoft Windows、macOS |
ライセンス | MIT License |
ウェブサイト |
julialang |
拡張子 | jl |
Julia︵ジュリア︶は、汎用プログラミング言語水準から高度の計算科学や数値解析水準まで対処するよう設計された高水準言語かつ仕様記述言語、及び動的プログラミング言語である[2][3][4]。並行計算、並列計算、分散コンピューティング、及びAdapter パターン不要でC言語やFORTRANへのForeign function interfaceに対応している。ガベージコレクション[5]を行い先行評価を用いるほか、浮動小数点数計算、線型代数学、高速フーリエ変換、正規表現照合のライブラリを利用できる。
LLVMコンパイラフレームワークを用いてC言語、C++、Schemeで組まれており、標準ライブラリの殆どは独自に実装された[6]。注目すべき特徴は速度であり、完全に最適化したC言語︵PythonやR言語よりも桁違いに速い場合が多い︶と比べて計算パフォーマンスの低下は半分程度であると知られている[6]。
一方で実行時には、JITコンパイラによって処理されるため、表面的にはPythonの様にインタプリタとして動作する。
特徴[編集]
●多重ディスパッチ ●動的型付け ●C言語などの静的型付け言語に迫る速い実行速度 ●パッケージマネージャが組み込まれている ●Lispのようなマクロやその他のメタプログラミング機能 ●C言語とFortranのコードの呼び出し相互運用性[編集]
Juliaには、@ccall
マクロを使用してC言語やFortranのライブラリを呼び出すための組み込みサポートがある。外部ライブラリを使用し、Python[7]、R言語[8]、C++[9]、Java[10]、SQL[11][12][13][14]などと相互運用し、関数を呼び出したり呼び出されたりすることもできる。
C言語の printf を呼び出す例。
@ccall printf("Hello, World!\n"::Cstring)::Cvoid
Python とは同じ動的型付けのプログラミング言語で似ている点も多いため、相互運用がしやすい。下記は Julia から PythonCall を使用した例。[15]
using PythonCall
np = pyimport("numpy")
print(np.array([1, 2, 3], dtype=np.float32))
同様に JuliaCall により、Python から Julia を呼び出すことも可能で、Julia は計算が高速なので、計算量が多い部分だけを Julia で計算させるということも可能である。下記は Python から JuliaCall を使用した例。Julia の多次元配列と NumPy を組み合わせて使用している。[16]
from juliacall import Main as jl
import numpy as np
np.array(jl.rand(range(10), 3, 5))
コード例[編集]
Hello world[編集]
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[17]︶を呼び出しているだけだが、行列積を含めて多くの機能がC言語やFortranと同程度の速度で動作する[18]。
沿革[編集]
●2009年に開発が始まり、2012年2月にオープンソースとして公表された[19][20]。 ●2018年8月8日にバージョン1.0がリリースされ、[21][22][23]2020年8月1日にバージョン1.5がリリースされた[24]。 ●2018年12月、開発者の3人がSIAM︵アメリカ工業及び応用数学会︶によるジェームズ・H・ウィルキンソン賞を受賞したことが発表された[25]。関連項目[編集]
●Fortran ●Mathematica ●NumPy ●SciPy ●R言語 ●MATLAB ●GNU Octave脚注[編集]
(一)^ “Download Julia”. julialang.org. 2024年5月3日閲覧。
(二)^ “The Julia Language”. 2014年1月17日閲覧。
(三)^ Bryant, Avi (2012年10月). “Matlab, R, and Julia: Languages for data analysis”. O'Reilly Strata. 2013年2月7日閲覧。
(四)^ Krill, Paul. “New Julia language seeks to be the C for scientists”. InfoWorld. 2013年2月7日閲覧。
(五)^ “Suspending Garbage Collection for Performance...good idea or bad idea?”. 2017年5月25日閲覧。
(六)^ ab“Julia: A Fast Dynamic Language for Technical Computing” (PDF) (2012年). 2014年1月17日閲覧。
(七)^ PythonCall & JuliaCall, JuliaPy, (2023-10-29) 2023年10月30日閲覧。
(八)^ RCall.jl, JuliaInterop, (2023-10-16) 2023年10月30日閲覧。
(九)^ CxxWrap, JuliaInterop, (2023-10-28) 2023年10月30日閲覧。
(十)^ “Julia and Spark, Better Together | juliabloggers.com”. juliabloggers.com. 2024年6月9日閲覧。
(11)^ Foster, Claire (2023-10-23), SQLREPL.jl 2023年10月31日閲覧。
(12)^ Noh, WooKyoung (2023-10-18), Octo.jl 2023年10月31日閲覧。
(13)^ “Usage Guide · FunSQL.jl”. mechanicalrabbit.github.io. 2023年10月31日閲覧。
(14)^ Hood, Doug. “Using Julia with Oracle Database”. blogs.oracle.com. 2024年6月9日閲覧。
(15)^ “The Julia module PythonCall - Guide · PythonCall & JuliaCall”. juliapy.github.io. 2024年6月9日閲覧。
(16)^ “The Python module JuliaCall - Guide · PythonCall & JuliaCall”. juliapy.github.io. 2024年6月9日閲覧。
(17)^ “julia/deps/openblas.mk at v1.10.4 · JuliaLang/julia”. 2024年6月10日閲覧。
(18)^ “Basic Comparison of Various Computing Languages” (2011年1月5日). 2022年1月5日閲覧。
(19)^ “Why We Created Julia” (2012年2月). 2013年2月7日閲覧。
(20)^ Gibbs, Mark (2013年1月9日). “Gear head”. Network World. 2013年2月7日閲覧。
(21)^ “Julia 1.0”. The Julia Language (2018年8月8日). 2018年8月12日閲覧。
(22)^ “プログラミング言語﹁Julia 1.0﹂リリース”. OSDNマガジン (2018年8月8日). 2018年8月12日閲覧。
(23)^ “MIT-created programming language Julia 1.0 debuts”. MIT News (2018年8月27日). 2018年9月1日閲覧。
(24)^ “Download Julia”. julialang.org. 2020年8月10日閲覧。
(25)^ “Julia language co-creators win James H. Wilkinson Prize for Numerical Software”. MIT News (2018年12月26日). 2021年12月19日閲覧。