MotoJapan's Tech-Memo

技術めも

Julia言語とは(備忘録 : 更新版)

twitterなどで目にする機会が増えて、昨日初めてJuliaチュートリアルに参加したので備忘録。(更新版)


チュートリアルで頂いたステッカー↓↓
f:id:motojapan:20180324113623j:plain
可愛いね。

Juliaについて

  • 本家サイト https://julialang.org/
  • Github上で開発されるOSS
  • 2012年公開、現在のバージョンはv0.6.0(0.7.0-DEV)
  • 数値計算や科学計算処理向けの動的プログラミング言語
  • 科学計算処理向けのため、下記を実現・意図する。
    • 数式記述が楽(文法やコマンド)
    • ライブラリが豊富
    • 処理速度が早い
    • 処理量に対するスケーリング(分散処理)
  • その他の特徴は
    • モダンな言語仕様
    • UTF-8対応
    • etc...

Juliaのライセンス

MITベース
ただし中にあるプロジェクト単位で様々なライセンスがぶら下がっている模様 
商用利用はお気をつけて。
julia/LICENSE.md at master · JuliaLang/julia · GitHub

Juliaは何故早い

細かいことはよくわかりませんが、わかっていることだけで

  • LLVMベースの高パフォーマンスJITコンパイラを搭載
    • 実行前の型推論や最適化などでC(ネイティブ)相当の処理速度を目指す
    • 本家サイトのベンチマークにもあるようにCに遜色ない速度という参考結果
  • バージョンアップによる高速化とチューニング

Juliaを始める人

こんな人が多い気がする

簡単に始める方法

パッケージ

https://pkg.julialang.org/
2018/3/24時点で1749パッケージが登録されている
個人的に、Mamba.jl , BackpropNeuralNet.jlに興味がある
github.com
github.com

他の言語を実行可能

Julia上でgccやclangが実行できるため、C, Fortranのコードを実行可能
Calling C and Fortran Code · The Julia Language
Juliaboxのチュートリアルにもある

Cxx.jiで対話実行できるのでこっちも。
github.com

所感

  • 基本的に数値演算がめちゃめちゃ書きやすい!
  • 型指定や型比較が厳密(で個人的に好き)
  • ruby同様に破壊的関数などのシンタックスがあり読みやすい
  • 関数定義が多様でシンプルなものは1行で定義できて楽だし、直感的
  • モダン言語仕様であるため、書きやすく、python文法や演算記述も類似性がある
  • (まだ全貌をちゃんとわかってないな〜、勉強しよう)

勘違いがあれば教えていただけると助かります。

勉強会はこちらでした。

data-refinement.connpass.com