Julia编程——随机器学习兴起的编程语言

Julia编程——随机器学习兴起的编程语言

概述

Julia 是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。

Julia编程——随机器学习兴起的编程语言

Julia编程语言即有Python的开发效率,也有C的执行效率,是为数值运算设计的编程语言。Julia可以直接调用C,很多开源的C和Fortran库都集成到了Julia基础库。

Julia试图取代R, MATLAB, Octave等数值计算工具。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia的设计遵从三个原则:快速、表达式丰富和动态语言,Julia的核心使用C语言编写,其他部分使用Julia本身编写。

Julia编程——随机器学习兴起的编程语言

特点

  • 免费开源
  • 核心语言非常小。标准库用的是 Julia 语言本身写的
  • 调用许多其它成熟的高性能基础代码。如线性代数、随机数生成、快速傅里叶变换、字符串处理。(还在增加中……)
  • 丰富的用于建立或描述对象的类型语法
  • 高性能,接近于静态编译型语言。包括用户自定义类型等
  • 为并行计算和分布式计算而设计
  • 轻量级"绿色"协程
  • 优雅的可扩展的类型转换/提升
  • 支持Unicode, 包括但不限于UTF-8
  • 可直接调用 C 函数(不需要包装或是借助特殊的API)
  • 有类似shell的进程管理能力
  • 有类似Lisp的宏以及其它元编程工具
Julia编程——随机器学习兴起的编程语言

运行

ulia使用的Just-in-Time实时编译器很有效地提高了运行效率,在某些地方甚至能比得上C和C++,下面通过标准测试程序来测试下它的效率:

Julia编程——随机器学习兴起的编程语言

上表中只有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代码示例

Julia编程——随机器学习兴起的编程语言


分享到:


相關文章: