JuLia 的适用范围

Julia 的核心设计者与开发者(Jeff Bezanson, Stefan Karpinski, and Viral Shah)业已阐明,对于遵从现有技术计算TC准则的软件工具的深层失望才造就了Julia。简单来讲,归结为如下几点困境:

  • 原型编程在计算领域还存在问题,它需要高级、易用、灵活的编程语言,而这种语言能让开发者着力于问题本身,而非纠结于编程语言和计算过程的底层细节。
  • 实际的计算需要最佳的性能;10倍的计算时间就是莫大的差别了(就比如1天跟10天的区别),因此计算计算工具的正式版就不得不使用C 或FORTRAN 写就。
  • Julia 之前,从业者不得不屈就于“尚且方便的计算速度”。他们使用友好且具有表达力,但却是老掉牙的解释型语言(如MATLAB、R、Python)来阐释问题。想要优化性能并提高实际计算速度,他们又不得不退而求其次,使用C 或 Fortran 这种静态编译语言,甚至使用汇编语言。掌握这两个层面也并不简单:一方面使用如MATLAB、R、Python这种高级语言编写原型代码,另一方面使用C 在执行层面完成同样的工作。

Julia 显然也就是为了弥补这个空档而设计的。它使得编写如C 般高效地使用CPU 及内存的程序成为可能;并且全程一直使用Julia,也就不必使用低层次的编程语言了。如此,你就能就问题原型出发后,使用简单的编程模型快速迭代,而且得到近乎C 的性能。Julia 的开发者也证明了“同一环境下表达能力和速度兼备”的可能性。仅需要使用最近的高级特性“即时底层虚拟机”LLVM JIT

总之,对Julia有如下几点说明:

  • Julia 是以MIT license 开源免费的。
  • 它被设计成了易用、易学、优雅、清晰、动态且能缩短开发时间的交互式语言。为此,Julia 近乎于熟悉明了的数学公式伪代码。例如,如下即为多项式函数的定义代码:
      x -> 7x^3 + 30x^2 + 5x + 42
    
    不难发现,此处已无对变量乘法说明的必要。
  • 用户不必跳出Julia 环境,就能有理想的计算能力和计算速度。
  • 元编程和宏定义的设计,为器提供了高级的抽象能力。
  • 除用作纯粹的技术计算外,它也可用作通用编程。
  • 它有内置且简单的并行于并发能力,在今日及未来的CPU 多核世界也将大有所为。

此前,多数研究人员以及语言设计者都认为把这些集成到了一个环境里不可能,但是Julia 做到了。

TC. Technical Computing
LLVM JIT. Low Level Virtual Machine Just in Time

results matching ""

    No results matching ""