Juliaの概要
Juliaは、動的汎用プログラミング言語でありながら、科学技術分野などの大規模数値計算において従来の動的言語に比べ格段に早い速度でコードを実行可能であるという特徴を持っています。2009年に開発が開始され、2012年にオープンソースをとして公開されました。開発者によると、Juliaと言う名前には特別の意味はなく、単にかわいい名前というだけであるということです。
Juliaの特徴であるコードの実行速度は、オプティマイズされていないPythonのコードやRの数倍の速さであるとされており、C言語のコードに引けを取らない実行速度を出すコードを記述することも可能とされています。動的プログラミング言語でありながら、スタティックなC言語に迫る速度でコードを実行できるポイントの1つは、LLVMを使って実装されたJITコンパイラを備えている点が挙げられます。
Juliaは、すでに多方面で実際のシステムを開発するのに使われていますが、Juliaの名前を一躍有名にしたのは、2015年のニューヨーク連邦準備銀行によるJuliaを使ったアメリカ合衆国経済のモデル化で、それまで使用していたMATLABによる実装よりも10倍の速度になったとされています(*1)。
1*https://juliacomputing.com/case-studies/ny-fed.html
Juliaの主な特徴
実装 | C、 C++、 scheme |
---|---|
パラダイム | マルチパラダイム、マルチディスパッチ、メタプログラミング |
タイプシステム | ダイナミック(スタティックな言語のように、変数に型指定することも可能) |
スレッドによる並列実行 | グリーンスレッドにより、OSネイティブのスレッドに頼らずに並列実行環境を提供 |
パッケージマネージャー | ビルトインのパッケージマネージャーを提供。Pkgコマンドでパッケージ管理が可能 |
対話実行環境 | ビルトインのREPL |
モジュールシステム | モジュールによる名前空間の切り分け、using、importキーワードによりmodule(package)をロード |
豊富な型 | 豊富なビルトインの型(Type)が提供されている。数値型は128bitまで対応。ユーザ独自の型は、Structキーワードで定義可能で、ビルトインの型と同等の速度 |
エラーハンドリング | try-catch、finally、error、throw |
ジェネリックファンクション | マルチディスパッチは別の型の引数を取る同名関数を定義することで可能。Juliaではそれぞれをmethodと呼ぶ。 例) julia> f(x::Float64, y::Float64) = 2x + y f (generic function with 1 method) julia> f(x::Number, y::Number) = 2x - y f (generic function with 2 methods) |
メタプログラミング | Lispライクなmacroに加え、他の豊富なメタプログラミング機能によりメタプログラミングを可能としている。 |
他言語の呼び出し | FFIを介さず、ネイティブ機能でC言語、Fortranの関数呼び出しが可能。 PyCallパッケージによるPythonコードの呼び出しが可能。 CxxパッケージによるC++コードの呼び出しが可能。 |
他言語からの呼び出し | C/C++から、Juliaコードを呼び出すことが可能(<julia.h>ヘッダファイルをincludeする) Julia C APIを使って、PythonやC#から呼び出すことも可能。 |
Unicodeサポート | UTF-8を含むネイティブでのUnicodeの完全サポート |
開発環境 | テキストエディタ(Emacs,Vim, Sublime Text) Juno(Atom plugin) julia-vscode(VisualStudio Plugin) julia-intelliJ(IntelliJ plugin) |
Juliaの動作環境
macOS | 10.8+ | x86-64 (64-bit) |
---|---|---|
Windows | 7+ | x86-64 (64-bit) |
i686 (32-bit) | ||
Linux | 2.6.18+ | x86-64 (64-bit) |
i686 (32-bit) | ||
Nvidia PTX (64-bit) | ||
ARMv7 (32-bit) | ||
ARMv8 (64-bit) | ||
x86-64 musl libc | ||
PowerPC (64-bit) | ||
FreeBSD | 11.0+ | x86-64 (64-bit) |
i686 (32-bit) |
Juliaのライセンス
Juliaは、MITライセンスの元に公開されているオープンソースの言語です。MITライセンスのソフトウェアは無償で再配布、商用利用などが可能となっており、他のオープンソースライセンスに比べ制限が極めて緩いライセンスになります。
Juliaの関連技術
- Python(NumPy, SciPy)
- R言語
- C言語
- Fortran
- Common Lisp
- Scheme
- MATLAB
- Mathematica
Juliaの関連情報
Julia公式ページ
Juliaドキュメント
Julia日本語サイト
Juliaパッケージ
Juliaバイナリダウンロード
Juliaソースコード
Juliaのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。