MIT 开发的 Julia 语言是全球热度上升最快的编程语言之一,下载量超过 200 万次,下载者包括谷歌、Facebook、FAA 和美国能源部等各个部门的开发者。近日,MIT CSAIL 实验室正式发布了 Julia 1.0,该语言期望结合 C 的速度、Matlab 的数学表征、Python 的通用编程与 Shell 的胶水命令行,并构建开源、自由与便捷的编程语言。
Julia 语言的官网:https://julialang.org/
Julia 语言项目地址:https://github.com/JuliaLang
在过去一年中,研究者利用 Julia 在一台超级计算机上分析天文图像,速度提升了 1000 倍,在 15 分钟内将接近 2 亿个天体进行分类。从技术上来看,这种语言还会长期发展下去。然而,现在是一个里程碑的时刻:在本周于伦敦举办的 Julia 语言年会上,Julia 1.0 正式发布!一起发布的还有 JuliaCon。
Julia 的开发者之一、就职于 MIT 计算机科学与人工智能实验室(CSAIL)的教授 Alan Edelman 表示:「Julia 1.0 的发布证明,该语言已经做好准备,将 Python 和 R 的高效性和易用性与 C++的闪电速度结合在一起,改变技术世界。」
从实际应用来说,Julia 已经用于自动驾驶汽车、机器人和 3D 打印机,此外还广泛应用于精准医疗、增强现实、基因组学及风险管理。从 Julia 的生态系统来说,目前它主要的特征或应用领域为数据可视化、一般性的 UI 与网站、数据科学、机器学习、科学计算与平行计算等。
Julia 目前下载量已经达到了 200 万次,且 Julia 社区开发了超过 1900 多个扩展包。这些扩展包包含各种各样的数学库、数学运算工具和用于通用计算的库。除此之外,Julia 语言还可以轻松使用 Python、R、C/C++ 和 Java 中的库,这极大地扩展了 Julia 语言的使用范围。
现在 Julia 1.0 版本已经可以下载了。如果你从 Julia 0.6 或更早的版本升级代码,我们建议你首先使用过渡版本 0.7,它包含了弃用警告,可以帮助引导升级过程。如果你的代码没有警告,那么你就可以直接变更到 1.0 版本而不会产生任何功能性的改变。已注册软件包正利用 0.7 这个过渡版本,并发布了 1.0 的兼容更新。
当然,Julia 1.0 中最重要的一个新特征是对语言 API 稳定性的承诺:为 Julia 1.0 编写的代码可以继续在 Julia 1.1、1.2 等版本上使用。该语言是「完全成熟的」,核心语言开发者和社区都可以基于这个坚实的基础构建新的包、工具和特征。
Julia 1.0 不仅涉及稳定性,还引入了多种新的强大、创新性语言功能。自 0.6 版本以来的新功能如下,更多详细与准确的内容请查看更新文档原文:
一种全新的内置程序包管理器给 Julia 1.0 带来巨大的性能提升,并令其相比以往更容易进行程序包和依赖库安装。它还支持每项目(per-project)的包环境,并记录工作应用的明确状态来和其他人(以及你的未来项目)共享。最后,该新设计还完全支持私人包和软件包存储库。你可以使用相同的工具安装和管理你用于开源包生态系统的私人包。JuliaCon 的展示视频对新设计和行为提供了很好的概述。
Julia 拥有对缺失值的新的标准表示。允许表示和处理缺失数据对于统计和数据科学来说是很基础的。在典型的 Julia 编程形式中,新的解决方案是通用的、可组合的和高性能的。任何泛用群集类型可以高效地支持缺失值,仅需要允许元素包含预定义值 missing。这种「统一类型化」的群集的性能在过去版本中可能会非常慢,但如今的编译器改进已经允许 Julia 在其它系统中匹配自定义 C 或 C++的缺失值表示的速度,同时在通用性和灵活性上也远远超越过去的版本。
Julia 语言本身是非常好的学习器,很多组件被分割封装进 Julia 的「标准库」包,而不是作为「基础」语言的一部分。如果你需要它们,可以导入它们(无需安装)。未来,标准库还将出现多种版本,并独立于 Julia 更新,这使得它们可以更快地迭代。
我们已经对 Julia 的所有 API 进行了完全的评议,以改善稳定性和可用性。对很多模糊的已有命名和无效的编程模式进行了重命名或重构,使之更匹配 Julia 的能力。这使得处理集合更加稳定和一致,以确保参数顺序遵循 Julia 语言中一贯的标准,并在恰当的情况下将(更快的)关键词参数整合进 API。
现在围绕 Julia 1.0 的新功能专门构建了许多新的外部软件包,如数据处理和操作生态系统的改进和异构架构支持的改进等。
Julia 1.0 还包括了无数其它的改进,如果想查看完整的列表,请访问:https://docs.julialang.org/en/release-0.7/NEWS/