整整十年前的今天,我们出版了";为什么我们要创造朱莉娅";,向全世界介绍Julia项目。在这一点上,我们已经远远超过了最初博文中提出的雄心勃勃的目标。朱莉娅现在被数十万人使用。数百所大学都在教授这门课程,整个公司都在组建,以Julia为基础构建软件栈。从个性化医疗到气候建模、新材料,甚至太空任务规划——无论你看到哪里,朱莉娅社区都在推动人类发现的边界。git存储库中的一些代码行为开放源码项目提供了形式,但社区赋予了它生命。我们每天都会被吸引到朱莉娅身边的人们的广博知识和善良精神所打动。下面,我们将整理朱莉娅社区(新旧)一些成员的故事,共同反思过去10年。
十年前,当";为什么我们创造了朱莉娅";当时,我刚刚在马里兰州东海岸的一所小学校作为交换生完成高中四年级的学业。有一些痛苦的回忆,我曾尝试过学校项目和八度音阶的在线课程,手头有大学录取通知书,没有什么其他事情可做,我强烈地认同在计算科学领域需要更好的工具,并在那天开始研究Julia。10年来,在过去的10年里,我几乎没有一天不为朱莉娅工作。在这个时候我';我研究过天文学、同态加密、模拟半导体以及其他许多领域。一路上有许多值得纪念的事件。例如,5年前,在动态语言的第一次尝试中,我们将Julia推过了Petaflop的障碍(这一壮举现在容易多了;)在其中一个世界上同时运行超过一百万个Julia线程#39;最大的计算机。每年,我都期待着朱利亚康与我';我一路走来,钦佩我们走了多远';我来自麻省理工学院一个会议室里的一小群黑客。它';这是一个疯狂的10年,事情只会变得更加令人兴奋。
那天看到黑客新闻的头条,我的第一反应绝对是冷淡的";哦,我们真的需要另一种编程语言吗;。然而,读这篇博文激起了我的兴趣";当然可以';它不能兑现所有的承诺,不是吗". 这是一个缓慢的工作日,所以我下载了源代码,并惊讶地看到,它成功地建立在第一次尝试。两周后,我的第一次公关就来了。通过添加一种新的数值类型,它向我证明了简单高效的数值计算是完全可能的。从那以后的几年里,我';我很荣幸能成为这个令人惊叹的社区的一员,并且能够每天在工作中给朱莉娅写信。毫无疑问,朱莉娅改变了我的生活,我认为它';它已经以一种很小的方式改变了世界。
我来的相当晚,大约在2016年。我用R编写GUI,用Python和MATLAB编写库,处理MEX文件,用C编写MPI。我用Fortran编写了一些ODE解算器,就像一个好的ol';小孩我做了尽职调查。这真是一团糟,尤其是作为一个Windows用户,所以当我找到Julia时,我惊讶地发现有些东西真的能用。Windows上缺少的某些编译器不再出现SciPy安装错误:Julia是编译器。朱莉娅越来越成为编译器。当一切都是新的时候,一切都是疯狂的。在v0的早期。5-beta我记得我创造了情节。jl和Juno IDE文档作为获得bug修复的交易。从";狂野西部";,我在语言和计算方面的经历发生了变化。以前,我认为语言是固定的,它';s微分方程解算器(differentialsequations.jl)为";我的";工作,但和茱莉亚在一起,一切都打开了。生成随机泊松数的实现是否足够快,或者对于这个用例,是否有更快的方法达到我需要的统计容差?代码在Julia中,所以让';让我们看看。很快,所有内容都用一种语言,这意味着世界开始思考如何为手头的应用程序优化每个浮点操作。一切被视为理所当然的事情现在都掌握在这个领域的手中。这就是微分方程求解如何扩展到科学机器学习和SciML开源软件组织的原因。现在我们在整个堆栈上自上而下都有了SciML基准测试,包括从偏微分方程的物理神经网络解算器到递归阵列数据结构的所有内容。数学中有很多地方根本没有被触及,因为它们听起来像是编译器的领域,而不是";计算科学";,而我';我很高兴看到未来10年如何弥合朱莉娅的这一差距。
我最初读到关于Julia v0的发布。在slashdot上安装了1个,并立即尝试将其构建到我的MacBook上。我是一名刚毕业的研究生,在MATLAB工作让我伤痕累累。虽然我发现了numpy,并在我的研究和课程中充分利用它,但我的灵魂渴望更好的东西。当运行make导致链接器错误时,我在谷歌上搜索了一下,提出了一个两个字符的请求来修复它。我不知道接下来的十年会带我踏上学习编译器的旅程,写下我们的第一篇";CI系统";作为bash中的for循环,构建一个全球内容交付网络,重建一个神经网络工具包,设计一个交叉编译器构建环境来满足我们所有的非Julia需求,等等。虽然我最初被Julia的世界所吸引,是因为它的技术、社区的欢迎性质以及缺乏自我,让我感觉像在家一样。正如我们常说的那样,";为速度而来,为社区而留";。它';他和许多好朋友一起经历了一段漫长的旅程,我可以';I don’我等不及下一次见到朱利安本人了,他会看到几十个书呆子,毫无疑问,这些书呆子们为使世界变得更美好而采取的所有创造性、独创性的方法都会让我大吃一惊。
我第一次使用Julia是在2014年,我记得2013年冬天我用Scala编写了一个多智能体机器人模拟器,用于神经进化实验。我想我看到了";为什么我们创造了朱莉娅";在那段时间里,由于对用Scala编写数字代码的经验感到失望,我决定用我的下一个项目作为学习Julia的机会。我的第一个真正的项目是采用一个由合作者编写的Matlab代码,速度太慢,并将其以1:1的比例翻译成Julia。由于它使用显式循环,我立即得到了10倍的加速,进一步的优化使它加快了100倍。我上瘾了。在这个项目的后期,我开始试验GPU,尤其是OpenCL。jl。当我提交第一个严肃的请求时,杰克·B热情地欢迎我,把我吸引到社区中,并留下来,作为朱莉娅社区的一个反映。多年来,Julia成为我生活中越来越重要的一部分,共同维护JuliaGPU和JuliaHPC生态系统,为Julia core做出贡献,并从2017年开始组织JuliaCon。正如埃利奥特所写的那样,";为速度而来,为社区而留#34;这对我来说当然是真的,在过去的几年里我交了很多朋友。这里';再过10年,朱莉娅仍然是我最喜欢的LLVM前端,还有很多恶作剧要做。
我在尝试在R中进行疯狂的数据转换时遇到了Julia,这需要花费很长时间。我立刻上瘾了!语法非常简单,它还有一个";数学";感受一下。你可以使用所有的ϵ和δ,以及统计学家#39;s最喜欢α和β。从那以后,我';我已经成为JuliaStats和Turing(贝叶斯建模)Julia'的贡献者;中国的生态系统。这个社区很棒,也很受欢迎。我';我在这里建立了令人惊叹的友谊,与Rik Huijzer和Lazaro Alonso合著了一本免费开放获取和开源的Julia数据科学书。这本书已经被志愿者翻译成葡萄牙语和中文,我对此表示感谢和谦卑。自10年前首次亮相以来,朱莉娅现在正在取得长足的进步。我真的为它的未来感到兴奋,很荣幸成为它的一部分。
2019年,我认为从几乎无限的数据中提取信号将成为未来的当务之急。我越来越担心如何将高性能计算方法应用于数据,也担心这种工具会造成不公平——有超级计算机的人可以做尖端研究,没有超级计算机的人,他们如何竞争?我在研究一个可以投资的工具,遇到了Common Lisp,但发现它不是';不适合我。Lisp似乎是我理想的工具,然后我遇到了Julia。它不仅是为高性能而设计的,而且语法友好,社区很棒。几个月后,我做出了我的第一个核心贡献。从那时起,我共同创造了有趣的动画套装Javis。jl和我的朋友Ole Kröger一起加入了各种Julia工作组,并每天使用它。今天,我们敏锐地意识到,延误可能导致生命损失。在我的健康研究中,我使用Julia来解决并快速识别健康差异,提供见解,或许还可以帮助做出保护生命的决定。我相信朱莉娅是实现这一目标的工具,我期待着再过10年。
2019年7月,我离开了AWS的工作,加入了一家小公司Invenia,担任软件工程师。在我的采访中,我第一次听说了我需要学习的新编程语言Julia。Invenia最近将他们的整个代码库从Matlab移植到Julia,并迅速成为在生产环境中使用Julia的最重要的公司之一。在Invenia的第一周,我将Julia 0.7到1.0的各种内部和外部软件包进行了移植,并发现它是一种简单直观的Python背景语言。我在巴尔的摩的第二周是2019年朱利安大会期间,与巴尔的摩的社区会面、聊天和学习。我上瘾了。差不多三年后,我';我发现朱莉娅几乎是我所有事情的首选语言。它的易用性、速度和社区性让我重新获得了更多。我';我很高兴看到它从这里走向何方。
大约8年前,我是一名在大学学习神经科学的学生,对计算建模非常感兴趣。我在MATLAB中实现了一些基本的尖峰神经网络模拟器,并将它们移植到JavaScript中,但总是发现这两种语言都缺乏。尽管如此,我还是坚持使用JavaScript,直到大约3年后,当我第一次从互联网上的某个地方听说朱莉娅时。出于厌倦和对JavaScript的轻微不满,我决定尝试一下Julia。我会诚实;我在使用它时遇到了不少问题!错误是不直观的,语法很奇怪,而且速度很慢(编译,但有什么区别?)。我一直在使用JavaScript进行工作,但慢慢地,我开始更熟悉Julia,并尝试在我的一些模拟和辅助项目中使用它。跳到大约4年前,我得到了";书呆子砍了";由某个Valentin Churavy在Julia中实现了对AMD GPU的支持,因为我非常希望支持一个更开放源代码友好的GPU供应商。在接下来的两年里,我发展了AMD语言。jl(现在是AMDGPU.jl)和匕首。jl在我的空闲时间,慢慢地获得了对Julia的赞赏,并在2019年参加了我的第一次JuliaCon!不久之后,瓦伦丁从JuliaLab公司伸出援手,向我提供了一个RSE职位(这是我一生中唯一梦想得到的职位!),我欣然接受了。从那以后,我';我一直在AMDGPU全职工作。jl,匕首。jl,BPFnative。jl和Julia自己,并且一直热爱它的每一刻。我不';我不认为我能放弃我所拥有的美妙的生态系统、语言和人';在过去的五年里,我开始了解和爱,我期待着更多美好的时光。
在我的硕士论文中,我用Python进行了一些机器学习,但一直对面向对象的代码库感到恼火。它们似乎比绝对必要的要复杂得多,尤其是在测试方面,我觉得这些问题的原因是什么。因此,作为一名真正的黑客,我试图在没有类的情况下编写所有Python代码,这让阅读它的人感到非常不舒服。几个月后,我很天真地在一份C#job上尝试了同样的事情,让读过它的人更加不舒服。幸运的是,当我在博客上读到朱莉娅语言时,我所有的问题都解决了。朱莉娅没有';我没有课。而且,这门语言看起来真的经过深思熟虑,所以我开始了一项使命,从2019年的某个时候起,我就不再接触另一门语言。到目前为止,这是一次非常有趣的旅行。我';我一直很惊讶,通过阅读Julia代码和讨论,以及获取pull请求的反馈,可以学到多少东西。这是由于语言提供的坚实基础和与朱丽亚一起建造事物的伟大社区。多亏了这些东西,我';我希望朱莉娅在10年内成为工业界和学术界研究的主要工具。我想我们可以在9分钟内完成。
2011年是我在Invenia的第一年,我们在那里维护着一个用MATLAB 2007b编写的相当复杂的生产系统。Python已经开始在我们的助手脚本和web服务中取代Perl,我们中的一些人热衷于使用一种健康社区的语言,使现代软件开发成为可能。不过,我的第一次实验令人沮丧;我怎么能指望一个研究人员从'*A到np。matmul(A.conj()。T、 A)?
2012年,一位同事与我分享了Julia的博客帖子。令我惊讶的是,我遇到的Julia的第一个例子简洁、可读、高性能,甚至是有效的MATLAB代码!这种语言是新的、不稳定的,但显然是为了完全满足我们的需求,没有昂贵的、封闭源代码的许可条款或有缺陷的神经网络工具箱。我在邮件列表上变得活跃起来,关注新的发展,并根据我们的需求不断评估其功能集。2014年,因维尼亚派我们两人参加了第一届JuliaCon大会,自那以后,我们每年都会出席,彼此并肩成长。2014年,为我们的系统全面过渡到Julia奠定了第一个一揽子基础,Julia在几年后完成。
邮件列表上的最初几年为社区的到来奠定了基调。核心开发人员乐于解释该语言是如何工作的,以及设计决策背后的详细而深思熟虑的推理。每个月都会带来新的和令人兴奋的特性(关键字参数!包管理器!不可变的内联数组!)。新来者可以迅速获得帮助、合作和贡献。虽然社区从早期开始就有了巨大的发展(诱使Jeff Bezanson修复你的宠物编译器bug要困难得多),但这种社区态度仍然存在,并通过数百名活跃的社区贡献者传播。
我第一次听说朱莉娅大概是在2015年左右。我在为我的昆虫学博士学位做一些GLMM分析,只是在寻找尽可能多的信息。我发现道格拉斯·贝茨(Douglas Bates)写的一些关于Github的书没有出版,我想知道为什么。这条线索把我带到了一个帖子里,道格说他要离开R,把他的程序转移到朱莉娅那里。我检查了一下,可能是0.3版本,而且语言太简单了,我很害怕(不是计算机科学家!)。在那一点上,我从航站楼的R转到了RStudio,我对此很满意。然而,我时不时地回顾这个项目,并不断查看GLM包中的代码,非常惊讶它是用Julia编写的,我几乎可以阅读它,不像在R中发生的那样。后来,在我的博士后期间,我有一个新项目,需要大量数据,所以我用它作为借口,终于真正利用了朱莉娅。版本0.6已经发布,我开始在Julia学习数据分析的基础知识。朱诺也在场,这也让我的工作更轻松。从那以后,我几乎只使用Julia进行数据分析。在工作中,我仍然需要使用R、Python和SQL,但在我的笔记本电脑上,我试图将一切集中在Julia中,我真的很喜欢这种语言和社区。我不';我没有太多公关';s、 我确实发布了一个我需要的小软件包,并且为我的工作准备了很多个人软件包,加上计划再做几个,我';我在话语上有些活跃,有些松懈,总的来说,我会努力保持参与。我希望这个项目继续发展和成熟。
我记得很清楚,那是在一所深入学习的暑期学校里,我第一次听说";朱莉娅";1.0发布两天后。这是一个实验室,人们在这里不';I don’我对编程并不认真,我对MATLAB失望了很长一段时间。暑期学校对我来说有点无聊,所以我花了整整10天的时间阅读Julialang及其生态系统文档。两个月后,当我创建了一个小的重复补丁PR,收到了一个👍 Jeff Bezanson(尽管我立即注意到人们会为每一位新的投稿人这样做)😆), 两年后,我意外地在CartesianIndices step support feature PR中修复了一个6年前的性能问题,蒂姆·霍利在著名的#赞赏松弛频道中对此表示赞赏,这让我感到多么自豪。这些都是我在朱莉娅社区的美好回忆,我';I’’我一直很感激与朱莉娅一起成长,感谢她向这里有才华但友好的人们学习。
和许多人一样,当我看到朱莉娅';中国承诺";两全其美";第一次;事实上,我记得2018年第一次尝试Julia时,我对走开的感觉并不特别好,主要是因为策划的延迟(TTFT)问题。当我在v1附近再次尝试时,情况很快发生了变化。在听说加州大学商学院物理学博士生凯瑟琳·凯悦(Katharine Hyatt)在朱莉娅(Julia)做很酷的量子实验后,发布了第0版。在那之后事情发展得很快:一旦你知道了两种语言的问题,它';这在物理学中无处不在。很多事情都是";免费";在Julia中,可以跳过数以百万行的C++/Python,因为Julia速度不慢,auto diff可以帮助解决物理学中的许多反问题等。今天,虽然不像本文中的许多核心开发者那样精通编译器或键入系统,但我努力将更好的计算工具引入物理学,我希望在接下来的十年里见证朱莉娅被迅速收养。
我第一次遇到Julia是在0.2版本,那是在Julia Studio IDE及其捆绑教程的时代。当时我在工作中使用SAS,没有';我没有太多理由利用朱莉娅做任何事。然而,不久之后,我参与了在线代码高尔夫挑战,这最终为利用Julia做点什么提供了借口。我很快就被称为";利用朱莉娅";在那个社区,因为在朱莉娅身上看到一个解决方案是非常罕见的。该社区还向我介绍了开源贡献,这是我之前完全不熟悉的。在做了几年Julia的临时用户后,在2015-2016年,我终于开始为Julia及其软件包做贡献,并与一些非常棒的人互动、见面、学习和交朋友。2017年,我辞去工作,全力以赴地工作
......