在科学计算领域,一直对性能有较高的要求,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= [ 135 ; 268] 2×3Array{Int64,2}: 135268julia>a[1,:] 3-elementArray{Int64,1}: 135julia>a[1:2,1] 2-elementArray{Int64,1}: 12julia>b=a'3×2LinearAlgebra.Adjoint{Int64,Array{Int64,2}}: 123658julia>a= [ 123 ; 456 ; 789 ] 3×3Array{Int64,2}: 123456789julia>a*a3×3Array{Int64,2}: 303642668196102126150julia>a^23×3Array{Int64,2}: 303642668196102126150julia>a .^23×3Array{Int64,2}: 149162536496481
注意:矩阵运算这里的 .^2 和 ^2 的区别。
Julia 有一个用于表示整数精确比值的分数类型。分数通过 //
运算符,示例如下:
julia>inv(2//3)3//2julia>piπ=3.1415926535897...julia> (3// 5) * (2 // 3)2//5julia>rationalize(0.5) 1//2julia>denominator(2//3)3julia>numerator(2//3)2
Julia还支持约等于 ≈,示例如下:
julia>0.1≈ (0.1-1e-10) true
另外,函数相关示例如下:
julia>functionf(x,y) x^2+2x*y+y^2endf (genericfunctionwith1method) julia>f(2,3) 25julia>1:5|>sum|>sqrt3.872983346207417