1
2
3
python
★ 31.3k
golang
★ 72.9k
nodejs
★ 70.4k
rust
★ 45.1k
5
6
Rapid development Production
Readable & modifiable Performance






7
a = [1, 2, 3, 4, 5]
function square(x)
return x^2
end
for x in a
println(square(x))
end
8
https://julialang.org/benchmarks/
9
10
https://juliacomputing.com/case-studies/laketide.html


https://juliacomputing.com/case-studies/mit-robotics.html



https://juliacomputing.com/case-studies/ny-fed.html
13
https://github.com/FRBNY-DSGE/DSGE.jl
https://juliacomputing.com/case-studies/rna.html


https://juliacomputing.com/case-studies/circuitscape.html


 http://maps.tnc.org/migrations-in-motion/


https://juliacomputing.com/case-studies/intel-astro.html
20
https://www.nature.com/articles/d41586-019-02310-3
https://github.com/JuliaRegistries/General/blob/master/Registry.toml
22
23
24
https://docs.juliatw.org/latest/
25
26
27
28
29
30
VimEmacsVscodeSublime IntelliJ
31




32
μ = 0
σ = 1
normal = Normal(μ, σ)







33


34
for i = 1:100_000
do_something()
end
Threads.@threads for i = 1:100_000
do_something()
end
35
Julia mode:
julia> using Pkg
julia> Pkg.update()
julia> Pkg.add(“Foo”)
julia> Pkg.rm(“Foo”)
36
Pkg mode:
v(1.4) pkg> update
V(1.4) pkg> add Foo
v(1.4) pkg> rm Foo
julia> @code_native add(1, 2)
.text
Filename: REPL[2]
pushq %rbp
movq %rsp, %rbp
Source line: 2
leaq (%rcx,%rdx), %rax
popq %rbp
retq
nopw (%rax,%rax)
function add(a, b)
return a+b
end
37
julia> @code_llvm add(1, 2.0)
; Function Attrs: uwtable
define double @julia_add_71636(i64, double) #0 {
top:
%2 = sitofp i64 %0 to double
%3 = fadd double %2, %1
ret double %3
}
function add(a, b)
return a+b
end
38
48
49
https://juliastats.org/
50
51
52
53
54
Bootstrap
CategoricalArrays
Clustering
CSV
DataFrames
Distances
Distributions
GLM
HypothesisTests
KernelDensity
Loess
MultivariateStats
StatsBase
TimeSeries
julia> using DataFrames
julia> df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"])
4× 2 DataFrame
│ Row │ A │ B │
├─────┼───┼───┤
│ 1 │ 1 │ M │
│ 2 │ 2 │ F │
│ 3 │ 3 │ F │
│ 4 │ 4 │ M │
55
julia> df[:A]
4-element Array{Int64,1}:
1
2
3
4
julia> df[2, :A]
2
56
julia> using CSV
julia> df = CSV.read("data.csv")
julia> df = DataFrame(A = 1:10);
julia> CSV.write("output.csv", df)
57
julia> names = DataFrame(ID = [1, 2], Name = ["John Doe",
"Jane Doe"])
julia> jobs = DataFrame(ID = [1, 2], Job = ["Lawyer",
"Doctor"])
julia> full = join(names, jobs, on = :ID)
2× 3 DataFrame
│ Row │ ID │ Name │ Job │
├─────┼────┼──────────┼────────┤
│ 1 │ 1 │ John Doe │ Lawyer │
│ 2 │ 2 │ Jane Doe │ Doctor │ 58
julia> q1 = @from i in df begin
@where i.age > 40
@select {number_of_children=i.children, i.name}
@collect DataFrame
end
59
63
julia> data = DataFrame(X=[1,2,3], Y=[2,4,7])
3x2 DataFrame
|-------|---|---|
| Row # | X | Y |
| 1 | 1 | 2 |
| 2 | 2 | 4 |
| 3 | 3 | 7 |
64
julia> OLS = glm(@formula(Y ~ X), data, Normal(),
IdentityLink())
DataFrameRegressionModel{GeneralizedLinearModel,Float64}:
Coefficients:
Estimate Std.Error z value Pr(>|z|)
(Intercept) -0.666667 0.62361 -1.06904 0.2850
X 2.5 0.288675 8.66025 <1e-17
65
julia> newX = DataFrame(X=[2,3,4]);
julia> predict(OLS, newX, :confint)
3× 3 Array{Float64,2}:
4.33333 1.33845 7.32821
6.83333 2.09801 11.5687
9.33333 1.40962 17.257
# The columns of the matrix are prediction, 95% lower and
upper confidence bounds
66
67
# initialize the attractor
n = 1500
dt = 0.02
σ, ρ, β = 10., 28., 8/3
x, y, z = 1., 1., 1.
# initialize a 3D plot with 1 empty series
plt = plot3d(1, xlim=(-25,25), ylim=(-25,25), zlim=(0,50), xlab = "x",
ylab = "y", zlab = "z", title = "Lorenz Attractor", marker = 1)
# build an animated gif, saving every 10th frame
@gif for i=1:n
dx = σ*(y - x) ; x += dt * dx
dy = x*(ρ - z) - y ; y += dt * dy
dz = x*y - β*z ; z += dt * dz
push!(plt, x, y, z)
end every 10

 JuliaStats

68
69
70
https://julialang.org/blog/2017/12/ml&pl-zh_tw


71Ref: https://venturebeat.com/2019/02/18/facebooks-chief-ai-scientist-deep-learning-may-need-a-new-programming-language/
Pic: https://xconomy.com/boston/2017/11/01/as-facebook-fights-fake-news-lecun-sees-bigger-role-for-a-i/
2019.2.20
10 a.m.



73
https://github.com/FluxML/Zygote.jl
74
julia> using Zygote
julia> f(x) = 3x + 2
f (generic function with 1 method)
julia> f(3.)
11.0
julia> f'(3.)
3.0
75
julia> @code_llvm f'(3.)
; Function Attrs: uwtable
define double @"julia_#34_17010"(double) #0 {
top:
ret double 3.000000e+00
}





76






77
78
Pic: https://blog.algorithmia.com/introduction-to-loss-functions/
Loss function
Pic: http://dsdeepdive.blogspot.com/2016/03/optimizations-of-gradient-descent.html
Gradient







79



 for-loop, while-loop




 81
@model gdemo(x, y) = begin
# Assumptions
σ ~ InverseGamma(2,3)
μ ~ Normal(0,sqrt(σ))
# Observations
x ~ Normal(μ, sqrt(σ))
y ~ Normal(μ, sqrt(σ))
end
https://turing.ml/dev/
82
https://turing.ml/dev/
83
https://github.com/alan-turing-institute/MLJ.jl
Integrate 109 models
84
https://github.com/alan-turing-institute/MLJ.jl






85
https://github.com/alan-turing-institute/MLJ.jl



 Next: Machine Learning and Deep Learning
on Quantum Computing
86
https://github.com/QuantumBFS/Yao.jl





87
https://github.com/JuliaGPU/CuArrays.jl
88







89


90
http://www.stochasticlifestyle.com/co
mparison-differential-equation-solver-
suites-matlab-r-julia-python-c-fortran/



91
Objective types
• Linear
• Convex Quadratic
• Nonlinear (convex and
nonconvex)
Constraint types
• Linear
• Convex Quadratic
• Second-order Conic
• Semidefinite
• Nonlinear (convex and
nonconvex)
Variable types
• Continuous
• Integer-valued
• Semicontinuous
• Semi-integer
92
93


94
95
https://mobile.twitter.com/KenoFischer/status/1158517084642582529
96
https://juliacon.org/2020/
https://julialang.org/teaching/






101
Julia: The language for future
Julia: The language for future

Julia: The language for future