Julia语言的介绍

本文为作者Julia官网翻译,水平有限,还望指教。

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的实时编译器,性能对比如下图所示。
  Fortran Julia Python R Matlab Octave Mathe-matica JavaScript Go LuaJIT Java
  gcc 5.1.1 0.4.0 3.4.3 3.2.2 R2015b 4.0.0 10.2.0 V8 3.28.71.19 go1.5 gsl-shell 2.3.1 1.8.0_45
fib 0.70 2.11 77.76 533.52 26.89 9324.35 118.53 3.36 1.86 1.71 1.21
parse_int 5.05 1.45 17.02 45.73 802.52 9581.44 15.02 6.06 1.20 5.77 3.35
quicksort 1.31 1.15 32.89 264.54 4.92 1866.01 43.23 2.70 1.29 2.03 2.60
mandel 0.81 0.79 15.32 53.16 7.58 451.81 5.13 0.66 1.11 0.67 1.35
pi_sum 1.00 1.00 21.99 9.56 1.00 299.31 1.69 1.01 1.00 1.00 1.00
rand_mat_stat 1.45 1.66 17.93 14.56 14.52 30.93 5.95 2.30 2.96 3.27 3.92
rand_mat_mul 3.48 1.02 1.14 1.57 1.12 1.12 1.30 15.07 1.42 1.16 2.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 maxiter
end

function 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的网页编译环境和多样的数值计算图像显示包。



参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值