参考 https://zhuanlan.zhihu.com/p/41953244
还有这篇教程:https://zhuanlan.zhihu.com/p/60889456
详见julia中文文档:http://cn.julialang.org/JuliaZH.jl/latest/
Julia是麻省理工学院计算机科学和人工智能实验室(Csil)开发和孵化的一种免费开放源码语言,于2012年发布,目标是结合C的速度与Python的可用性、Ruby的动态性、MATLAB的数学能力和R的统计能力。麻省理工学院说Julia是“petaflop club“中唯一的高级动态语言,在世界第10大超级计算机Cori上被用来模拟1.88亿颗恒星、星系和其他天体,模拟运行只需14.6分钟,使用650000Knights Landing Xeon Phi 核,有1.5千兆秒的运算(每秒四万亿次浮点运算)。
总的来说,目前还是MIT的老师和学生在推Julia。Julia开发都通过GitHub进行(社区驱动),现在上面的代码贡献者有200名左右,稳定的、高度活跃的贡献者约有30名。目前Julia主要用在科学计算上,另外Julia足以胜任的领域之一是教育。下一代学生可以直接跨过现有的技术。IJulia图形化的Notebook集成(运行Julia的IPython Notebook)使之对于教学极具魅力。研究者、算法开发者和库作者也在采用Julia,因为Julia使工作更高效。
Julia能将工作负载分散到数十万个处理器核,这导致它从机器学习到大规模超级计算机模拟等各个方面的应用。
Julia采用即时编译的策略,底层通过LLVM实现,可以为多个平台编译高效的本地代码。在某些情况下,Julia 可以接近甚至达到 C 语言的速度。我们在下一篇文章会介绍julia的性能提升秘诀。
从本质上来说,Julia更倾向于是一种编译型语言,而不是解释型语言。
Julia的多分派dispatch范式是指允许函数重名,并会在调用时自动根据传入的参数类型进行分派,非常像java/C++中的函数重载,区别在于,C++/Java是在编译时完成分派,而Julia是在运行时完成这一工作。使用它的多分派dispatch范式能表达许多面向对象和函数编程范式,它还有一个非常适合数学运算的语法,有许多数字数据类型和内置的并行支持。
Julia和numpy一样,支持广播机制,可以在GPU和其它向量化硬件上实现高效的优化计算。
Julia 的 Base 包和标准库都是由 Julia 语言编写的。这包括像整数运算那样的基本操作。也就是说,Julia 实现了一定程度的自举。
mac上安装很简单,brew cask install julia即可。如果你已经安装了jupyter notebook的话,直接输入jupyter notebook启动即可。
linux上安装,到julia官网下载julia,然后解压,配置到环境变量中,sudo vim .bashrc,在环境变量中加上这句,注意这里要写你的julia的bin的路径:export PATH=“/myapp/julia/bin:$PATH”,然后执行终端输入 julia 顺利执行到julia交互界面,到这里就安装成功了,如果想要安装julia notebook环境,就往下看
在julia 交互界面执行
using Pkg
Pkg.add("IJulia")
using IJulia; notebook(detached=true)
然后就安装成功了。
启动julia时有一系列可配置参数:
如果出现git问题,切换shell模式,执行:
git config --global http.proxy ‘socks5://127.0.0.1:1080’
git config --global https.proxy ‘socks5://127.0.0.1:1080’
julia的包以xx.jl的方式命名,文件里面用module、end包住。自定义的julia包首先要使用activate命令激活,然后就可以使用import xx或者using导入。当然也可以托管到github上,然后add到本地。
输入julia进入julia PERL,然后输入Pkg.add(“PackageName”)安装包;也可以按 ] 键进入pkg模式。接着就可以使用using或者import来调用包了:
julia> using IJulia
[ Info: Precompiling IJulia [7073ff75-c697-5162-941a-fcdaad2a7d2a]
julia> notebook()
Julia目前所有包均可在https://juliapackages.com/上找到。常用包介绍如下:
基本数据结构:DataFrames
交互:CSV, JSON, XLSX
随机数:Random,StatsFuns
微分方程:DifferentialEquations
线性代数:LinearAlgebra,IterativeSolvers
统计:Turing(贝叶斯),Distributions,StatsBase,Regression,MixedModels,CurveFit,Interpolations,MultivariateAnalysis,HypothesisTests,POMDPs(马尔科夫决策过程模拟),HMMBase,TimeSeries
凸优化:JuMP(建模)、Convex(凸优化)、GeneticAlgorithms(遗传算法)
绘图:Gadfly(科学绘图)、Plots(可视化),注意这个包的依赖比较大,国内要改一下下载代码:https://zhuanlan.zhihu.com/p/115118883
图论:LightGraphs
机器学习:Flux
深度学习:Knet
写作:Latexify
-p n
起n个进程--machine-file file
会对file中的每一行启动一个worker。$ echo 'println(PROGRAM_FILE); for x in ARGS; println(x); end' > script.jl
$ julia script.jl foo bar
script.jl
foo
bar
julia> x = 1
1
julia> ans + 1
2
(typemin(Int32), typemax(Int32))
>>(-2147483648, 2147483647)
typemax(Int64)+1
>>-9223372036854775808