Julia程序设计语言的不合理有效性

2020-10-11 15:46:43

最近我遇到了很多高兴和兴奋的科学家。当然,虚拟意义上的“偶遇”,因为会议和其他在肉类空间与科学家碰撞的机会几乎已经被排除在外。大多数科学家相信疾病的细菌理论。

不管怎样,这些科学家和数学家对一种新工具感到兴奋。它既不是一台全新的粒子加速器,也不是一台超级计算机。取而代之的是,这一令人兴奋的科学研究新工具是……。一种计算机语言。

你会问,计算机语言怎么会令人兴奋呢?当然,有些比另一些更好,这取决于你的目的和优先顺序。有些跑得更快,而另一些则更快,更容易开发。有些有更大的生态系统,允许您从库中借用经过战斗测试的代码,自己做的工作更少。有些非常适合于特定类型的问题,而另一些则擅长通用性。

对于从事计算的科学家来说,语言、编译器和库的质量,当然还有他们运行的机器,一直都很重要。对于那些工作是模拟大气层或设计核武器的人来说,Fortran是传统的选择工具(现在仍然经常是,尽管它现在竞争更激烈)。这种语言主导了市场,因为有编译器可以很好地利用最大的超级计算机。对于当前这一批数据科学家来说,Python目前很受欢迎,因为它的生态系统势头强劲,交互性和开发周期很快。

六年前,我曾在这些页面上写过关于Fortran在科学计算方面的持久突出地位,并将其与其他几种语言进行了比较。在那篇文章的结尾,我预测,在10年内,一种名为朱莉娅的新语言很有可能成为科学家们在解决大规模数值问题时所求助的语言。不过,我的预测并不十分准确。

近几年与科学家交谈,计算机语言朱莉娅真正在业界掀起了一股新的热情浪潮。但当我写到它的潜力时,我不明白为什么这种语言会起飞。

我的评估基于Julia方便的语法和不折不扣的性能的独特组合。当时,虽然朱莉娅还处于1.0之前的状态,但已经有了大量激动人心的闲聊。Julia似乎已经解决了“两种语言问题”--这是Python程序员以及其他富有表现力、解释型语言的用户经常面临的难题。您可以使用Python编写解决问题的程序,享受其令人愉快的语法和交互性。该程序在问题的测试版本上工作,但是当您试图将其扩展到更现实的情况时,它太慢了。这不是你的错。Python天生就很慢-这对于某些类型的应用程序无关紧要,但对于大型模拟却很重要。在应用了各种技术来加速它,但只获得了一定的收益之后,您最终求助于用C语言重写计算中最耗时的部分(最常见的)。现在它已经足够快了,但是现在您还需要维护两种语言的代码,因此出现了两种语言的问题。

尽管朱莉娅对这个问题的解决方案吸引了科学家和其他人使用这门语言,但这并不是围绕该平台新发现的兴奋之处。

当我写这篇文章的时候,今年的JuliaCon,一年一度的Julia大会,发生了(当然是在网上)。通常,计算机会议的日程安排都是关于编程、编译器、算法、优化和其他计算机科学主题的题目。虽然在今年的朱莉娅会议上有很多这样的内容,但浏览一下标题会给人一种不经意间进入科学会议的印象。有从流体动力学到大脑成像再到语言处理的各种演示。然而,尽管有令人惊叹的各种领域,但观看演示文稿给人一种围绕着似乎受到自由软件运动影响的共同态度的社区感。

每个人的密码都在GitHub上。如果您对在您的研究中使用某人的算法感兴趣,您可以阅读源代码,并且可以访问正在开发的最新版本。到了一定年龄的科学家就会知道,这与过去的计算研究有多么大的不同。在过去,代码很少离开实验室。

Julia社区还被其他东西统一起来:对Julia促进协作和代码重用的魔力(这个词不止一次出现)感到共同的喜悦。考虑一下来自JuliaCon 2020演讲者的一些赞誉:

这是朱莉娅在解决这些问题时如此强大的原因之一[…]。这种集成使朱莉娅比其他语言更具优势[…]。我们能够在很短的时间内开发出这些解决方案:

朱莉娅确实是允许这样一个项目存在的语言:乔治·达瑟里斯,科学助理约翰·沃森博士。

朱莉娅语言[…]。是一个特别灵活的工具:Valeri Vasquez,疾病媒介动力学。

[朱莉娅]我可以利用跨学科的工具来推进癌症研究:梅根·费拉尔-费尔班克斯(Meghan Ferrall-Fairbank),肿瘤动力学。

这项工作非常适合在julia中完成,因为很好的抽象允许非常通用的代码:viilmŠtih,斑马鱼大脑动力学。

有一种可以用来写所有东西的快速语言真的很好。[…]。但这些天真正给我留下深刻印象的是另一件事-朱莉娅不知何故能够提高我的工作效率[…]。。朱莉娅使我们很容易在正确的抽象层次上思考。“:Petr Krysl,偏微分方程。

为什么在朱莉娅做科学很棒[…]。包间互动=纯粹的魔术!:George Datseris对音乐表演的分析。

这些科学家都发现,朱莉娅增加了合作的机会,使整合其他人的工作变得比以往任何时候都更容易,并允许他们编写可以被其他人以意想不到的方式使用的代码。这些能力的关键在于朱莉娅解决了一个不同的老难题,这一次来自计算机科学-表情问题。