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

**Julia**（ジュリア）は、科学技術計算および数値解析を主な用途として設計された汎用プログラミング言語である。2012年にMITの研究者らによって公開された。動的型付けを採用し、LLVMを基盤とするJITコンパイル方式により実行時にネイティブコードを生成する。

高水準言語の記述性とコンパイル言語に匹敵する性能を志向して設計されており、並列計算、分散処理、C言語およびFortranとの相互運用性を備えるオープンソースソフトウェアである。

## 特徴
* 多重ディスパッチ
* 動的型付け
* C言語などの静的型付き言語に迫る速い実行速度
* パッケージマネージャが組み込まれている
* Lispのようなマクロやその他のメタプログラミング機能
* C言語とFortranのコードの呼び出し

### 相互運用性
Juliaには、
```julia
@ccall
```
 マクロを使用してC言語やFortranのライブラリを呼び出すための組み込みサポートがある。外部ライブラリを使用し、Python、R言語、C++、Java、SQLなどと相互運用し、関数を呼び出したり呼び出されたりすることもできる。

C言語の printf を呼び出す例。

```julia
@ccall printf("Hello, World!\n"::Cstring)::Cvoid
```


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

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


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

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


## コード例

### Hello world
JuliaではHello worldを次のように書く。
```julia
println("Hello, World!")
```


### 行列積
次のコードはJuliaで書いた行列AとBの行列積である。

```julia
A = randn(10, 10)
B = randn(10, 10)
C = A * B
```

このように、MATLABや、PythonのライブラリであるNumPyなどと同様に、数学的な操作を簡潔に書けるうえに、行列積に関しては単にBLASのライブラリ（デフォルトはOpenBLAS）を呼び出しているだけだが、行列積を含めて多くの機能がC言語やFortranと同程度の速度で動作する。

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

## 関連項目
* Fortran
* Mathematica
* NumPy
* SciPy
* R言語
* MATLAB
* GNU Octave

## 脚注

## 参考文献
### 洋書
* 
* 
* Ben Lauwens and Allen B. Downey: *Think Julia: How to Think Like a Computer Scientist*, Oreilly & Associates Inc, ISBN 978-1-49204503-8 (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).
* Kenneth Lange: *Algorithms from THE BOOK* (2nd Ed.), SIAM, ISBN 978-1-61197-838-4 (2025).
*  James V Lambers, Amber C Sumner Mooney, Vivian Ashley Montiforte and James Quinlan: *Explorations in Numerical Analysis and Machine Learning with Julia*, World Scientific, ISBN 978-9-81981948-5 (2025年10月25日).

### 和書
* 
* 
* 進藤裕之、佐藤建太:「1から始める Juliaプログラミング」、コロナ社、ISBN 978-4-33902905-5（2020年3月26日）。
* 石井一夫:「基礎から学ぶJulia 基本文法からデータサイエンスまで」、SCC(エスシーシー）、ISBN 978-4-88647-022-5（2021年1月25日）。
* Tanmay Bakshi、菅原 宏治 (訳):「天才プログラマータンメイが教える Julia超入門」、東京化学同人、ISBN 978-4-8079-2021-1（2021年2月14日）。 
* 須山敦志：「Juliaで作って学ぶ ベイズ統計学」、講談社、ISBN 978-4-06-525980-1 (2021年11月24日)。
* 永井佑紀：「1週間で学べる! Julia数値計算プログラミング」、講談社 (KS情報科学専門書)、ISBN 978-4-06-528282-3（2022年6月23日）。
* 後藤俊介：「実践Julia入門」、技術評論社、ISBN 978-4-297-13350-4（2023年3月15日）。
* 佐藤建太：「Juliaプログラミング大全」、講談社、ISBN 978-4-06-531819-5　(2023年6月1日)。
* 小高知宏：「Juliaによる数値計算とシミュレーション」、オーム社、ISBN 978-4-27423049-3 （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, 原著の第6章まで, 2020年夏版。
* 
* 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(HPCWire誌記事、2021年3月5日)
* Julia in physicsでのチュートリアル講演
* Julia でデータサイエンス 統計検定や一般化線形モデルなどの計算とプロットの完結コード
* 「数学と物理におけるJulilaの活用」、マス・フォア・インダストリ研究 No.27、九州大学（2024年）。
* 「Julia in physics2024」、東京大学