juliaの始め方
インストール
Windows
winget install Julialang.Julia -i
途中Pathに追加にチェックつける。
ターミナル開いてjuliaでREPL起動。
scoopとかでもいい気はするけど試したことない。
Ubuntu
古めなことが多いのでjulialang.orgから直接落としたりlinuxbrew使うのがいいかもしれない。
Mac
brewでいいのでは
Arch、他
わかると思うので割愛。
遊ぶ
julia> 1 + 1
とかで結果が返ってくる。
julia> \alpha[tab]
のようにLaTeXのキーワードのあとにtabを押すとそのUnicode文字に変換してくれる。
julia> \:white_check_mark:
julia> \^1
のように絵文字や上付き・下付き文字も使える。
モードがいくつかあって、主なものは
?でヘルプモード。- 関数や型のドキュメントを参照できる。
- 具体的にはソースコードのdocstring1が見れる。
- docstringは何にでもつけられるので存在すれば色々見れる。
- 困ったときにはこれを使おう。
- 関数や型のドキュメントを参照できる。
]でPkgモード。- 標準ライブラリの
Pkg.jlが使えるようになる。 ?を打てば使える関数一覧表示。- よく使うやつ
add:追加update:更新status:確認activate hoge:環境セットアップ(Manifest.tomlに記録される)test:パッケージのテスト
- 標準ライブラリの
;でShellモード。cdとかで移動したり、lsしたり。- Windowsではcmdでもpowershellでもないが、cmdやpowershellを実行することはできる。
C-rで履歴のインクリメンタルサーチ。
生き方
だいたいPythonとかCとかと似た書き方。
コメントは#。
配列は[1, 2, 3, ]。
型は勝手につく。
(Matlabみたいに)func.(Vector)でブロードキャスト(要素1個ずつ適用)できる(非常に便利)。
func!()は破壊的なやつ(引数の変数が上書きされる)。
@から始まるのはマクロ2。
難しいのでわかってない。
あとはQiitaとかの記事を見るといいと思うよ3。
生き方+
チョットワカル向け。 飛ばして構わない。
パイプ演算子|>がある。
もちろんブロードキャストできる.|>。
リスト内包表記使える。
関数合成f \circ gできる。
型は木構造をなしていて、全てAny型のsubtype。
supertype(type)で親の型を、subtypes(type)で子の型が得られる。
型の包含の演算子は<:。
parametric typeという引数を持った型がある。
Array{T, N}のように配列も次元や中の型のパラメータを持つ。
他にTuple{T, S}など。
パラメータに関してはwhereで包含を扱う。
配列は1次元と2次元に関しては、Vector{T}、Matrix{T}というaliasがある。
julia> Array{T, N}(init_num, size::Tuple)
で初期化できたり。
標準ライブラリのLinearAlgebraやSparseArraysでは行列の性質を反映した型が大量に出てくるので公式ドキュメントを見よう!
よく使う4パッケージのインストール
]add CSV, DataFrames, Plots, OhMyREPL, PackageCompiler, GLM, Unitful, PhysicalConstants, Measurements
TeXが入ってるなら
]add Latexify, LaTeXStrings, UnitfulLatexify
Makie5を使いたいなら
]add Makie, GLMakie, WGLMakie, CairoMakie
よく使う4やつの使い方
OhMyREPL
using OhMyREPL
すると色がつく(初回起動重めなのでPackageCompilerによる事前コンパイル推奨)。 fzfが入ってるとC-rで使ってくれるのでfzfも入れてるとok(winget install fzf)。
Plots
多重ディスパッチでいい感じにプロットしてくれる。
plot()で大体完結する。
plot!()すると上書き。
第一引数にplt = plot(...)を指定すればそのオブジェクトに上書きしてくれる。
Recipeというのを使ってどんなプロットをするか判断してる。
主なrecipeは
plot(func) # 関数プロット
plot(array_x, array_y) # 配列プロット
など。
DataFrames, CSV
tidyにデータを扱おう!
Matrixと同じようなアクセスや、.を使ったcolumnの選択ができる。
colnamesは::Symbol型。
Unitful
次元と単位込で数値を扱う。
物理的に意味のある計算のみが許される。
基本、u"m"のようにu"..."で単位を解釈してくれる。
1 * u"m"とすれば1 mになるし、1 * u"m" |> u"mm"とすれば、convertしてくれる。
最終手段ustrip。
Plots.jlに対して、軸ラベルに(単位)を後ろにくっつけるrecipeが付属してる。
Measurements
誤差を扱ってくれる。
線形誤差伝播で誤差伝播してくれたり、UUIDで変数が独立しているかや依存する変数を管理してる。
Plots.jlに対して、エラーバーを付与するrecipeを提供している。
Latexify
julia> latexify("x / y")
L"$\frac{x}{y}$"
のようにjuliaの式をLaTeX形式に変換してくれる。 Plots.jlのプロットに入れることもできる。
最後に
公式ドキュメントを読もう!
Documenter.jlによる統一的なドキュメントが整備されててドキュメント漁りは楽。
Comments
Reply to this post (mastodon) to leave a comment.
Reply