Julia は、汎用プログラミング言語水準から高度の計算科学や数値解析水準まで対処するよう設計された高水準言語かつ仕様記述言語及び動的プログラミング言語です。並行計算、並列計算、分散コンピューティング、及び Adapter パターン不要で C 言語や FORTRAN への Foreign function interface に対応しています。ガベージコレクションを行い先行評価を用いるほか、浮動小数点数計算、線型代数学、高速フーリエ変換、正規表現照合のライブラリを利用できます。
LLVM コンパイラフレームワークを用いて C 言語、C++、Scheme で組まれており、標準ライブラリの殆どは独自に実装されました。2009 年に開発が始まり、2012 年 2 月にオープンソースとして公表されました。実装の最も注目すべき特徴は速度であり、完全に最適化した C 言語(Python や R 言語よりも桁違いに速い場合が多い)と比べて計算パフォーマンスの低下は半分程度であることが知られています。
2018 年 8 月 8 日にバージョン 1.0 がリリースされました。
上記 Wikipedia にはいろいろ説明されていますが、うまく理解できません。処理速度が速いプログラミング言語だということ、バージョン 1.0 がリリースされてからまだ日が浅いということは解ります。💦
次は Julia なのか?
R や Python で満足しています、というより、まだまだ使いこなせていないのですが、下記の記事をみてプログラミング言語 Julia に興味を持ちました。
Bye-bye Python. Hello Julia!(さようなら Python、こんにちは Julia!)というタイトルと、As Python’s lifetime grinds to a halt, a hot new competitor is emerging(Python の寿命が尽きようとしている中、新たな競争相手が現れる)という挑発的な副題がついています。
上記記事より Julia の特徴を要約すると下記のようになります。
- Versatility(汎用性)
- Juliaは、単純な機械学習アプリケーションから巨大なスーパーコンピュータシミュレーションまで、あらゆるものに利用できる。
- Speed(速度)
- Julia の作者は C 言語と同じくらい速い言語を作りたいと考えていたが、出来上がったものはそれ以上に速い。
- Community(コミュニティ)
- Code conversion(コード変換)
- Julia でコードを書くのに Julia コマンドの知識は必要ない。Python や C 言語のコードを Julia の中で使うことができるだけではなく、Python の中で Julia を使うこともできる。
- Libraries(ライブラリ)
- Julia が非常に若い言語でリソースが限られている。Julia のライブラリの量が増えているが、これとは別に、例えばプロットを扱うために C や Fortran のライブラリとインターフェースをとることもできる。
- Dynamic and static types(動的型と静的型)
- Julia は動的な型付けを完全にサポートしているが、C や Fortran のように静的型を導入することもできる。
本記事を書いている時に、上記サイトの邦訳が公開されていることを見つけました。
なるほど、うまい翻訳をするなぁと思いました。読んでしまってから自分の訳を直してしまうと盗訳になってしまうので、拙訳はそのまま残します。原文から無断に引用、要約(訳)していると怒られるかもしれませんが…。
これだけでは Julia というプログラミング言語がまだよく見えてきません。わざわざ英文の記事を読まなくとも、日本語で詳しく紹介された記事もあります。
他の言語との比較はありますが、Julia を使った具体的例がありません。結局、実際にインストールして使ってみるしかなさそうです。
Julia のインストール
下記の OS 環境に Julia をインストールします。
|
Fedora Workstation 32 |
x86_64 |
Fedora では Julia のパッケージをそのままで利用できますので、下記のようにして Julia に関係するパッケージをインストールします。
[bitwalk@fedora-pc ~]$ sudo dnf install julia julia-devel julia-doc
メタデータの期限切れの最終確認: 5:25:50 時間前の 2020年08月03日 13時13分21秒 に実施しました。
依存関係が解決しました。
================================================================================
Package Architecture Version Repository Size
================================================================================
インストール:
julia x86_64 1.4.2-2.fc32 updates 37 M
julia-devel x86_64 1.4.2-2.fc32 updates 26 M
julia-doc noarch 1.4.2-2.fc32 updates 1.0 M
依存関係のインストール:
dSFMT x86_64 2.2.3-14.fc32 fedora 20 k
julia-common noarch 1.4.2-2.fc32 updates 2.0 M
mbedtls x86_64 2.16.7-1.fc32 updates 337 k
openlibm x86_64 0.5.3-10.fc32 fedora 106 k
p7zip-plugins x86_64 16.02-17.fc32 fedora 1.0 M
suitesparse64_ x86_64 5.4.0-3.fc32 fedora 1.0 M
トランザクションの概要
================================================================================
インストール 9 パッケージ
ダウンロードサイズの合計: 69 M
インストール済みのサイズ: 381 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/9): julia-common-1.4.2-2.fc32.noarch.rpm 85 kB/s | 2.0 MB 00:24
(2/9): julia-doc-1.4.2-2.fc32.noarch.rpm 2.2 MB/s | 1.0 MB 00:00
(3/9): mbedtls-2.16.7-1.fc32.x86_64.rpm 231 kB/s | 337 kB 00:01
(4/9): dSFMT-2.2.3-14.fc32.x86_64.rpm 154 kB/s | 20 kB 00:00
(5/9): openlibm-0.5.3-10.fc32.x86_64.rpm 1.3 MB/s | 106 kB 00:00
(6/9): p7zip-plugins-16.02-17.fc32.x86_64.rpm 8.5 MB/s | 1.0 MB 00:00
(7/9): suitesparse64_-5.4.0-3.fc32.x86_64.rpm 8.4 MB/s | 1.0 MB 00:00
(8/9): julia-1.4.2-2.fc32.x86_64.rpm 786 kB/s | 37 MB 00:48
(9/9): julia-devel-1.4.2-2.fc32.x86_64.rpm 489 kB/s | 26 MB 00:55
--------------------------------------------------------------------------------
合計 1.2 MB/s | 69 MB 00:56
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備 : 1/1
インストール中 : suitesparse64_-5.4.0-3.fc32.x86_64 1/9
...
(途中省略)
...
検証 : suitesparse64_-5.4.0-3.fc32.x86_64 9/9
インストール済み:
dSFMT-2.2.3-14.fc32.x86_64 julia-1.4.2-2.fc32.x86_64
julia-common-1.4.2-2.fc32.noarch julia-devel-1.4.2-2.fc32.x86_64
julia-doc-1.4.2-2.fc32.noarch mbedtls-2.16.7-1.fc32.x86_64
openlibm-0.5.3-10.fc32.x86_64 p7zip-plugins-16.02-17.fc32.x86_64
suitesparse64_-5.4.0-3.fc32.x86_64
完了しました!
[bitwalk@fedora-pc ~]$
Julia の起動は下記のように julia とタイプします。
julia の起動例
終了するには exit() とタイプするか、Ctrl + d とタイプします。
Julia から Jupyter Notebook を起動する
Jupyter Notebook は、Python や R ばかりでなく、Julia からも利用できます。端末エミュレータから julia を起動して、下記のようにして Jupyter の Notebook を起動します。
[bitwalk@fedora-pc ~]$ julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.4.2 (2020-05-23)
_/ |\__'_|_|_|\__'_| | Fedora 32 build
|__/ |
julia> using IJulia
julia> notebook()
[ Info: running `/home/bitwalk/venv/bin/jupyter notebook`
するとブラウザが起動して、Jupyter Notebook の画面が表示されます。
起動した Jupyter Notebook
試しに単純なプロットのサンプルを実行してみました。この例は下記のサイトで紹介されているプロットのサンプルから引用しました。
プロット例
こんなシンプルなサンプルでは、やはりプログラミング言語 Julia の特徴は判りません。少しずつですが、情報を整理した結果を本ブログで紹介していきます。
参考サイト
- The Julia Programming Language
- Introduction - Julia language: a concise tutorial
にほんブログ村