新智元报道
编辑:LRS
【新智元导读】常做科学计算的研究人员对Julia肯定不陌生,它从发布至今已经走过了整整十个年头,如今也是终于实现了最初的「全能语言梦」,一起看看Julia背后的故事!
2012年, Julia语言横空出世,从此科学计算领域又多了一个强大的工具。如今,Julia已经走过了十个年头,拥有数十万用户,在数百所大学和公司内开始建立Julia软件技术栈,从个性化药物、气候建模、新材料研发,甚至太空任务规划都有Julia的身影。
最近,Julia的开发者们又发布了一篇博客,收集了过去十年的一些Julia故事,希望共同反思和进步,让Julia在十年后变得更好。
Julia的十年征途
Julia的开发始于2009年,Viral Shah给他的两个朋友Jeff Bezanson和Stefan Karpinski发了一封邮件,发起了一场科学计算语言的新革命。
2012年Julia正式发布,在《我们为什么要创建Julia》博客中,开发人员说:因为我们很贪婪,想让Julia拥有得更多。Julia结合了流行语言中所有最理想的特性,他们希望创造出的Julia要像C语言一般快速而又拥有如同Ruby的动态性;要具有Lisp般真正的同像性而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;并且它应该是交互式的,同时又是编译型的。初始版本的Julia具有可选类型、多重派发,以及通过类型推理和即时编译(JIT)实现的良好性能,使用LLVM。
2014年,第一届Julia年度会议在芝加哥举行。此后,JuliaCon有近3万名与会者,演讲者包括Soumith Chintala、Katherine A. Yelick和Linda Petzold。2015年,Julia计算公司由开发团队和Keno Fischer和Deepak Vinchhi成立,旨在开发一些基于Julia的客户产品。他们的旗舰产品JuliaHub是一个开发Julia程序的SaaS平台,并部署到上千个节点上。2017年6月,团队从General Catalyst和Founder Collective筹集了460万美元的种子资金。2018年,Julia 1.0版本正式发布,团队表示Julia已经「完全出炉」了。该版本引入了API的稳定性、内置的包管理器、缺失值的规范表示和内置的String类型,能够安全地创建任意数据。这个版本的意义重大,也意味着Julia不再处于「开发者阶段」。
2019年,Julia从美国政府筹集了110万美元的资金。在2019-2020年间,又陆续发布了v1.1、v1.2、v1.3和v1.4版本,对bug进行了修复,并增加了异常堆栈、对网络浏览器的内置支持、可组合的多线程并行和Julia包的二进制工件系统。2020年的Julia v1.5是一个大版本,博文宣称这个版本带来了一个主要的优化,能够显著减少一些工作负载中的堆分配。此外,这些功能还包括对Mozilla的RR工具的记录和重放调试支持,结构布局和分配优化,多线程API的稳定和改进,延迟改进,以及对一些流行情况的算法改进,如生成正常分布的双精度浮点数。2021年,接受了由Dorilton Ventures领导的2400万美元的A轮融资。同年发布的Julia 1.6通过并行预编译和更快的软件包加载改善了性能,v1.7引入了更快的随机数生成器,并使用Xoshiro256系列RNG中更小的状态,在每个任务中都放一个状态,并在每个任务创建时分叉它。这使得随机数只依赖于任务的生成结构,而不依赖于并行执行计划。2022年2月,Julia走过十年,版本号也将发布1.8版本。
Julia背后的用户故事
截至2020年,Julia的下载量累计3500万次,拥有6800个Julia包,超过1180万行代码,有超过一万家公司,1500家大学都在使用。Julia以它的开放、热情,成功在社会公益方面创建了无数应用:纽约联邦储备银行利用Julia对美国经济进行建模,主要原因就是Julia比Matlab速度快10倍;研究人员还用Julia来估计2021年的COVID-19诱发的经济冲击。
2019年,Julia是气候建模联盟创建的价值数百万美元的下一代全球气候模型的唯一实施语言。联邦航空管理局使用Julia来开发下一代机载防撞系统。它还被用于Celeste项目,在Cori II超级计算机上达到了1.54 petaflops的峰值性能。Aviva和BlackRock使用Julia来计算风险和执行时间序列分析。Julia也是美国宇航局用于模拟航天器分离动力学的标准语言。巴西的INPE也用Julia来计划太空任务。使用Julia的大公司包括英伟达、阿斯利康、谷歌、英特尔、微软、亚马逊、苹果、迪士尼、Facebook、福特、Grindr、IBM、微软、Oracle和Uber、Moderna和辉瑞。
十年历程,也有很多用户分享他们使用Julia的故事。网友@keno 分享:十年前,我刚刚高中毕业,作为交换生在马里兰州东海岸的一所小学校学习。当时手握大学录取通知书,并没有什么其他事情可做,我对计算科学中需要更好的工具产生了强烈的共鸣,并在那一天开始着手开发Julia。在过去的十年里,我几乎每天都在使用Julia。在这段时间里,我从事过各种工作,从天文学,到同态加密,再到模拟半导体,以及中间的许多工作。一路走来,有许多令人难忘的事件。5年前,我们在世界最大的一台计算机上同时运行了超过一百万个Julia线程,这对动态语言来说是一个创举,同时把Julia推到了Petaflop的大关,虽然现在已经很容易实现了。每年,我都期待着参加JuliaCon,与我一路走来结识的朋友们聚在一起,欣赏我们从当初在麻省理工学院的一个会议室里的一小撮人走到现在。这是一个疯狂的10年,而且事情只会变得更加令人兴奋。网友@aviks 分享:十年前,我在Hacker News上看到这篇博客时的第一反应是「我们真的需要另一种编程语言吗」。那天工作很忙,所以我下载了源代码,并惊讶地看到它第一次就成功构建了。两周后,我提交了第一个PR。在增加了一个新的数值类型后,Julia向我证明了简单和高性能的数值计算是肯定可行的。在此后的几年里,我很荣幸地成为了这个神奇社区的一部分,并且能够在工作中每天编写 Julia。毫无疑问,Julia 已经改变了我的生活,而且我认为它已经以一种小小的方式改变了世界。
网友@collinwarner分享:我在2019年春季第一次接触到Julia,当时是在Alan Edelman担任教授的线性代数课。课程结束后,我主动联系导师,他把我介绍给了Chris Rackauckus,在接下来的一年里,我致力于创建一个神经微分方程。现在我已经大四了,我又回到了实验室。并在秋季选修了软件性能工程,想让代码更快,并对编译器有更多了解。我认为Julia实验室是一个完美的地方,和他们一起工作时的体验特别棒。我计划明年继续与他们实验室合作。
网友@emmettgb 分享:我第一次接触Julia语言是在2014年的秋天。当时我还很年轻,但对计算科学很着迷,我主要使用Python和R来完成这两项任务。我曾在几个项目中与同行合作,我们会遇到「两种语言问题」,这让我非常沮丧。我是团队中唯一会写C语言的成员,而Cython对我们的问题并没有想象中的那么大帮助。那时,像Numba和远程Python解释这样的工具甚至还没有达到现在的水平,我正在寻找更多关于让Python运行得更快的信息,偶然发现了Julia论坛的帖子。我被它的语法所吸引,自从那天开始学习 Julia 后,它就成了我最喜欢的编程语言。我能够用Julia而非C语言来解决我们的问题,而且我能够在需要时通过PyCall.jl来调用Python代码。Julia最终完美地完成了工作,所以每次遇到这类问题的项目,我都会用它来解决。Julia语言一直做得很好,然后所有不断出现在这门语言上的变化都是如此之大。现在Julia语言有一个更棒的生态系统,所以一切只会变得更好。
参考资料:
https://www.julialang.org/blog/2022/02/10years
https://analyticsindiamag.com/ten-years-of-julia-a-timeline/