Julia 是怎么火起来的?


Julia 是怎么火起来的?文章插图
本文最初发表于 Ars Technica 网站 , 经原作者 Lee Phillips 授权 , InfoQ 中文站翻译并分享 。
科学计算已经被 Fortran 统治 , 但为大规模数值工作而生的 Julia 横空出世了 。
最近 , 我在网上遇到了许多高兴又激动的科学家 。
一种新工具使这些科学家和数学家兴奋不已 。 这种新工具并非新粒子加速器或超级计算机 。 取而代之的是 , 这个令人兴奋的科学研究的新工具是……一种计算机语言 。
你可能会问 , 为什么计算机语言会如此激动人心?当然 , 有些编程语言会比其他编程语言更好 , 这要取决于你的目的和优先级 。 有些编程语言运行速度更快 , 而有些编程语言则更快 , 更容易开发 。 有些编程语言拥有更大的生态系统 , 可以让你从库中借用经过实战检验的代码 , 并且可以让自己完成较少的工作 。 有些编程语言非常适合处理特定类型的问题 , 而另一些编程语言则擅长于通用性 。
对于从事计算的科学家来说 , 编程语言、编译器和库的质量 , 始终是至关重要的 。 Fortran对于那些用来模拟大气层或设计核武器的人来说是传统的首选工具(这种情况显然经常发生 , 尽管它现在有更多的竞争对手) 。 这种编程语言在市场上一直占据着主导地位 , 因为有了编译器 , 人们因此可以充分利用最大的超级计算机 。 由于 Python 在生态系统中的发展势头及其交互性和快速的开发周期 , 对于当前这批数据科学家来说 , Python 很受欢迎 。
六年前 , 我曾写过一篇文章《科学计算的未来:能否有任何编程语言可以超越上世纪 50 年代的庞然大物?》(Scientific computing’s future: Can any coding language top a 1950s behemoth?) , 叙述了有关 Fortran 在科学计算领域的杰出地位 , 并将其与其他几种编程语言进行了比较 。 我在那篇文章的结尾做了一个预测:在十年之内 , 一种叫做 Julia 的新语言有望成为科学家们在解决大规模数值问题时所使用的编程语言 。 然而 , 我的预测并不十分准确 。
事实上 , Julua 编程语言只花了一半时间就实现了我的预测 。
今年的 JuliaCon 2020 大会够刺激近几年来 , 通过与科学家们的交谈 , Julia 编程语言确实在这个行业中掀起了一股新的热潮 。 但是 , 当我准备写下它的潜力时 , 我真的并不明白为什么这种编程语言会如此流行 。
我的评估是基于 Julia 独特的便捷语法和不妥协的性能的结合 。 当时 , 虽然 Julua 还没有到达 1.0 版本 , 但已经有了很多令人兴奋的讨论 。 看起来 , Julia 已经解决了“双语言问题”:这是 Python 程序员以及其他表达型、解释型语言的用户经常面临的难题 。 你使用 Python 编写了一个程序来解决一个问题 , 并享受它友好的语法和交互性 。 这个程序的测试版可以处理你的问题 , 但是如果你想把它扩展到更实际的应用中 , 速度就会很慢 。 这并不是你的错 。 Python 本身就很慢 , 对于某些类型的应用来说 , 这并不重要 , 但对于你的大型模拟来说却非常重要 。 通过运用各种技术来加速计算 , 但只实现了很小的成果 , 你最终会转向用 C 语言重写计算中最耗时的部分(最常见的) 。 现在速度已经很快了 , 但现在你还是需要维护两种语言的代码 , 这就是所谓的“双语言问题” 。
虽然 Julia 对这个问题的解决方案吸引了科学家和其他人对这门编程语言的兴趣 , 但这并不是这个平台带来新发现的兴奋点的原因 , 而是由于别的原因 。
当我撰写本文时 , JuliaCon(一年一度的 Julia 大会)今年在线举行 。 正常情况下 , 计算机会议的日程都是与编程、编译器、算法、优化以及其他计算机科学相关的内容 。 虽然在今年的 Julia 会议上有很多这样的内容 , 但浏览大会标题却会给人留下一种错误的印象 , 仿佛你是在参加一个科学会议 。 有各种各样的演讲 , 从流体动力学到大脑成像 , 再到语言处理 。 虽然在很多领域都有着令人惊异的多样性 , 但观看演示文稿却给人一种社区的感觉 , 像是受到了自由软件运动的影响 。
所有人的代码都托管在 GitHub 上 。 如果你有兴趣在你的研究中使用某人的算法 , 你可以阅读源代码 , 并且你还可以访问最新的开发版本 。 到了一定年龄的科学家就会知道 , 这与过去的计算研究有多么大的不同 。 在过去 , 代码可是很少从实验室走出来 。
在 Julia 社区中 , 还有很多东西可以统一起来:Julia 的魔力在于它可以促进协作和代码重用 。 下面是一些来自 JuliaCon 2020 大会演讲者的赞誉: