ロ技研秋のブログリレー2020の2回目の記事です。
みなさんこんにちは。ふらいです。
why we created julia を読むと多くの人がjuliaを使ってみたくなると思います。
僕たちが欲しい言語はこんな感じだ。まず、ゆるいライセンスをもったオープン ソース言語。 そこに、Cの速さとRubyの動的さが欲しい。 Lispのような同図像性があって真のマクロを使えるけど、Matlabのように分かりやすくて自然な数学的記述もできる言語だ。 そのうえ、Python並みに汎用プログラミングに使えて、R並みに簡単に統計分析ができて、Perl並みに文字列処理を自然にできて、Matlab並みに線形代数計算に強くて、シェル並みにうまくプログラムをつなぎ合わせることができる。 さらに、すっごい簡単に覚えられるけど、凄腕ハッカーも満足させられるものだ。 インタラクティブに使えて、かつコンパイルもできる。
日本語訳引用元: バイバイ Python。 ハロー Julia!
どんな人にでも使ってみて欲しいですが特に
- 宗教上の理由でpythonが使えない人
- ライセンスの問題でmatlabが使えない人
にはおすすめです。
juliaはパッケージ管理機能があって、標準ライブラリで行列演算ができて、Cの関数を呼び出せて、pythonも呼び出せて、ROSのパッケージもあって、webフレームワークもあって、…と紹介しているときりがないので、今回は特にjuliaではこんな書き方ができて楽しいよというのをいくつか紹介しようと思います。
いろいろな記号が使える
julia> π π = 3.1415926535897...
( \pi [tab] で π に変換されます)
julia> 4 ∈ 1:5 true
(\in [tab] で ∈ に変換されます)
(1:5 は [1,2,3,4,5] のことと思ってください)
他にも定義済みの記号(√, ≠, ÷ 等)や自分で定義して使える記号(δ, ±, ♂ 等)がたくさんあります。
かけ算の記号を省略できる
かけ算は
julia> 5*2 10
と*を用いて計算できますが、”数字かける文字”の場合は
julia> a=2 2 julia> 5a 10
julia> 2π 6.283185307179586
というように*を省略して数学っぽい書き方ができます
ここまでの組み合わせ技
julia> ° ERROR: UndefVarError: ° not defined
(\degree [tab] で °に変換されます)
°はまだ定義されてないので自分で以下のように定義してみます
julia> °=π/180 0.017453292519943295
すると以下のような使い方ができます!
julia> 180° 3.141592653589793
関数の定義
関数は普通以下のように定義します
function f(x) return x^2 + 2x + 1 end
以下のように呼び出せます
julia> f(1) 4
でもjuliaはもっと数学的な書き方で関数を定義することもできます。
f(x) = x^2 + 2x + 1
もちろん先ほどと同じように呼び出せます
julia> f(1) 4
不等号
4 ≤ x < 6
を書きたいときに多くのプログラミング言語では
4 <= x && x < 6
と書かないといけないですよね。
でもjuliaならそのまま
julia> 4 ≤ x < 6 true
(\leq [tab] で ≤に変換されます)
とかけるんです!
ブロードキャスト
sin関数にベクトルをつっこむと
sin([1,2,3]) ERROR: MethodError: no method matching sin(::Array{Int64,1})
そんな関数はないといわれます。
そこでjuliaでは以下のようにブロードキャストという方法を使い要素ごとに関数を適用することができます。
sin.([1,2,3]) 3-element Array{Float64,1}: 0.8414709848078965 0.9092974268256817 0.1411200080598672
まとめ
いかがでしたでしょうか。