作者 | Julia社区

编译 | 张洁

责编 | 屠敏

在2009年,一些编程经验丰富的高级用户对现有的科学计算编程工具感到不满,像科学和数值计算之类的计算量大的任务量都需要高性能产品,于是一些研究人员就开始了Julia的研究。Julia有着C语言的速度,比Python更简练的代码,还加入了其他一些编程语言的特点。

Julia被设想为一种免费的计算机编程语言,既快速又可以在较高水平上使用。2012年,Julia语言首次向公众亮相,此后逐渐成为世界上最受欢迎的编程语言之一,之后也陆续发布了Julia的一系列版本:

  • 2013年11月,发布v0.2.0版本
  • 2015年10月,发布v0.4.0版本
  • 2017年6月,发布v0.6.0版本
  • 2018年8月,发布v1.0.0版本
  • 2021年,发布v1.6.0版本和v1.7.0版本

2022年,Julia迎来了自己的十周年,其官方在发布博文庆祝Julia十周年的同时,也带来一篇名为 《我们为什么创造Julia》的文章,为我们分享了这十年的心路历程。十年之间,从个性化医疗到气候建模、新型材料甚至太空任务规划,Julia改变了很多人、很多事。 下面,是一些Julia社区成员的故事,共同回顾过去的10年。

1. 好奇心驱使,发现Julia的“数学”之美

  • Jose Storopoli (@storopoli)

在试图用R语言做数据转换时偶然发现了Julia,因为这个转换要花很长时间,一下子就被Julia迷住了! 它的语法是如此简单,而且它也有一种 "数学 "的感觉。你可以使用所有的ϵ和δ,以及统计学家最喜欢的α和β。从那时起,我已经成为了Julia的生态系统贡献者。

这个社区很好,非常受欢迎。在这里结识了很多了不起的朋友,与Rik Huijzer和Lazaro Alonso共同编写了一本免费的Julia数据科学书。这本书被志愿者们翻译成了葡萄牙语和中文,对此我很感激也很惭愧。自从10年前首次出现以来,Julia正在大步前进。我对它的未来感到非常兴奋,很荣幸能成为其中的一员。

  • Simeon Schaub (@simeonschaub)

在2018年偶然发现了Julia。吸引我加入这门新语言的,其实只是好奇心。在之前的一门Python的数据分析课程上,也用过一堆语言,所以我只是想知道它的与众不同之处。以前从未为开源做出过贡献,但Julia社区似乎有些特别,它能迅速吸引人们从回答Discourse和Slack上的问题到真正为不同的项目和基地做出贡献。所以没过多久,我就自己开发了一个小包,用于上课所需的东西,最后我还向基地做了第一个PR。

在学习Julia的过程中,我很快就发现自己学到了一堆关于编译器的东西。因为我想要新的Julia语法,所以我也不得不顺便学了一点Lisp,最终我发现自己在麻省理工学院从事计算科学工作,与其他许多同样对Julia充满热情的人一起研究令人兴奋的新应用。

2. 不满足于Python,被高生产力语言所吸引

  • Rik Huijzer (@rikhuijzer)

在硕士论文中,用Python做了一些机器学习,但一直被代码库所困扰。它们似乎比想象的还要复杂,特别是在测试方面,总觉得类是造成这种情况的。所以,在写Python代码时不使用类,但这让读者感到很不舒服。幸运的是,在一些博文看到Julia语言时,所有的问题都解决了。Julia没有类!从2019年的某一天开始,就不再碰其他语言了。

  • Jeremie Desgagne-Bouchard (@jeremiedb)

第一次听说Julia是在2017年左右。那时主要用到Python,然而它并不是一个令人满意的语言。然后,Julia出现了,它首次展示了作为Rcpp替代品的潜力。这为Julia的承诺打开了大门,它是一种具有编译性能的高生产力语言。

在一家投资公司成立之初,Julia就成为了我们建模工具箱的核心,我们用一个轻量级的代码库来增强它的功能,并通过ChainRules来实现新的基于梯度的方法。利用其不断扩展的软件包生态系统(如Genie),Julia成为基础设施的关键,从新的算法开发到会计系统、数据监控和面向客户的可视化。

  • Julius Krumbiegel (@jkrumbiegel)

第一次了解到Julia是在2017年我在柏林读神经科学硕士期间。在实验室值班,一直试图说服大家放弃MATLAB,改用Python。在其中一个场合,一位同事调侃道:"反正那些很酷的孩子不都是用Julia而不是Python吗?"。我很惊讶,也很尴尬,因为我从来没有听说过这种语言,我在网上找到了 "我们为什么要创建Julia "的帖子。读完后,我立即跟创建Julia的人的联系,因为他们与我有许多相同的价值观。从那一刻起,我就被深深地吸引住了,并在空闲时间里对Julia进行了大量的探索。

  • Kristoffer Carlsson (@KristofferC/)

可能和很多人一样,我是在寻找Python的替代品时发现Julia的,因为Python的代码没有达到我需要的性能。在那个时候,我没有太多的编码经验,也没有真正的为任何开源项目做出过贡献。在我开始为Julia做了一些小的贡献之后,它就升级了,现在,五年过去了,我已经在软件包管理器、调试器、稀疏线性代数、SIMD、管理发布和各种不同的项目中工作,为Julia做贡献成为我日常工作的一部分。

所以对我来说,发现 Julia 对我的生活产生了巨大的影响,而令人兴奋的是,我觉得事情才刚刚开始,因为每一个 Julia 版本都有很多新的令人敬畏的东西,我只能想象 Julia 在未来 10 年的样子。

3. 开始没认真对待Julia,后面试用带来了一片新天地

  • Gabriel Baraldi (@gbaraldi)

第一次看到Julia是在一篇关于S4TF和差异化编程的博文中。这篇文章提到了一种叫做Julia的语言,并说它看起来像Python,运行起来像C,被这些相似点吸引了。像这里的很多人一样,我用Python写了原型代码,要么努力使它具有性能,要么就用C++重写。

把它搁置了一段时间,但当Grant提到它的时候,我决定是时候在一个项目中真正地尝试一下了,在做这个项目的时候,我爱上了这门语言,随着这门语言而来的还有这个社区。现在每天都在使用它,希望也能帮助很多人使用它。

  • Michael F. Herbst (@mfherbst)

与其他许多人类似,当在2016年第一次听说Julia时,一开始并没有认真对待它。在收到一些不同人的热情评论后,我很好奇地在2018年试了试它,就开始了Julia之旅。在科学职位上,我很幸运地能够全职使用Julia,并开发了DFTK(密度函数工具包)。我们在DFTK上的目标是制作一个代码库,以促进模拟科学家、数学家和计算机科学家在电子结构模拟方面的合作。

为此,Julia被证明是正确的选择,因为它提供了开发新模型或算法所需的灵活性和可读性,以及调整性能所需的低级访问。这样一来,Julia成为了这一研究领域的重要组成部分。我很感谢每一个加入这个社区的人,感谢每一个为Julia做出贡献的人。

  • Ronny Bergmann (@kellertuer)

在博士期间,学习了几种编程语言。第一次了解Julia是在2014年或2015年,但并没有使用它。在2016年,总是被MATLAB中的2种语言障碍以及面向对象的编码风格所烦扰。所以决定试试用Julia是否会有更好的效果。

从一开始,就被这个富有建设性和帮助性的社区所折服,并最终建立了Manopt.jl。然后真正让我吃惊的是,在宣布这个包的时候,第一个反馈导致了第二个包的诞生,这个包有两个共同的开发者,如今它的代码库要比我的第一个包大得多。代码风格和速度以及社区都是我认为使用Julia是我在数字和代码开发方面做出的最佳选择。

4. 同事推荐使用Julia,并深陷其中——从“质疑”到“尝试”,发现Julia“真香”定律

  • Micah Halter (@mehalter)

早在2016年左右,研究实验室的一位同事就向我介绍了Julia,并花了相当多的时间来了解这个语言,但并没有将Julia用于任何项目或日常使用。快进到2018年,实验室开始了一个新的研究项目,探索元建模问题,如模型组成和模型探索。

随着Julia正式发布V1.0版本,以及它对元编程的支持和多重调度,真的没有另一种语言可以轻松支持正在进行的工作。经过许多不同的元建模方法和几次重写,我们能够开始AlgebraicJulia,并将科学建模与类别理论的组成思想结合起来。每当为软件添加一个新的功能,利用Julia的元编程功能时,都会重申在这个项目中使用Julia的决定。

  • Peter Cheng (@chengchingwen)

第一次使用Julia(v0.5/v0.6)是在2017年,那时候还是个大二学生。我和Iblis Lin是同一个社团的,他把这门语言介绍给我。就被这门语言的设计、多重调度的使用以及解决2种语言问题的雄心所吸引。于是我开始阅读文档,并逐步将一些代码移植到Julia中,现在几乎所有的东西都用它来写。看到一门语言的发展,并且越来越好,真的很神奇。

  • Arturo Erdely (@aerdely)

在2018年,对模拟研究的性能而感到困扰。一位Python专家试图帮助我,但在该编程语言中,缓慢的性能是相似的。当正在想学习C语言的痛苦时,同事向我提出Julia是相当有前途的,于是我开始阅读关于它的资料,并关注Julia页面。最后,决定跳进Julia,不是为了尝试它,而是无论如何都要把我所有的工作都转移到Julia上。从 2019 年开始,所有的编码都是在Julia中完成的。真的非常喜欢这种语言。

  • Jakob Nissen (@jakobnissen)

早在2017年,需要为博士项目写代码。就尝试了Numba、Cython和潜心研究Numpy理论,但没有一个方案是令人满意的。之后意识到,对于性能敏感的计算,不可能有Python程序员这样的东西。可以用Python的外衣包裹代码,但我必须用C语言写所有的硬东西。一个为理论物理学学习Julia的朋友告诉我,这些挫折在科学计算中很常见,并且有一个名字:"两种语言问题"。更妙的是,它有一个解决方案:Julia。

像大多数人一样,最初对Julia持怀疑态度,并抵制用Julia来写代码。当我对Julia有不满时,我就会好奇并且想办法改进它。几个月后,我的 Julia 代码性能是不可否认的了。正如许多人所经历的那样,学习Julia在某种程度上是一个滑坡,在我意识到这一点之前,我学会了CI,良好的测试实践,以及低级计算。2020年,我把我的工作代码换成了Julia,此后再也没有回头。

5. 被关于高级语言的博文吸引并进行研究——最好的决定!

  • Mon Danisch (@SimonDanisch)

2012年,在大众/奥迪实习中用C++语言进行了一些图像和传感器处理,一切都很困难,于是开始寻找另一种语言来解决。Python看起来不错,但并不是一个真正的选择,因为我喜欢那些需要高性能的项目,如光线追踪、3D渲染、ML和图像处理。之后开始设计一种小的玩具语言,它有很好的元编程支持,C和GPU互操作,没有开销,不使用OOP,使数学代码更容易扩展,更容易编写。

半年后,一个朋友转发了 "我们为什么要创建Julia "的博文。我超级兴奋,因为它满足了玩具语言应该提供的任何功能。我开始用Julia写我的本科论文和所有其他项目,这是我做过的最好的编程决定 。

  • Tim Besard (@maleadt)

通过实验LLVM和一堆建立在它之上的语言开始我的博士生涯。就在那个时候,Hacker News的一篇文章宣布了一种新的有趣的语言:Julia,它既是高级语言,又是针对LLVM的!所以很明显,需要把这种语言纳入到我的研究中。

因此,开始为Julia开发一个GPU后端,此后一直没有停止。过去,要让Julia支持我们的GPU诡计是相当困难的,但现在这门语言的可扩展性越来越强,所以应该针对未来10年的计算机硬件进行开发。

  • Jacob Quinn (@quinnj)

十年前,我喜欢关注任何科技领域的最新版本,同时努力学习SQL和足够的R语言,以便在工作中做数据分析。记得我在做一个R脚本,需要在3300万行数据中进行循环,需要18个小时来运行。就在这18个小时的运行中,我看到了Julia的博文,并立即对它所承诺的那种简单性能感到怀疑。

在一个周末阅读了最初的手册,在接下来的周一早上重写了我的脚本,结果它在5分钟内就运行了。以为我肯定是犯了什么提前终止的错误,但是没有,它真的就是那么快。从那时起,就知道我需要将数据直接读入Julia,因此开始了两个Julia软件包的工作。我从来没有上过计算机科学课,也不是什么开发人员,所以我想我是第一批通过Julia学习编程的人。

比Julia本身更令人兴奋的是它的开源社区。发现即使是最微不足道的贡献也是有意义的,特别是与所面临的其他挑战相比。我很快就把精力集中在数组上(例如,只用三行代码就实现了快速的自定义数组),后来随着我们向1.0推进,又开始了广播。很荣幸能成为这个社区的一部分,我为我们一起建立的东西感到非常自豪。

6. 因为Julia的速度而迷上Julia——真的很快!

  • Tyler Thomas (@tylerjthomas9)

第一次使用Julia是在V1.4发布时。早期的流行给了我一些额外的时间来实际探索这种新的语言,我一直听到关于它的美好的事情。我当时刚开始研究我的论文,喜欢使用一种语言而不是在Python和C++/Rust之间切换的想法(当时我还没有决定要用哪一种)。

起初,这门语言最有趣的地方是它的速度。然而,我很快就迷上了语言设计,从那时起,它就成了我的主要语言。通过后续不断地在 Julia Discourse 论坛,以及使用Slack和 Zulip等协作工具交流,我了解了很多关于语言内部运作的信息,同时也对这个语言充满了激情。

  • Ricardo Rosa (@rmsrosa)

我是被一个学生吸引到Julia的,在2020年。当时正在为几组学生讲课,因为Covid-19大流行病导致正常课程被关闭。因为使用Python,代码相当慢,所以试图优化代码,一个学生带来了Julia版本的代码,速度快得惊人。然后我了解了微分方程生态系统、Flux、JuMP和SciML,决定要进入这个系统。

此后不久,在Humans of Julia Discord服务器中的好心人的帮助下,我用Julia做了《代码降临2020》。从中学到了一些关于多重调度、元编程和性能提示的知识。我被迷住了。事实上,大部分的代码都是用Julia本身写的,这让你在代码的许多方面学到了很多东西。

原文链接:Why We Use Julia, 10 Years Later

为什么Julia如此受欢迎?相关推荐

  1. 2020年什么编程语言最受欢迎,待遇最高?

    比较编程语言是一件非常复杂的事,因此我们创作了很多好玩的图片或段子用来表达对各种编程语言的定义,本文就以下图开始吧: 编程语言是人类控制电脑的手段,所以绝大多数编程语言都试图使这个过程更加强大和简单. ...

  2. Python或成Julia语言的最佳备胎

    开场 Python被Julia语言社区"誉"为在数据科学领域中最受欢迎的另一种语言. 曾在某语言社区闻人发玩笑帖:在Romeo(罗密欧)语言出现之前, 大蟒蛇Python应该是Ju ...

  3. 心得丨对于机器学习,到底该选择哪种编程语言

    作者: jihong10102006 开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢?这是一个非常重要的问题.我们在许多论坛上都有讨论过.现在,我可以提供我自己的答案并解释原因,但 ...

  4. 要获得“机器学习或数据科学”的工作,到底选哪种编程语言更好?

    如果想要获得机器学习或者数据科学这样的工作的话,开发者到底应该学习哪种编程语言呢?这是一个非常重要的问题. 在Indeed.com上使用趋势搜索. 它可以根据时间搜寻实际工作机会中特定的条款. 这表明 ...

  5. 流行编程语言_编程语言的流行度排名

    流行编程语言 There has never been a unanimous agreement on what the most popular programming languages are ...

  6. 机械学哪种计算机语言,对于机器学习,到底该选择哪种编程语言?

    姓名:郭金  学号:17101223407 参考链接:Indeed.com [嵌牛导读]:本文根据一些数据进行分析带大家了解机器学习的学习应该适合的语言的一些建议. [嵌牛鼻子]:机器学习.编程语言 ...

  7. 对于机器学习,到底该选择哪种编程语言

    开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢?这是一个非常重要的问题.我们在许多论坛上都有讨论过.现在,我可以提供我自己的答案并解释原因,但我们先看一些数据.毕竟,这是机器学习者 ...

  8. 大手笔 !Julia Computing 获 2400 万美元融资,前 Snowflake CEO 加入董事会

    整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 2021 年 7 月 19 日,由 Julia 高性能编程语言创始人成立的 Julia Computing 公司完成了 2400 万美元 ...

  9. 再见 Python,Hello Julia!

    作者 | Rhea Moutafis 译者 | 苏本如,责编 | 夕颜 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 随着Python的停滞不前,一个新的热门竞争对 ...

  10. ​Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉

    来源:机器之心本文约2100字,建议阅读8分钟 当前最受开发者喜爱的编程语言是 Rust 语言,而 Python 的受喜爱程度仅位居第六. 在最近出炉的 Stack Overflow 全球开发者调查报 ...

最新文章

  1. hdu 6205 card card card 尺取+超神读入挂
  2. 在Windows7/10上通过VS2013编译FFmpeg 4.1.3源码操作步骤
  3. java里面怎么导入sql文件_java将SQL文件导入到数据库
  4. 几何画板对象标签的几个疑问
  5. 用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单
  6. TF-IDF与余弦相似性的应用(三):自动摘要
  7. LeetCode——贪心思想
  8. matlab在linux下面的相对路径的写法
  9. (转载)从金岳霖到哥德尔
  10. 76. Minimum Window Substring
  11. 阿联酋esma认证怎么做_百度爱采购企业认证是怎么做的?这些你要知道!
  12. Python2、3字典比较函数
  13. 凭运气接来的项目,怎样凭本事搞砸?
  14. .net 4.0新特性-tuple
  15. 某LINUX下,从快捷方式的目录运行程序,参数就是快捷方式的名
  16. Appium实现的技巧
  17. UFO报表转换不成功!请检查文件版本或使用DOS文件转换工具
  18. nn.PReLU()和nn.ReLU
  19. 前端三级联动 distpicker插件
  20. RPG游戏《黑暗之光》流程介绍与代码分析之(九):技能系统的实现

热门文章

  1. 【ibokan】好的用户界面-界面设计的一些技巧
  2. Wox主题样式基础的自定义
  3. 深度 | 蚂蚁金融智能平台:让AI在金融场景发挥作用
  4. 《大数据架构和算法实现之路:电商系统的技术实战》——3.2 案例实践
  5. RAP2环境部署(nginx代理模式)及运维
  6. 程序员编程入门必知!程序员需要学什么
  7. Java开发企业微信群机器人发送markdown消息
  8. 学计算机颈椎,电脑颈
  9. 显著性检测综述(完整整理)
  10. c编程语言real,20 种最奇怪的编程语言