Julia语言的介绍

来源:互联网 发布:m51风衣 知乎 编辑:程序博客网 时间:2024/05/01 18:40
本文为作者Julia官网翻译,水平有限,还望指教。
https://julialang.org/

Julia语言的介绍

Julia是高性能的动态高级科学计算语言,提供了精致的编译器(sophisticated compiler),分布式并行计算(distributed parallel execution),数值精度(numerical accuracy),和一个可扩展的科学函数库。Julia的基础库是用Julia自身编写的,成熟的合并了(integrates mature),最佳版本的C和Fortran的线性代数,随机数字生成,单线程,字符处理的库。另外,Julia开发者社区也提供了一系列的可扩展包,使用的是Julia内置的快速空间(rapid pace)的包管理工具。IJulia结合了Jupyter和Julia社区,提供了一个强大的基于浏览器的图形笔记界面。

Julia程序是被组织成多样的数据类型(multiple dispatch),定义函数方法和过载的时候,不同的内容类型组合,可以被用户定义。

特点介绍(A Summary of Features)

1.多样的数据类型(multiple dispatch),提供在一个函数中交叉组合不同数据类型的能力。
2.动态类型系统,文件类型,最优化,分派(dispatch)。
3.高性能,接近静态编译语言,C。
4.内置包管理器。
5.类似LISP的宏指令(macros),和其他的元编程组件。
6.调用Python函数,用PyCall包。
7.可以直接调用C函数,不用封装器或者特殊的API。
8.强大的类shell进程管理能力。
9.平行分布式计算设计。
10.协同协议为轻量级“绿色"线程。
11.快速的用户自定义类型,内置,紧凑。
12.自动高效的生成特殊代码,对用不同的内容(argument )类型。
13.优雅可扩展的数据和其他类型的转化和建立。
14.高效支持Unicode,包括但不仅限于UTF-8。
15.MIT许可证,免费开源自由。

高性能JIT编译器(High-Performance JIT Compiler)

Julia是基于LLVM的实时编译器,性能对比如下图所示。
 FortranJuliaPythonRMatlabOctaveMathe-maticaJavaScriptGoLuaJITJava gcc 5.1.10.4.03.4.33.2.2R2015b4.0.010.2.0V8 3.28.71.19go1.5gsl-shell 2.3.11.8.0_45fib0.702.1177.76533.5226.899324.35118.533.361.861.711.21parse_int5.051.4517.0245.73802.529581.4415.026.061.205.773.35quicksort1.311.1532.89264.544.921866.0143.232.701.292.032.60mandel0.810.7915.3253.167.58451.815.130.661.110.671.35pi_sum1.001.0021.999.561.00299.311.691.011.001.001.00rand_mat_stat1.451.6617.9314.5614.5230.935.952.302.963.273.92rand_mat_mul3.481.021.141.571.121.121.3015.071.421.162.36

function mandel(z)    c = z    maxiter = 80    for n = 1:maxiter        if abs(z) > 2            return n-1        end        z = z^2 + c    end    return maxiterendfunction randmatstat(t)    n = 5    v = zeros(t)    w = zeros(t)    for i = 1:t        a = randn(n,n)        b = randn(n,n)        c = randn(n,n)        d = randn(n,n)        P = [a b c d]        Q = [a b; c d]        v[i] = trace((P.'*P)^4)        w[i] = trace((Q.'*Q)^4)    end    std(v)/mean(v), std(w)/mean(w)end

以上的代码十分的清晰,任何一个有过科学计算语言编程经验的人都会看懂。在不放弃性能的情况下比C++更加的简单。根据设计,Julia允许用户从低级的循环,到高级的编程风格,在牺牲部分性能的情况下,是的复杂的算法可以快速的处理。这个可持续的设计级现象是Julia接近编码的特点,也是这个语言的最重要的设计风格。

为平行和云计算而设计(Designed for Parallelism and Cloud Computing)

Julia在用户不强制任何特殊的平行类型,反而,一共了一系列的关键创建分布式空间(key building blocks for distributed computation),使得足够灵活去支持不同的数据类型,允许用户添加更多。下面的代码显示了如何在平行状态下投硬币的计算。

nheads = @parallel (+) for i=1:100000000 rand(Bool)end

IJulia和Gadfly分别是类似于Jupyter的网页编译环境和多样的数值计算图像显示包。



参考文献
1.https://julialang.org/

0 0
原创粉丝点击