Julia - 概述

什么是 Julia 编程语言?

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

Julia 发展历史

让我们从以下几点来看一下 Julia 编程语言的历史 −

  • Jeff Bezanson、Stefan Karpinski、Viral B. Shah 和 Alan Edelman 于 2009 年开始研究 Julia。

  • 上述四人开发团队于 2012 年 2 月 14 日推出了一个网站。该网站有一篇博客文章,主要解释 Julia 编程语言的使命。

  • 2012 年 4 月晚些时候,Stefan Karpinski 在接受 InfoWorld 杂志采访时,将他们的编程语言命名为"Julia"

  • 2014年,名为"The JuliaCon"的Julia年度学术会议; 用户和开发者已经启动,此后每年定期举办。

  • 2014 年 8 月,Julia 版本 0.3 发布使用。

  • 2015 年 10 月,Julia 版本 0.4 发布使用。

  • 2016 年 10 月,Julia 版本 0.5 发布使用。

  • 2017 年 6 月,Julia 版本 0.6 发布使用。

  • Julia 版本 0.7 和版本 1.0 均于 2018 年 8 月 8 日同一天发布。其中 Julia 版本 0.7 对于测试软件包以及想要升级到版本 1.0 的用户特别有用。

  • Julia 版本 1.0.x 是仍受支持的最旧版本。

  • 2019 年 1 月,Julia 版本 1.1 发布使用。

  • 2019年8月,Julia 1.2版本发布使用。

  • 2019 年 11 月,Julia 版本 1.3 发布使用。

  • 2020 年 3 月,Julia 版本 1.4 发布使用。

  • 2020年8月,Julia 1.5版本发布使用。

Julia 的功能

以下是 Julia 提供的一些特性和功能 −

  • Julia 为我们提供了一个低调但强大且动态的类型系统。

  • 借助多重分派,用户可以跨多种参数组合定义函数行为。

  • 它具有强大的 shell,使 Julia 能够轻松管理其他进程。

  • 用户无需任何包装器或任何特殊 API 即可调用 C 函数。

  • Julia 为 Unicode 提供了有效的支持。

  • 它还为用户提供类似 Lisp 的宏以及其他元编程过程。

  • 它提供轻量级绿色线程,即协程。

  • 它非常适合并行性和分布式计算。

  • 在 Julia 中完成的编码速度很快,因为不需要为了性能而对代码进行矢量化。

  • 它可以有效地与其他编程语言(例如 Python、R 和 Java)交互。 例如,它可以使用 PyCall 与 Python 交互,使用 RCall 与 R 交互,以及使用 JavaCall 与 Java 交互。

Julia 的范围

Julia 的核心设计者和开发者 Jeff Bezanson、Stefan Karpinski、Viral B. Shah 和 Alan Edelman 明确表示,Julia 的明确设计目的是为了弥补技术计算学科现有软件工具集中的以下差距 −

原型设计 − 原型设计是技术计算学科中的一个这样的问题,它需要一种高级且灵活的编程语言,以便开发人员不必担心计算和编程语言本身的低级细节。

性能 − 实际计算需要最大性能。 编程语言的生产版本通常应使用"Fortran"或"C"编程语言编写。

速度 − 技术领域的另一个重要问题是速度。 在 Julia 之前,程序员需要掌握高级编程(用 Matlab、R 或 Python 编写代码进行原型设计)和低级编程(编写程序中对性能敏感的部分,以加快实际计算速度) ,采用统计编译语言,如 C 或 Fortran)。

Julia 编程语言为实践者提供了编写高性能程序的可能性,这些程序像 C 或 Fortran 一样有效地使用 CPU 和内存等计算机资源。 从这个意义上说,Julia 减少了对低级编程语言的需求。 Julia、LLVM JIT(低级虚拟机即时)编译器技术的最新进展证明,在具有表达能力和纯粹速度的环境中工作是可能的。

与其他语言的比较

数据科学家的目标之一是实现表达能力和纯粹的速度,从而避免使用"C"编程语言。 Julia 为程序员提供了一个技术计算的新时代,他们可以用高级编程语言开发库。

以下是 Julia 与最常用编程语言(Matlab、R 和 Python)的详细比较 −

MATLAB − Julia 的语法与 MATLAB 类似,但与 MATLAB 相比,它是一种更加通用的语言。 尽管 Julia 中的大多数函数名称类似于 OCTAVE(MATLAB 的开源版本),但计算却截然不同。 在线性代数领域,Julia 拥有与 MATLAB 同样强大的功能,但不会给用户带来同样的许可费用问题。 与 OCTAVE 相比,Julia 也快得多。 MATLAB.Jl 是 Julia 提供 MATLAB 接口的包。

Python − Julia 将类似 Python 的代码编译为机器代码,为程序员提供与 C 编程语言相同的性能。 如果我们比较 Julia 和 Python 的性能,Julia 领先 10 到 30 倍。 借助 PyCall 包,我们可以在 Julia 中调用 Python 函数。

R − 众所周知,在统计领域,R 是最好的开发语言之一,但随着性能提升 10 到 1,000 倍,Julia 在统计领域与 R 一样可用。 MATLAB 不适合做统计,R 也不适合做线性代数,但 Julia 非常适合做统计和线性代数。 另一方面,如果我们将 Julia 的类型系统与 R 进行比较,前者的类型系统要丰富得多。