在科学计算领域,一直对性能有较高的要求,Julia是一个新的高性能动态高级编程语言,功能强大,语法简洁,易于用户学习。它拥有丰富的函数库,提供了数字精度和分布式并行运行方式。它内部使用Just-in-Time实时编译器很有效地提高了它的运行效率,有些场景下能比得上C和C++。
根据官网的介绍,Julia 是一门支持过程式、函数式和面向对象的多范式语言。 它像 R、MATLAB 和 Python 一样简单,在高级数值计算方面有丰富的表现力,并且支持通用编程。 为了实现这个目标,Julia 以数学编程语言(mathematical programming languages)为基础,同时也参考了不少流行的动态语言,例如 Lisp、Perl、Python、Lua、和 Ruby。Julia中文文档可见网站
https://docs.juliacn.com/latest/。
Julia 还拥有以下优势:
- 采用 MIT 许可证:免费又开源
- 用户自定义类型的速度与兼容性和内建类型一样好
- 无需特意编写向量化的代码
- 为并行计算和分布式计算设计
- 轻量级协程支持
- 低调又牛逼的类型系统
- 优雅、可扩展的类型转换和类型提升
- 对 Unicode 的有效支持,包括但不限于 UTF-8
- 直接调用 C 函数,无需封装或调用特别的 API
- 像 Shell 一样强大的管理其他进程的能力
- 像 Lisp 一样的宏和其他元编程工具
下面给出一些Julia处理矩阵的示例,感觉和Matlab很像,示例如下:
julia> a = [ 1 3 5 ; 2 6 8]
2×3 Array{Int64,2}:
1 3 5
2 6 8
julia> a[1,:]
3-element Array{Int64,1}:
1
3
5
julia> a[1:2,1]
2-element Array{Int64,1}:
1
2
julia> b = a'
3×2 LinearAlgebra.Adjoint{Int64,Array{Int64,2}}:
1 2
3 6
5 8
julia> a = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]
3×3 Array{Int64,2}:
1 2 3
4 5 6
7 8 9
julia> a * a
3×3 Array{Int64,2}:
30 36 42
66 81 96
102 126 150
julia> a ^ 2
3×3 Array{Int64,2}:
30 36 42
66 81 96
102 126 150
julia> a .^ 2
3×3 Array{Int64,2}:
1 4 9
16 25 36
49 64 81
注意:矩阵运算这里的 .^2 和 ^2 的区别。
Julia 有一个用于表示整数精确比值的分数类型。分数通过
//
运算符,示例如下:
julia> inv(2//3)
3//2
julia> pi
π = 3.1415926535897...
julia> (3 // 5) * (2 // 3)
2//5
julia> rationalize(0.5)
1//2
julia> denominator(2//3)
3
julia> numerator(2//3)
2
Julia还支持约等于 ≈,示例如下:
julia> 0.1 ≈ (0.1 - 1e-10)
true
另外,函数相关示例如下:
julia> function f(x,y)
x^2+2x*y+y^2
end
f (generic function with 1 method)
julia> f(2,3)
25
julia> 1:5 |> sum |> sqrt
3.872983346207417