#author("2019-10-30T17:33:30+09:00","default:Miyashita","Miyashita") #author("2019-10-30T17:34:03+09:00","default:Miyashita","Miyashita") *Julia言語 ざっくりメモ [#v6d960a2] まだわからないことが多い.~ #contents //Kindle版を買うとサンプルコードも取得できた. //#htmlinsert(amazon,transitional,"asins=B01MXS4IPT") //#htmlinsert(amazon,transitional,"asins=B0748MTFVL") **基本 [#k84361d7] ***起動とか終了とか [#r2d8c3f1] Ubuntu ではインストール後に terminal で julia と入力すれば始まる. #codeprettify(lang-bash){{ $ 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>" の欄が #codeprettify(lang-julia){{ help?> }} に自動で変わり,コマンド名を入力すれば説明書きが出力される.~ 終了は Ctrl-D か exit() を入力する. ***コメント [#t6706fb0] #codeprettify(lang-julia){{ # この行はコメントです (1行) }} #codeprettify(lang-julia){{ #= "#= *** =#"で囲めば 複数行コメントアウトできる =# }} ~ ***パッケージの追加など [#nfe56d94] v0.7.0 未満のバージョンでは,Pkg.add("hoge") でパッケージをインストールする.~ #codeprettify(lang-julia){{ Pkg.add("PyPlot") }} 確認やアップデートは下記のように実行する. #codeprettify(lang-julia){{ Pkg.status() Pkg.update() }} v0.7.0 以降は,Pkg を使うときは事前に #codeprettify(lang-julia){{ using Pkg }} をすることが必須になった.v0.7.0 では警告を出してくれるが,v1.0.0 ではこれがないと #codeprettify(lang-julia){{ julia> Pkg.add("IJulia") ERROR: UndefVarError: Pkg not defined }} となりエラーが出る.~ ~ また,v1.0.0 以降では,REPL の先頭で "]" を入力すると Pkg 専用の状態になり, #codeprettify(lang-julia){{ (v1.0) pkg> add GMT }} のようにしても追加ができる.~ ~ ***図の描き方が多様 [#o96d2c09] 上記のように Pkg.add("Plots") でインストールしたら, #codeprettify(lang-julia){{ using Plots }} でこのパッケージが利用できるようになる.他にも #codeprettify(lang-julia){{ using Gadfly using PyPlot }} のような可視化ツールが見られる.どれを使ったら良いのかまだよくわからない.~ 好みや慣れた言語と親和性が高いものを選びたい.~ のような可視化ツールが見られる. Plots は Plots 自体に図を描く機能はなく,入力に応じて描画機能を持ったバックエンドが働く.~ バックエンドは #codeprettify(lang-julia){{ gr() # Plots.gr() に同じ pyplot() }} のようにして切り替えられる.~ 複数のパッケージを using して関数名が競合する場合や,パッケージ名を明示したい場合は #codeprettify(lang-julia){{ using Plots: Plots Plots.plot() # この場合 plot() は not defined }} とする.import Plots でも良いけど,using で統一した方が良いと思う.~ ~ ***配列の要素は1から [#ha278ea0] 0からではない.Fortran や MATLAB と同じ.ただし,配列を示す括弧は()ではなくて[].~ ~ ***セミコロン ; の役割 [#s3298561] これも MATLAB と同じ.式の最後に;をつければ結果が出力されない. #codeprettify(lang-julia){{ julia> A = 1. 1.0 julia> A = 1.; }} ただし, #codeprettify(lang-julia){{ julia> include("filename.jl"); }} のように,include でコンソール,REPL で直接実行しない場合は,ファイル内のセミコロンはあってもなくても関係ない.~ 1行の中で #codeprettify(lang-julia){{ julia> A = 1., B = 2., ERROR: syntax: invalid assignment location "1" }} のようにはできず, #codeprettify(lang-julia){{ julia> A, B = 1., 2.; }} はOK.このへんはPythonと似ている.~ 同様のことをMATLAB的にやるとすれば下記の通り. #codeprettify(lang-julia){{ julia> A = 1.; B = 2.; }} これは,; 自体に特別な意味があるわけではなく,単にステートメントの区切りで ; で終われば最後のステートメントが空になる,という意味?~ ~ ***型の確認 [#ja4a9151] typeof(A) か isa(A,型の名前) でわかる. #codeprettify(lang-julia){{ julia> typeof(A) Float64 julia> isa(A,Int64) false julia> isa(A,Float64) true julia> A = 1; isa(A,Int64) true }} ~ ***変数が定義されているか確認 [#j6b30796] isdefined は,v0.7.0以降引数が2つ必要になった.~ 単に local variable として存在するかどうかは,@isdefined の方が良いらしい. #codeprettify(lang-julia){{ @isdefined var_name }} #codeprettify(lang-julia){{ isdefined(Main, :var_name) }}