首页 >> 民商图文 >>壹财信 >>国际视野 >> MIT发布编程语言Julia 1.0版本
详细内容

MIT发布编程语言Julia 1.0版本

时间:2018-08-27     作者:译/李雨蒙【转载】

近日,Julia编程语言的1.0新版本一经推出就受到整个人工智能界的关注,其中最主要的原因就是它史无前例地结合了C 语言的速度、Ruby 的灵活、Python 的通用性,支持并行处理,易于学习与使用,尤其适合科学和工程的计算。正如Julia的创始人之一,Viral Shah所说:“如果你是数学家、科学家或是工程师,那么从前当你选择一门编程语言时,会从它的速度角度去考虑,比C++或Java,又或是从语言的易学程度出发,就像Matlab、R或者是Python。而我们创造了一种两者兼备的语言,就是Julia。”

研发的初衷

随着人工智能中机器学习的发展,科学界对于计算的速度和性能的要求越来越高,而目前许多编程语言都存在各自的局限性。Julia的研究团队野心勃勃,希望能够博采众长,吸取各家编程语言的特点,正如 Julia 团队发表的讲话中所言:“我们想要一种拥有自由许可,开放源码的语言,我们希望它拥有C语言的速度,R语言的动态;易于理解,带有真实口语指令,同时拥有Matlab一样清晰的数学符号,如Python一样的通用,R简捷的统计功能,Perl自然的字串,并且是交互式和可编译的。”

为提高速度,Julia团队研究了所有导致大多数动态语言变慢的因素,并仔细研究可以消除哪些因素。比如,动态语言通常允许数组元素和对象字段保存任何类型的值。然而,研究表明,即使在这些语言中,具有常量类型的同构数组和字段也非常普遍。所以,他们在设计 Julia 时利用了这一点,更容易添加类型限制,并在任何可能的情况下默认使用类型统一的集合。

Julia 1.0的新特性

一个充满活力,欣欣向荣的地区往往是围绕着一种语言而生的,世界各地的人们在不断地精炼和塑造Julia,最终达到研究人员所期望的目标。Julia 项目由麻省理工学院教授 Alan Edelman 领导,其大部分关键发展成果都来自麻省理工学院的 Julia 实验室,也有超过 700 名志愿者参与了 1.0 版本的制作。经过大量的修正完善,目前的1.0版本具有以下的特点:

快速:Julia自设计之初就施行最高标准操作, 通过LLVM 为多平台编译有效本地代码。

通用性:运用多种调配手段,Julia可以更加简单地表达多种以目标为导向、功能性的编程模式,比如提供异步I/O 、过程控制、登录、性能分析、程序安装管理等等。

动态: Julia 是被动态输入的, 就像是一种脚本语言,对于互动作用有很强的支撑作用。

科技:Julia擅长带有语法的数字运算,适用于数学领域,包含多种数值数据类型。Julia的多种调配是定义数字和类数组数据的一个自然适应过程。

可选择性: Julia拥有丰富的描述性数据,选择范围多样,可用于阐明和巩固程序。

可组合:Julia的数据包可以自然地组合在一起工作。

围绕着Julia 1.0 的新功能,研究人员有针对性地建立了一些新的外部程序包,比如数据处理,以及修补后的操作系统。利用新的缺损支持技术,Julia 1.0最重要的新功能就是承诺语言API(应用程序接口)的稳定性:在1.0系统中书写的编码在未来的1.1、1.2 系统中仍然可以继续使用,语言可以被完全拷贝。

另外,异类结构支撑也得到大幅度的提升,Julia编译器从内部构件被进一步的解耦。Intel KNL系列硬件可直接使用Julia,Nvidia的GPU 也可以通过CUDAnative.jl来直接编程(无须编写CUDA代码),而 支持Google TPU的接口也在进一步的研发中。

不过,Julia 1.0的新特点不仅仅体现在稳定性方面,同时还推出了多种新型、强大的创新语言功能。比如:

全新的嵌入程序包极大地提升了性能,相比过去安装程序和其他操作更加便捷。同时,支持单项程序的环境,记录正在工作程序的精准状态,可能是与他人共享的程序,亦或是与未来的工作有关。最后,重新设计的部分包括对私人程序包和程序储藏进行无缝技术支持。用户可以使用常用的开源程序体系中的工具安装和管理私人程序包。

Julia 对于缺失值拥有全新的规范表示。能够代表和处理缺失数据对于统计和数据科学是至关重要的部分。在过去版本的Julia中,联合体的性能较慢,1.0版本中的速度已经可以匹敌C或C++系统中缺失数据表示的速度,同时更加通用和灵活。

带有适当语法的传播是语言的核心特点之一。Julia1.0很容易扩展传播范围,在GPUs(图形处理器)和其他向量化硬件上定制类别,完善最有效的技术指令,为未来进一步的性能升级奠定基础。

除了高性能,Julia 还有一些与众不同的特性。比如,Julia 能够访问异常广泛的编程堆栈。你可以利用良好的性能操作比特和字节(并查看汇编代码),同时也可以处理高阶函数、设计宏定义、进行面向对象编程,所有这一切都可以很好地融合在一起。

机器学习领域的应用

除了上述特点, 研究人员为Julia的代码转换注入重要机制,可以使Julia进行事后分析(post-hoc analysis)并且实现原有代码的扩展。越过程序员的指令,如分析、调试,最终可以完成机器学习中的自动微分(Automatic Differentiation),对于机器学习而言,Julia还可以对硬件加速器上的原生代码生成,提供很好的支持。无论是深度学习、机器学习还是 AI 方面,Julia 的数学语法使其成为理想的表达算法,支持 GPU 加速和处理数 TB 的数据。同时,丰富的机器学习生态系统还提供监督学习算法(如回归、决策树)、无监督学习算法(如聚类)、贝叶斯网络和马尔可夫链蒙特卡罗包等。

从实际应用来说,Julia 已经用于自动驾驶汽车、机器人和 3D 打印机,还广泛应用于精准医疗、增强现实、基因组学及风险管理。在用户方面,Julia 的下载量已经超过 200 万次。作为一种开放源码语言,很难将这个数字转换为真实用户数量。此外,在 Julia Computing 方面,已经有来自 700 所大学和 1000 多家公司的用户下载或使用了 Julia。

根据 Julia 研究人员所说,在7项基础算法的测试中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。现在,Julia 语言主要应用在科学领域,下载对象包括谷歌、脸书和美国能源部等机构。未来,Julia 很可能扩展其目标人群,应用于更多领域,成为世界主流的编程语言。

编译自Julialang官网

 (责任编辑 姜懿翀)


技术支持: 联子网络科技(北京)有限公司 | 管理登录