当前位置: 首页 > 科技观察

无所不能的语言Julia,从Covid-19建模到空间规划,研究人员更喜欢Ta

时间:2023-03-20 17:47:57 科技观察

2012年,Julia语言诞生,从此科学计算领域又多了一个利器。如今,Julia已走过十年,拥有数十万用户,并开始在数百所大学和公司构建Julia软件技术栈,从个性化医疗、气候建模、新材料研发,甚至太空任务规划.有朱莉娅。近日,Julia开发者发布了另一篇博客,收集了过去十年的一些Julia故事,希望共同反思,共同进步,让十年后的Julia变得更好。Julia的十年历程Julia的发展始于2009年,ViralShah向他的两个朋友JeffBezanson和StefanKarpinski发送了一封电子邮件,发起了一场科学计算语言的新革命。Julia于2012年正式发布,在《我们为什么要创建Julia》的博客中,开发者表示:因为我们贪心,所以我们想要拥有更多的Julia。Julia结合了流行语言的所有最理想的特性。他们希望创建一个与C一样快并具有Ruby动态的Julia;符号;它应该像Python一样通用,像R一样在统计分析上得心应手,像Perl一样自然地处理字符串,像Matlab一样具有强大的线性代数计算能力,像shell一样具有胶水语言能力,易学易用。对真正的黑客来说很无聊;它应该是交互式的,同时可以编译。Julia的初始版本使用LLVM,通过类型推断和即时编译(JIT)具有可选类型、多重分派和良好的性能。2014年,第一届年度Julia会议在芝加哥举行。从那时起,JuliaCon已有近30,000名与会者,演讲者包括SoumithChintala、KatherineA.Yelick和LindaPetzold。2015年,JuliaComputing由开发团队与KenoFischer和DeepakVinchhi共同创立,开发一些基于Julia的客户端产品。他们的旗舰产品JuliaHub是一个SaaS平台,用于开发Julia程序并将它们部署在数千个节点上。2017年6月,该团队从GeneralCatalyst和FounderCollective筹集了460万美元的种子资金。2018年,Julia1.0版本正式发布,团队表示Julia已经“完全出炉”。此版本引入了API稳定性、内置包管理器、缺失值的规范表示以及用于安全创建任意数据的内置String类型。此版本意义重大,意味着Julia不再处于“开发人员阶段”。2019年,Julia从美国政府筹集了110万美元的资金。2019-2020年先后发布v1.1、v1.2、v1.3、v1.4,修复了bug,增加了异常堆栈,内置对网页浏览器的支持,可组合的二进制神器系统多线程并行和Julia包。2020年的Juliav1.5是一个大版本,博文称该版本带来了重大优化,可以显着减少某些工作负载中的堆分配。此外,这些功能还包括对Mozilla的RR工具的记录和回放调试支持、结构布局和分配优化、多线程API稳定和改进、延迟改进以及一些常见情况的算法改进,例如生成正态分布双精度浮点数。2021年,获得由DoriltonVentures领投的2400万美元A轮融资。同年发布的Julia1.6通过并行预编译和更快的包加载提高了性能,而v1.7引入了更快的随机数生成器并在Xoshiro256系列RNG中使用更小的状态,在每个任务中放置一个状态并将其分叉到每个任务创建。这使得随机数只依赖于任务的生成结构,而不依赖于并行执行计划。2022年2月,Julia走过十年,版本号也将发布1.8版本。Julia背后的用户故事截至2020年,Julia已被下载3500万次,拥有6800个Julia包,超过1180万行代码,被10000多家公司和1500所大学使用。Julia以其开放和热情,成功创造了无数社会福利方面的应用:纽约联邦储备银行使用Julia对美国经济进行建模,主要原因是Julia比Matlab快10倍;研究人员还使用Julia来估计2021年由COVID-19引起的经济冲击。2019年,Julia是气候建模联盟创建的价值数百万美元的下一代全球气候模型的唯一实施语言。美国联邦航空管理局使用Julia开发下一代机载防撞系统。它也被用在了Celeste项目中,在CoriII超级计算机上实现了1.54petaflops的峰值性能。Aviva和BlackRock使用Julia计算风险并执行时间序列分析。Julia也是NASA用于模拟航天器分离动力学的标准语言。巴西的INPE也使用Julia来规划太空任务。使用Julia的主要公司包括Nvidia、AstraZeneca、Google、Intel、Microsoft、Amazon、Apple、Disney、Facebook、Ford、Grindr、IBM、Microsoft、Oracle和Uber、Moderna和Pfizer。在过去十年中,许多用户分享了他们使用Julia的故事。网友@keno分享:十年前,我刚刚高中毕业,作为交换生在马里兰州东海岸的一所小学校读书。手里拿着大学录取通知书,无事可做,我对计算科学中更好的工具的需求产生了强烈共鸣,并于那天开始研究Julia。在过去的十年里,我几乎每天都使用Julia。在此期间,我从事过各种工作,从天文学到同态加密,再到模拟半导体,以及介于两者之间的许多领域。一路上,发生了许多令人难忘的事情。5年前,我们在世界上最大的计算机上同时运行了超过一百万个Julia线程,这是动态语言的一项壮举,并将Julia推到了Petaflop标记,尽管现在很容易做到。每年,我都期待着参加JuliaCon,与我一路上结交的朋友们聚在一起,并欣赏我们是如何从麻省理工学院会议室里的一小群人中成长起来的。这是疯狂的10年,事情只会变得更加令人兴奋。网友@aviks分享:十年前,当我在HackerNews上看到这篇博客时,我的第一反应是“我们真的需要另一种编程语言吗?”。那天工作比较忙,于是下载了源码,惊奇的是第一次就搭建成功了。两周后,我提交了我的第一个PR。添加新的数值类型后,Julia向我证明了简单而高性能的数值计算是完全可行的。从那以后的几年里,我有幸成为这个了不起的社区的一员,并且能够每天在工作中编写Julia。毫无疑问,朱莉娅改变了我的生活,我认为它以一种微小的方式改变了世界。网友@collinwarner分享:我第一次接触Julia是在2019年春天,当时我在AlanEdelman教授的线性代数课上。课程结束后,我联系了我的导师,他将我介绍给了ChrisRackauckus,并在接下来的一年里致力于创建神经微分方程。现在我大四了,我回到了实验室。并在秋季选修了软件性能工程,以使我的代码更快并了解有关编译器的更多信息。我认为JuliaLabs是一个完美的地方,与他们一起工作是一次很棒的经历。我计划明年继续在他们的实验室工作。网友@emmettgb分享道:我第一次接触Julia语言是在2014年的秋天,那时我还很年轻,但对计算科学很着迷,主要使用Python和R来完成这两项任务。我曾与同行合作过几个项目,在这些项目中我们会遇到“双语问题”,这让我非常沮丧。我是团队中唯一会写C语言的人,Cython对我们的问题并没有想象中的那么有帮助。那时候,像Numba和远程Python解释这样的工具甚至还不存在,我正在寻找有关使Python运行得更快的更多信息,并偶然发现了这篇Julia论坛帖子。我被它的语法迷住了,自从那天我开始学习Julia之后,它就成了我最喜欢的编程语言。我能够在Julia而不是C中解决我们的问题,并且我能够在需要时通过PyCall.jl调用Python代码。Julia最终完美地完成了这项工作,所以每次我的项目遇到此类问题时,我都会用它来解决。Julia语言一直做得很好,然后该语言不断发生的所有变化都是如此巨大。现在Julia语言有了更好的生态系统,事情只会变得更好。