トップQs
タイムライン
チャット
視点

Julia (プログラミング言語)

汎用プログラミング言語水準から高度の計算科学や数値解析水準まで対処するよう設計された高水準言語かつ仕様記述言語、及び動的プログラミング言語 ウィキペディアから

Julia (プログラミング言語)
Remove ads

Julia(ジュリア)は、汎用プログラミング言語水準から高度の計算科学数値解析水準まで対処するよう設計された高水準言語かつ仕様記述言語、及び動的プログラミング言語である[2][3][4]並行計算並列計算分散コンピューティング、及びAdapter パターン不要でC言語FORTRANへのForeign function interfaceに対応している。ガベージコレクション[5]を行い先行評価を用いるほか、浮動小数点数計算、線型代数学高速フーリエ変換正規表現照合のライブラリを利用できる。

概要 パラダイム, 登場時期 ...

LLVMコンパイラフレームワークを用いてC言語C++Schemeで組まれており、標準ライブラリの殆どは独自に実装された[6]。注目すべき特徴はその実行速度であり、完全に最適化したC言語(PythonR言語よりも桁違いに速い場合が多い)と比べても計算パフォーマンスの低下は半分程度であることが知られている[6]。 一方で、JITコンパイラによって実行時に翻訳がされるので、見かけ上はPythonのようにインタプリタとして動作する。

Remove ads

特徴

相互運用性

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 とは同じ動的型付けのプログラミング言語であり類似点が多いため、相互運用がしやすい。ただし、NumPyはC言語と同じくrow-majorで配列の添え字は0から始まるが、JuliaはFortranと同じくcolumn-majorで配列の添え字は1から始まる[15]。下記は Julia の側から PythonCall を使用した例である。[16]

using PythonCall
np = pyimport("numpy")
print(np.array([1, 2, 3], dtype=np.float32))

同様に JuliaCall により、Python の側から Julia を呼び出すことも可能であり、Julia は計算が高速にできるので、計算量が多い部分だけを Julia により計算するということも可能である。下記は Python の側から JuliaCall を使用した例で、Julia の多次元配列と NumPy を組み合わせて使用している。[17]

from juliacall import Main as jl
import numpy as np
np.array(jl.rand(range(10), 3, 5))
Remove ads

コード例

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[18])を呼び出しているだけだが、行列積を含めて多くの機能がC言語Fortranと同程度の速度で動作する[19]

沿革

  • 2009年に開発が始まり、2012年2月にオープンソースとして公表された[20][21]
  • 2018年8月8日にバージョン1.0がリリースされ、[22][23][24]2020年8月1日にバージョン1.5がリリースされた[25]
  • 2018年12月、開発者の3人がSIAM(アメリカ工業及び応用数学会)によるジェームズ・H・ウィルキンソン賞を受賞したことが発表された[26]
  • 2025年3月、Google Colabにおける公式サポートが開始した[27]

関連項目

脚注

参考文献

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads