编程界的新宠 Julia 发布 1.0 正式版本,多种优势集于一身
2018-08-14 14:14 公司
Julia 的累积下载次数超过 200 万,已被应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域。
此次 Julia 1.0 版本的发布,更是将商业用户越来越看重的稳定性与原有的快速、高生产力的特性结合起来,足以媲美 Python,R,C++和 Java 等编程语言。
众多来自科技、咨询和金融等行业的公司都有采用 Julia 语言并雇佣 Julia 开发人员,其中包括:亚马逊、苹果、贝莱德集团、博思艾伦咨询公司、Capital One、康卡斯特、迪斯尼、安永、脸书、美国联邦航空管理局、纽约联储银行、福特、谷歌、IBM、英特尔、毕马威、微软、NASA、甲骨文、普华永道和优步。
除了商业公司,目前还有超过 700 所大学、研究机构和实验室使用 Julia,其中不乏 MIT、哈佛、加州理工、劳伦斯·伯克利国家实验室、橡树岭国家实验室等知名大学和实验室。
Julia 社区已有超过 700 名贡献者,开发了超过 1900 个扩展包。截至目前,Julia 已被下载超过 200 多万次,在 GitHub 上获得超过 41000 个星星,下载量年增长率超过 101%。
Julia 兼具 Python 和 R 等高级语言的易用性和 C++的运行速度。它是目前唯一经过千万亿次量级计算考验的高级编程语言。在世界排名第 6 的超级计算机上,Julia 在 9300 个英特尔 Knights Landing (KNL) 计算节点上调用 65 万个核与 130 万个线程,对 1.88 亿个天体进行编目,仅耗时 14.6 分钟。
外在金融风控模型和天文学图像分析等应用领域,Julia 对速度和性能的提升可达到 1000 倍以上。
不论是在笔记本电脑还是在超级计算机上,不管采用 1 个还是数千个具备多线程、GPU 和并行计算能力的节点,Julia 均可保持出色的表现。
对美国联邦航空管理局的飞机防撞系统(Aircraft Collision Avoidance System (ACAS-X))、贝莱德集团的阿拉丁分析平台(Aladdin analytics platform)和纽约联储银行的动态随机通用平衡 (DSGE) 宏观经济学模型等项目,Julia 都被应用在其中且发挥了重要作用。
翻译:离子心
参考链接:https://www.hpcwire.com/off-the-wire/julia-1-0-released/_
这是他的官方介绍:“我们想要一种拥有自由许可的开源语言,同时拥有 C 的速度和 Ruby 的灵活。我们想要一种同像性语言,有像 Lisp 这样真正的宏,也有像 Matlab 这样的浅显熟悉的数学符号。我们想要一门像 Python 一样可用于通用编程,像 R 一样易于统计,像 Perl 一样自然地用于字符串处理,像 Matlab 一样强大的线性代数,像 shell 一样擅长将程序粘合在一起的语言。它简单易学,却能让严苛的黑客为之倾心。我们希望它是交互式的,具备可编译性。”
一个充满活力和繁荣的社区就围绕这种语言成长起来,世界各地的人们都在为了这个目标而不断努力改进和塑造Julia。 超过700人为Julia做出了自己的贡献,更多人创造了成千上万开源的Julia包。总而言之,我们创造了这样一种语言:
快速:Julia一开始就是为高性能而设计的。Julia可以通过LLVM而跨平台被编译成高效的本地代码。通用:Julia使用多分派作为编程范式,使其更容易表达面向对象和函数式编程范式。标准库提供了异步I/O,进程控制,日志记录,性能分析,包管理器等等。动态:Julia是动态类型的,与脚本语言类似,并且对交互式使用具有很好的支持。数值计算:Julia擅长于数值计算,它的语法适用于数学计算,支持多种数值类型,并且支持并行计算。Julia的多分派自然适合于定义数值和类数组的数据类型。可选的类型标注:Julia拥有丰富的数据类型描述,类型声明可以使得程序更加可读和健壮。可组合:Julia的包可以很自然的组合运行。单位数量的矩阵或数据表一列中的货币和颜色可以一起组合使用并且拥有良好的性能。
去它官网找了找,得到其生态系统如下:
一般用途
构建,部署或嵌入您的代码
Julia允许您编写UI,静态编译代码,甚至将其部署在Web服务器上。它还具有强大的类似shell的功能,可用于管理其他进程。它提供类似Lisp的宏和其他元编程工具。
Julia具有C / Fortran, C ++, Python, R, Java和许多其他语言的外部函数接口 。Julia也可以通过嵌入API嵌入到其他程序中。具体来说,Python程序可以使用PyJulia调用Julia 。R程序可以用R的JuliaCall做同样的事情,这可以通过从R调用MixedModels.jl来证明。
数据科学
与您的数据互动
Julia数据生态系统允许您快速加载多维数据集,并行执行聚合,连接和预处理操作,并以高效格式将它们保存到磁盘。您还可以使用OnlineStats.jl对流数据执行在线计算 。无论您是在寻找方便和熟悉的 DataFrame,还是使用JuliaDB的新方法 ,Julia 都能为您提供丰富的工具。该 Queryverse包装作用的元数据包,通过它可以访问这些工具与朱利安的API。除了使用表格数据外,还有JuliaGraphs 软件包可以轻松使用组合数据。
Julia可以使用JDBC.jl和 ODBC.jl驱动程序处理几乎所有数据库 。此外,它还使用Spark.jl, HDFS.jl和 Hive.jl与Hadoop生态系统集成 。
机器学习
可扩展的机器学习
Julia为深度学习(Flux.jl和 Knet.jl), 机器学习和AI 提供了强大的工具。Julia的数学语法使其成为表达算法的理想方式,就像它们在论文中编写一样,构建具有自动差异的可训练模型 , GPU加速以及对数TB数据的支持。
Julia丰富的机器学习和统计生态系统包括 广义线性模型, 决策树和聚类的功能。您还可以找到贝叶斯网络和 马尔可夫链蒙特卡罗的包 。
科学领域
丰富的科学计算生态系统
Julia的设计从根本上讲非常擅长数值和科学计算。这可以从Julia编写的大量科学工具中看出,例如最先进的微分方程生态系统 (DifferntialEquations.jl),优化工具(JuMP.jl和 Optim.jl),迭代线性求解器 (IterativeSolvers) .jl)以及更多,可以驱动所有模拟。
Julia还提供了许多特定领域的生态系统,如生物学 (BioJulia),运筹学(JuliaOpt),量子物理学 (QuantumOptics),非线性动力学(JuliaDynamics),定量经济学 (QuantEcon),天文学 (JuliaAstro)和生态学 ( EcoJulia)。有了一群来自科学界各个部分的热情的开发人员和维护者,这个生态系统将继续变得越来越大。
并行计算
并行和异构计算
Julia专为并行性而设计,并为各个级别的并行计算提供内置基元: 指令级并行, 多线程和 分布式计算。该Celeste.jl项目达到1.5千万亿次/秒的在NERSC超级计算机的Cori使用650000个内核。
Julia编译器还可以为各种硬件加速器生成本机代码,例如GPU和Xeon Phis。诸如DistributedArrays.jl和Dagger.jl之类的包为并行性提供了更高级别的抽象。
不得不说这语言的野心的确很大,其在github已经有15千多Star,已被下载超过200万次,而Julia社区已经开发了超过1,900个Julia软件包。其社区好像也挺完善的,中文社区为juliacn.com。
其中文社区的有这么一段话 :
要求有点多,是不是?
尽管我们意识到了自己有多贪心,我们还是想要拥有这些功能。大概在两年半之前,我们开始创造这种能满足我们贪念的语言。它还没有完工——但是已经可以发布一个1.0版本了(其实等了6年才要发布)——我们创造的这个语言叫做Julia。它已经实现了我们这次乱七八糟需求的90%,而现在她需要来自更多人的乱七八糟的需求,来让她走得更远。如果你也是一位贪心不足,不可理喻,需索无度的码场二逼青年,希望你能来试试这个东东。
哈哈,心动不如行动~
Julia创建于2009年,由四个牛人组成的team所创。在2012年的时候发布于世。看看这四个人牛B哄哄的发言:“我们希望它是一个开源的语言,并拥有相关的许可认证;我们希望它既有C语言的速度又有Ruby语言的弹性;我们希望它非常容易理解,拥有像Lisp一样的宏又有像Matlab一样的数学记号;我们希望它像Python那样通用,像R语言那样易于统计计算、像Perl一样简单自然的处理字符串,像Matlab一样强大的处理线性代数,像shell一样能把各种语言联合在一起;我们希望它易于学习,又能让黑客们喜欢;我们希望它是交互式的,又希望它可以编译。” 看完这段话,你明白他们的口号为什么是“我们是贪婪的”了吗?请问,还有什么你不能做到的吗?
那实际发布的Julia语言是什么样子的呢?
可编译,非解释性的语言,追求速度。Julia使用基于LLVM编译架构的即时编译编译器。最好的时候,它能接近或达到C语言的速度。
拥有简单直接的语法。非常像Python。
动态类型变量和静态类型变量兼备。可以显式的定义一个unsigned 32-bit integer,也可以不用定义变量的类型和长度。
Python,C, Fortran语言的库文件通吃。Julia可以直接调用C和Fortran的库文件,也可以通过一个PyCall的借口调用Python的各种库Module。
元编程。即“程序能够编写程序”。非常像Lisp语言。
Julia VS Python: Julia的优势
Juila一开始就是为科学计算设计的,所以毫不奇怪它具有如下优势:
默认情况下速度更快。得益于它的即时编译和灵活的类型定义,Julia将纯Python,即未经过优化的Python甩出了几条街。
数学友好的语法。Julia的数学操作语法更像是传统教学使用的语法,这使更多的对计算机不熟悉的数学工作者能很快上手Julia。
自动内存管理。与Python一样,用户不需要担心内存管理。
并行计算。和Python一样可以提供并行计算,但语法更简单,降低了使用门槛。
Python VS Julia: Python的优势
Julia的数组是从1开始索引的。这个问题似乎并不起眼,但是却和C、Python等语言不一致,可能会影响到编程者的习惯。
Julia还很嫩。至今也没有看到1.0版本。
Python有很多的第三方库。
Python拥有巨大的社区。这是Python巨大的优势。
总结
虽然Julia还算是个新生事物,但笔者认为还是颇具前景。如果感兴趣的话可以前往https://julialang.org/了解。
如果喜欢请关注“大数据Talks”。