![Julia编程——随机器学习兴起的编程语言](http://p2.ttnews.xyz/loading.gif)
概述
Julia 是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。
![Julia编程——随机器学习兴起的编程语言](http://p2.ttnews.xyz/loading.gif)
Julia编程语言即有Python的开发效率,也有C的执行效率,是为数值运算设计的编程语言。Julia可以直接调用C,很多开源的C和Fortran库都集成到了Julia基础库。
Julia试图取代R, MATLAB, Octave等数值计算工具。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia的设计遵从三个原则:快速、表达式丰富和动态语言,Julia的核心使用C语言编写,其他部分使用Julia本身编写。
特点
- 免费开源
- 核心语言非常小。标准库用的是 Julia 语言本身写的
- 调用许多其它成熟的高性能基础代码。如线性代数、随机数生成、快速傅里叶变换、字符串处理。(还在增加中……)
- 丰富的用于建立或描述对象的类型语法
- 高性能,接近于静态编译型语言。包括用户自定义类型等
- 为并行计算和分布式计算而设计
- 轻量级"绿色"协程
- 优雅的可扩展的类型转换/提升
- 支持Unicode, 包括但不限于UTF-8
- 可直接调用 C 函数(不需要包装或是借助特殊的API)
- 有类似shell的进程管理能力
- 有类似Lisp的宏以及其它元编程工具
运行
ulia使用的Just-in-Time实时编译器很有效地提高了运行效率,在某些地方甚至能比得上C和C++,下面通过标准测试程序来测试下它的效率:
上表中只有C++运行时间是绝对时间,其它都是相对于C++的相对时间,数值越小代表用时越少。除少数几项测试Julia惜败于Matlab和JavaScript外,Julia完胜其他高级语言,甚至在pi summation上,成功以25%的优势击败C++。通过使用Intel核心数学库(MKL),MatLabs在矩阵乘法运算中稍占便宜,但是拥有MKL授权的Julia同样可以使用Intel MKL库,不过默认的开源BLAS库性能也不错。
Julia克服了高级语言一直难以逾越的难关:标量算数循环。Matlab的浮点运算JIT和 V8 JS引擎对此也处理得很好。但JS不支持LAPACK等线性代数库导致了在矩阵运算中的低性能,而Julia有比较多的方法消除负载,使得它可以轻松支持任何函数库。
矩阵统计的Julia代码虽然性能上比不上C++但却要简洁得多。然而,规范和编制太过随意可能会在将来成为一个问题。
Julia代码示例
閱讀更多 咱小二 的文章