相關網站
https://julialang.org/ julia 官網
https://github.com/JuliaLang/julia julia github
https://juliacomputing.com/ julia pro, julia computing
https://juliaobserver.com/ Pkg 平臺
https://discourse.julialang.org 全球社區(qū)
http://discourse.juliacn.com/ 中文社區(qū)
http://docs.juliacn.com/latest/ 中文文檔
簡單介紹
Julia 是一個面向科學計算的高性能動態(tài)類型實時編譯型高級程序設計語言。Julia 是個靈活的動態(tài)語言描沟,適合科學和數值計算乔宿,性能可與傳統(tǒng)靜態(tài)類型語言媲美。
julia 是編譯型語言. 集python, matlab,c,r 優(yōu)點. Julia使用的JIT(Just-in-Time)實時編譯器, 是編譯型語言(同C/C++), python/matlab 是解釋型語言.
Julia 程序可以通過PyCall.jl 調用python程序, 通過CCall.jl調用C/Fortran, 通過Cxx.jl調用C++, 通過RCall.jl調用R. 通過 JavaCall.jl調用 java. 通過MATLAB.jl 調用matlab.
Julia還提供了許多特定領域的生態(tài)系統(tǒng),如生物學 (BioJulia)冀瓦,量子物理學 (QuantumOptics)讶坯,非線性動力學(JuliaDynamics),定量經濟學 (QuantEcon)乍恐,天文學(JuliaAstro), 生態(tài)學 (EcoJulia), 機器人學(JuliaRobotics) .
數學相關(JuliaMath) , 運籌學/優(yōu)化(JuliaOpt/JuMP), 非線性求解/優(yōu)化(Optim.jl) , 微分方程(JuliaDiffEq/DifferentialEquations.jl),
機器學習(FluxML/Flux.jl, Knet.jl)
Julia的設計從根本上講非常擅長數值和科學計算。這可以從Julia編寫的大量科學工具中看出丰包,例如最先進的微分方程生態(tài)系統(tǒng) (DifferentialEquations.jl), 優(yōu)化工具(JuMP.jl和 Optim.jl), 迭代線性求解器 (IterativeSolvers.jl)
交互式編程環(huán)境
打開Julia禁熏,此時顯示的窗口叫做Julia REPL (Read Eval Print Loop)或者Julia interpreter或 “交互式解釋器”或“交互式編程環(huán)境”。
CTRL+D 退出邑彪;CTRL+L 清屏瞧毙;CTRL+C 終止命令。 ; + clear 清屏
? 幫助模式, ] pgk模式, ; shell模式, CTRL+C 退出當前模式
julia> versioninfo() # 查版本和平臺信息
包管理
自julia-1.0開始寄症,不再推薦Pkg.xxx()的方式管理包, 推薦新的管理方式 ] , PKG>
https://juliaobserver.com/ pkg 平臺, 有統(tǒng)計,分類 信息. 需要翻墻
julia>Pkg.add("IJulia") # 安裝 IJulia 包
Pkg.clone("https://github.com/JuliaIO/ImageMagick.jl") # 更新/安裝 最新的master版本, 但是只在當前CI/命令行 有效.
pkg>add https://github.com/JuliaImages/Images.jl.git
julia>Pkg.status() # 列出安裝了的包
按 ] 進入 pkg>, backspace或 ctrl+c 退出到julia>
(v1.0) pkg>add GR Gadfly # add 安裝, up 更新, rm 卸載, test 測試, status 包列表, build 構建, ctrl+c 退出.
(v1.0) pkg>rm PyCall # pkg 模式下是命令式的. rm后包的代碼還是在的, 只是從索引里刪除了, 通過 gc可以清除.
julia>using Pkg # 使用包. julia 是在add, up后 第一次using時會 預/重 編譯包, so會很慢. 編譯后的文件名是 5位hash字符.ji
改國內源: PkgMirrors 速度很快. import PkgMirrors; PkgMirrors.setmirror("ZJU")
(v1.0) pkg>add GR@0.35.0 # 指定版本號
基礎
julia> ? Images # 查看這個包的信息: 介紹, 函數,用法等
julia> names(Images) # 查看這個包的 函數
文件后綴 .jl , 源碼原生支持 unicode, utf-8
單行注釋: # , 多行注釋: 只需要以 '#=' 開始, '=#' 結束
每句代碼后可不加 ; 多行合并時每句后加; 在REPL或jupyter里每行用分號結尾就不輸出表達式的值
不像python那樣嚴格要求縮進
查到 函數的源文件: methods(cp), @which cp , less(cp)
Julia 數組索引從 1 開始. 代碼塊以 end 結尾
動態(tài)類型語言, 變量可無類型, 可自動推理.
矢量 [如Vector{Float64}(undef, 3) ] 是列向量
ROS
http://www.juliarobotics.org/ JuliaRobotics Robotics powered by Julia
https://github.com/JuliaRobotics JuliaRobotics 機器人相關, MIT開發(fā)(始于2016.4), 更新積極,支持julia 1.0 **********
http://www.juliarobotics.org/Caesar.jl/latest/ 文檔
http://drc.mit.edu/ MIT DARPA機器人挑戰(zhàn)賽團隊
https://github.com/JuliaRobotics/SensorFeatureTracking.jl cv 相關
https://github.com/jdlangs/RobotOS.jl Julia interface to ROS (通過 PyCall, 支持julia 1.0)
Caesar.jl SLAM in julia, Robot toolkit. # 凱撒 不支持win(因依賴的mongoc不支持win)
RigidBodyDynamics.jl 剛體動力學, 動力學算法
RoME.jl Robot Motion Estimate(運動估計): 實現許多代數轉換, 實用程序和工具. 是Caesar的一部分. # 羅馬