今年 7 月 19 日,Julia 语言创始人成立的 Julia Computing 公司宣布完成了 2400 万美元的 A 轮融资,由 Dorilton Ventures 领投,Menlo Ventures、General Catalyst 和 HighSage Ventures 跟投 [1]。融资将被用于 Julia 生态的扩张,继续研发产品让 Julia 语言变得更容易部署、更加好用 [2]。
Julia 是一种速度快且使用简单的高级通用编程语言,最初设计用于科学计算领域 [3],2012 年发布以来已有超过 2900 万次下载,超过 10000 家公司使用 [1],包括 AstraZeneca、Google、Intel、Microsoft 和 NASA 等。作为一个开源的语言项目,有超过 1000 贡献者投入社区 [4]。
Julia 近年的发展势头迅猛(8 月 TIOBE 排名 26 [5]),但众所周知,R、Python 已经是数据计算和人工智能领域最流行的语言,拥有非常丰富的生态系统,对比之下,Julia 还很不成熟。Stack Overflow 上关于 Julia 的问题仍不到 Python 的百分之一 [6]。
图 1:Trends on Stack Overflow [6]
那么 Julia 凭什么优势成为了有力竞争者?
# 突出的特性 #
类似 Python、R 的脚本语言是面向解释器的,用户写完代码,可以直接解释执行,并返回结果;而类似 C、Fortran 等语言必须先编译成机器语言才能执行。后者速度更快但使用起来没有前者方便,因此想要快速实现复杂的程序逻辑时,开发者可能会选择用脚本语言写算法,之后再翻译到 C、C++ 等语言,这是一个花精力又容易出错的过程 [7]。
Julia 的诞生就是为了将以上不同语言的性能结合成一门语言的特性,Julia 的编程过程是交互式的、动态的,同时也拥有静态编译语言的性能 [7]。官网介绍的 Julia 特性如下 [4]:
-
快速: 接近编译型语言的性能,2017 年甚至加入了 Petaflop 俱乐部(峰值超过每秒 1 petaflop 的语言,另几个语言分别是 C、C++ 和 Fortran),Julia 开发的应用 Celeste 在 NERSC 的超级电脑上使用 1300 万线程,达到了1.54 petaflops 的峰值 [8]。
-
动态: 是动态类型系统,并很好地支持了交互编程,易于开发者学习使用。
-
环境可复用: 支持通过 BinaryBuilder 在不同平台上快速重现开发环境。
-
可组合性: 提供了基于多重派发和类型系统的编程范式,可称为面向方法的(method-oriented)[9]。
-
通用: 提供了文件读写、元编程、调试、日志记录、性能分析等标准库,还提供了一个包管理工具,可用于实现完整的应用和微服务。
-
开源: 代码托管在 GitHub,采用 MIT 许可证,当前已有超过 1000 的贡献者。
Julia 的速度一定程度上是语言本