第204期 | 比Python更快,Julia能笑到最后吗?
你好,这里是卖桃者说,今天和你聊一聊 Julia 这门编程语言。
Julia 这个词听上去不像是一门编程语言,更像是一个人名,事实上,它确实和一个叫 Julia 的人有些渊源。Julia 的开发者杰夫·贝赞森(Jeff Bezanson)曾在接受采访时说过,“Julia 来自美国一位著名厨师兼主持人 Julia Child 的名字,我们通过 Julia 把优秀的编程技术带给广大用户,就像她把优秀的做菜技巧带给观众一样。”
近两年,Julia 获得了越来越多的关注,甚至还有一些声音认为,它已经成为了 Python 的劲敌,也许有朝一日就会取代 Python。一般说这话都会有鼓吹之嫌,毕竟人生苦短,用 Python 的人实在是太多了,目前好像还没有谁能对 Python 构成特别大的威胁。
不过,Julia 也不可小觑,它虽然年轻,但却给开发者们带来了很多惊喜。比如,它集静态语言和动态语言二者之长,开发速度和执行速度都非常快,与此同时,它的语法也比较简洁,写出来的语句非常优美。
目前,Julia 的下载量已经超过了 1200 万次,在 TIOBE 最新发布的 2 月份编程语言排行榜中,也排在了第 42 位。虽然热度跟 Python 没法比,但 Julia 从 2012 年正式发布到现在,用了不到 10 年的时间就收获了无数粉丝,也算是一只潜力股了。年轻有为,以后的路还长着呢。
那么,Julia 是如何发展起来的呢?一切还得从 2009 年说起。
2009 年,来自麻省理工学院的杰夫·贝赞森、艾伦·埃德曼(Alan Edelman)和来自加州大学圣巴巴拉分校的斯特凡·卡宾斯基(Stefan Karpinski)、韦拉尔·沙(Viral Shah)聚在一起,几个年轻人都有着共同的目标,那就是要创建一门可以简化编写代码过程的语言。于是,这种“理想语言”就在这样的愿景下开始发芽。
一开始,大家只是在麻省理工学院的一间办公室里做研究。这间办公室同时还聚集了许多其他方向的研究团队,有研究高性能计算的,有研究数值线性代数的,还有研究随机矩阵理论的,非常热闹。由于项目开发者之一韦拉尔·沙要搬到印度班加罗尔从事国家生物识别项目 Aadhaar,他们只能通过电子邮件进行交流,远程办公。Julia 就在这样的环境下诞生了。
2012 年,Julia 发布了第一个正式版本,它不仅吸收了几位核心开发者的智慧,还获得了 100 多名开源代码贡献者的帮助。用韦拉尔·沙的话说就是,“启动这个开源项目就是为了使编程大众化”。
目前,Julia 仍是开源的,不过为了满足市场对商用产品的需求,在 2015 年的时候,Julia 的四位联合创始人以及基诺·费舍尔(Keno Fischer)、迪帕克·文奇(Deepak Vinchhi)共同创立了 Julia Computing 公司,这家公司主要为 Julia 提供产品、支持和服务。此外,公司还雇用了 Julia 的许多顶级贡献者,一同参与到 Julia 的开发和发展中。虽然公司和 Julia 的开源项目之间没有正式联系,但公司每年都会赞助 JuliaCon,并推动 Julia 开源开发。
开源的理念早就根深蒂固在 Julia 的基因中,与此同时,开发者也对 Julia 给予厚望。当 Juia 首次正式亮相时,开发者就在博客中写道:
“我们想要一种自由开源的语言,它同时拥有 C 的速度和 Ruby 的灵活;我们想要一种同像性语言,它拥有像 Lisp 这样真正的宏,也有像 MATLAB 这样的浅显熟悉的数学符号;我们想要一门像 Python 一样可用于通用编程,像 R 一样易于统计,像 Perl 一样自然地用于字符串处理,像 MATLAB 一样强大的线性代数,像 Shell 一样擅长将程序粘合在一起的语言。它简单易学,却能让严苛的黑客为之倾心。我们希望它是交互式的,但我们也希望它能被编译。”
载着满满的期望,Julia 从 2012 年走到现在,一路发布了十余个版本,从最初的 v0.1.0 走到了现在比较稳定的 v1.3.1。作为一门集百家之长的语言,我们在 Julia 的身上总能看到很多其他编程语言的影子,Julia 的优点也比较多,这或许也是它近几年越来越受欢迎的原因所在。比如:
- 快速、简洁:它的速度非常快,这一点我在之前有提到过,Julia 之所以这么快,和它的设计决策有很大关系:通过多重分派实现专门化的类型稳定性,这一核心决策也使得它能够保持代码的简洁;
- 数值计算:Julia 很擅长数值计算,支持多种数值类型,并且支持并行计算;
- 可选的类型标注:Julia 拥有丰富的数据类型描述,类型声明可以使得程序更加可读和健壮;
- 可组合:Julia 的包可以很自然地组合运行;
- 容易上手:特别是对于那些从 Python、R、MATLAB 或 Octave 迁移过来的使用者,学习 Julia 特别容易。
2018 年 12 月,Julia 的三位联合开发者杰夫·贝赞森、斯特凡·卡宾斯基和韦拉尔·沙共同获得了 2019 年 James H.Wilkinson 数字软件奖。选拔委员会在声明中是这样评价的:
“Julia 允许研究人员以直观的语法编写高级代码,并以生产编程语言的速度生成代码。它已被科学计算界广泛采用,包括天文学、经济学、深度学习、能源优化和医学等应用领域。尤为特别的是,美国联邦航空管理局选择 Julia 作为下一代机载防撞系统的语言。”
虽然 Julia 现在还非常年轻,问题也不少,超越 Python 似乎也是一件不大可能的事情,但谁又说得准呢,时间会给我们答案。
你认为 Julia 的前景怎么样?在今天以前,你是否听说过它呢?欢迎在留言区一起交流。
卖桃者说,明天见。
(编辑:夏天)