Julia言語 ざっくりメモ

まだわからないことが多い.
Kindle版を買うとサンプルコードも取得できた.

基本

起動とか終了とか

Ubuntuではインストール後にterminalでjuliaと入力すれば始まる.

$ julia
              _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: https://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.6.2 (2017-12-13 18:08 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-pc-linux-gnu

julia>

"?"を入力すれば上の"julia>"の欄が

 help?>

に自動で変わり,コマンド名を入力すれば説明書きが出力される.
終了はCtrl-Dかexit()を入力する.

コメント

# この行はコメントです (1行)
#=
  "#= *** =#"で囲めば
  複数行コメントアウトできる
=#

パッケージの追加など

Pkg.add("hoge")でパッケージをインストールする.

Pkg.add("PyPlot")

確認やアップデートは下記のように実行する.

Pkg.status()
Pkg.update()

v0.7.0以降は,Pkgを使うときは事前に

using Pkg

をすることが必須になった.v0.7.0では警告を出してくれるが,v1.0.0ではこれがないと

julia> Pkg.add("IJulia")
ERROR: UndefVarError: Pkg not defined

となりエラーが出る.
また,v1.0.0では,REPLの先頭で "]" を入力するとPkg専用の状態になり,

(v1.0) pkg> add GMT

のようにしても追加ができた.

図の描き方が多様

上記のようにPkg.add("Plots")でインストールしたら,

using Plots # importでも

でこのパッケージが利用できるようになる.他にも

using Gadfly
using PyPlot

のような可視化ツールが見られる.どれを使ったら良いのかまだよくわからない.
好みや慣れた言語と親和性が高いものを選びたい.
PlotsはPlots自体に図を描く機能はなくsyntaxだけを持ち,入力に応じて描画機能を持ったバックエンドが働く.
バックエンドは

gr() # using ではなく import Plotsをした場合は Plots.gr()
pyplot()

のようにして切り替えられる.

配列の要素は1から

0からではない.FortranやMATLABと同じ.ただし,配列を示す括弧は()ではなくて[].

セミコロン ; の役割

これもMATLABと同じ.式の最後に;をつければ結果が出力されない.

julia> A = 1.
1.0
julia> A = 1.;

ただし,

julia> include("filename.jl");

のように,includeでコンソール,REPLで直接実行しない場合は,ファイル内のセミコロンはあってもなくても関係ない.

1行の中で

julia> A = 1., B = 2.,
ERROR: syntax: invalid assignment location "1"

のようにはできず,

julia> A, B = 1., 2.;

はOK.このへんはPythonと似ている.

同様のことをMATLAB的にやるとすれば下記の通り.

julia> A = 1.; B = 2.;

型の確認

typeof(A)かisa(A,型の名前)でわかる.

julia> typeof(A)
Float64
julia> isa(A,Int64)
false
julia> isa(A,Float64)
true
julia> A = 1; isa(A,Int64) 
true

変数が定義されているか確認

isdefinedは,v0.7.0以降引数が2つ必要になった.
単にlocal variable として存在するかどうかは,@isdefined の方が良いらしい.

@isdefined var_name
isdefined(Main, :var_name)

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2018-08-21 (Tue) 03:52:49 (209d)