Julia语言

Julia是一种高级通用动态编程语言，它最初是为了满足高性能数值分析和计算科学的需要而设计的，不需要解释器，速度快，也可用于客户端和服务器的Web用途、低级-{zh:系統程式設計;zh-hans:系统编程;zh-hant:系統程式設計;}-或用作规约语言。

Julia设计的独特之处包括，参数多态的类型系统，完全动态语言中的类型，以及它多分派的核心编程范型。它允许并发、并行和分布式计算，并直接调用C和Fortran库而不使用粘合代码。

Julia拥有垃圾回收机制，使用及早求值，包含了用于浮点计算、线性代数、随机数生成和正则表达式匹配的高效库。有许多库可以使用，其中一些（如用于快速傅里叶变换的库）已经预先捆绑在Julia裡(now available with using FFTW in current versions; that dependency is one of many moved out of the standard library to a package because it is GPL licensed, and thus is not included in Julia 1.0 by default.) 。

 历史 

该项目大约于2009年中旬由四位电脑科学家共同计劃。这个工具存在一群拥有各种语言丰富编程经验的Matlab高级用户，对现有的科学计算编程工具感到不满——这些软件对自己专长的领域表现得非常棒，但在其它领域却非常糟糕。他们想要的是一个开源的软件，它要像C语言一般快速而又拥有如同Ruby的动态性；要具有Lisp般真正的同像性而又有Matlab般熟悉的数学记号；要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力，易于学习而又不让真正的黑客感到无聊；还有，它应该是交互式的，同时又是编译型的。

 特点 
 功能 
主要用于数值计算。
 其他 
 核心语言非常小。标准库用的是Julia语言本身写的
 调用许多其它成熟的高性能基础代码。如线性代数、随机数生成、快速傅里叶变换、字符串处理。
 丰富的用于建立或描述对象的类型语法
 高性能，接近于静态编译型语言。包括用户自定义类型等
 为并行计算和分布式计算而设计
 轻量级协程
 优雅的可扩展的类型转换/提升
 支持Unicode，包括但不限于UTF-8
 可直接调用C函数（不需要包装或是借助特殊的API）
 有类似shell的进程管理能力
 有类似Lisp的-{zh-cn:宏;zh-tw:巨集}-以及其它元编程工具
 可與Jupyter notebook 一起使用

 示例 
 生成Mandelbrot集合 
function mandel(z)
    c = z
    max = 80
    for n = 1:max
        if abs(z) > 2
            return n-1
        end
        z = z^2 + c
    end
    return max
end

 随机矩阵统计 
using LinearAlgebra: tr
using Statistics #导入std, mean等函数

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] = tr((P'*P)^4)
        w[i] = tr((Q'*Q)^4)
    end
    std(v)/mean(v), std(w)/mean(w)
end

 参考资料 

 參閱 

 Matlab
 GNU Octave
 R语言
 Mathematica
 SageMath

 外部链接 


 源代码 
 中文社区 
 中文文档 

Category:程序设计语言
Category:陣列編程語言
Category:面向对象的编程语言
Category:面向文本编程语言
Category:同像性编程语言
Category:2012年軟體
Category:2012年建立的程式語言
Category:自由編譯器與直譯器