Julia

Juliaは数値計算や機械学習に向いたプログラミング言語です。この記事では、入門者向けにJuliaプログラミングをご紹介します。

REPL

Juliaをアイコンから実行するか、シェルからJuliaを引数なしで実行すると、REPLが起動する。

REPL とは Read-eval-print loop の略称で、対話型評価環境のことである。

JuliaのREPLには、次に示す3つのモードがある。

Juliaモード

JuliaのREPLを起動すると、初めはJuliaモードになっている。

REPLがJuliaモードの場合、プロンプトは次のように表示される。

julia>

Juliaモードでは入力したコードが評価されて、その結果が表示される。

julia> 1 + 2
3

julia>

パッケージモード

REPLのJuliaモードで「]」を入力すると、パッケージモードに切り替わる。

REPLがパッケージモードの場合、プロンプトは次のように表示される。

(@v1.5) pkg>

※表示はJuliaのバージョンによって異なる。

パッケージモードでは、Juliaにパッケージを追加できる。

たとえば、Julia に HTTP.jl パッケージを追加するには、REPLのパッケージモードで次のように入力する。

(@v1.5) pkg> add HTTP

※拡張子の .jl は指定しない。

パッケージモードを終了してJuliaモードへ戻るには、Backspaceキーを押す。

ヘルプモード

REPLのJuliaモードで「?」を入力すると、ヘルプモードに切り替わる。

REPLがヘルプモードの場合、プロンプトは次のように表示される。

help?>

ヘルプモードでは、入力したキーワードについてのヘルプが表示される。

help?> println
search: println printstyled print sprint isprint

  println([io::IO], xs...)

  Print (using print) xs followed by a newline. If io is not supplied, prints to stdout.

  Examples
  ≡≡≡≡≡≡≡≡≡≡

  julia> println("Hello, world")
  Hello, world

  julia> io = IOBuffer();

  julia> println(io, "Hello, world")

  julia> String(take!(io))
  "Hello, world\n"

julia>

ヘルプを表示すると、ヘルプモードを終了してJuliaモードへ戻る。

短絡評価

AND

「x && y」の式は、x と y がどちらも true の場合にのみ true と評価される。Julia言語では、まず x を評価して、x が true の場合にのみ続けて y を評価する。もし x が false であれば y は評価しない。このように結果が明らかになった段階で評価を止めることを「短絡評価」という。

短絡評価の仕組みを利用して、条件分岐処理を行うことができる。たとえば、n の値が0以下の場合にエラーを発生させるには、&& を使って次のようにする。

n <= 0 && error("n must be positive")

もし n が0以下であれば、続いてerror関数が評価(実行)される。もし n が 0より大きければ、error関数は評価されない。

上記のコードは、次のように書くこともできる。

if n <= 0
  error("n must be positive")
end

OR

「x || y」の式は、x と y がどちらも false の場合にのみ false と評価される。Julia言語では、まず x を評価して、x が false の場合にのみ続けて y を評価する。もし x が true であれば y は評価しない。

n の値が0以下の場合にエラーを発生させるには、|| を使って次のようにする。

n > 0 || error("n must be positive")

もし n が0以下であれば、続いてerror関数が評価(実行)される。もし n が 0より大きければ、error関数は評価されない。

上記のコードは、次のように書くこともできる。

if !(n > 0)
  error("n must be positive")
end

ソート

Julia 言語で配列の値をソート(並び替え)するには、sort 関数を使う。

julia> sort([3, 1, 2])
3-element Array{Int64,1}:
 1
 2
 3

デフォルトでは昇順(小さい順)でソートされる。

降順

降順(大きい順)にソートするには、rev 引数に true を指定する。

julia> sort([3, 1, 2], rev=true)
3-element Array{Int64,1}:
 3
 2
 1

アルゴリズム

alg 引数にソートのアルゴリズムを指定することもできる。次のアルゴリズムを指定できる。

julia> sort([3, 1, 2], alg=InsertionSort)
3-element Array{Int64,1}:
 1
 2
 3