编程界的新宠 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”。

julia应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域...相关推荐

  1. NeRF衍生项目,谷歌用Waymo自动驾驶汽车打造3D数字城市

    前不久,谷歌公布了一系列与AR导航.沉浸式立体地图相关的更新,让我们进一步了解谷歌3D地图的发展路径,包括基于海量街景数据合成3D,以及后续会在街景相机上加入LiDAR模组,来实现3D定位等等. 相比 ...

  2. 特斯拉应用在自动驾驶汽车上的神经网络模型—Occupancy Networks

    2022 年CVPR上,特斯拉宣布将在其自动驾驶车辆中发布一种全新的算法.这个算法被命名为Occupancy Networks,它用来改进特斯拉的AI 模型HydraNets. --1-- 特斯拉自动 ...

  3. 自动驾驶:使用 3D 时空卷积网络的自监督点云预测

    参考文献: B. Mersch, X. Chen, J. Behley, and C. Stachniss, "Self-supervised Point Cloud Prediction ...

  4. 行业洞见 | 一文了解自动驾驶汽车

    文章来源:ancholabs.medium.com 文字翻译: 新能源情报局 封面配图:原作者 驾驶是人类日常从事的活动中最困难的之一.遵循交通规则,通过眼神与其他司机沟通交流.对天气状况做出反应是成 ...

  5. ENISA警告自动驾驶汽车存在严重的网络安全挑战

    欧盟网络安全局(ENISA)和联合研究中心(JRC)发布了一份报告--"自动驾驶中采用人工智能(AI)带来的网络安全挑战".报告分析了与自动驾驶汽车中的人工智能(AI)相关的网络安 ...

  6. 3D点云的快速分割:自动驾驶汽车应用的LiDAR处理实例

    点云PCL免费知识星球,点云论文速读. 文章:Fast Segmentation of 3D Point Clouds: A Paradigm on LiDAR Data for Autonomous ...

  7. 阿西莫夫定律:自动驾驶汽车算不算机器人?该不该伤人?

    来源|智车科技 文|刘洪 本文来源:智车科技 涉及自动驾驶汽车事故的新闻总是上头条.一辆自动驾驶汽车一百次有99次都能"认出"行人并在撞到他/她之前停车,这是研究和试验的可喜成果, ...

  8. 福特收购一家小型机器人公司 加速自动驾驶汽车研发

    [TechWeb]7月31日消息,据国外媒体报道,为了进一步推进其推出自动驾驶汽车业务的目标,福特收购了密歇根州的小型机器人公司Quantum Signal. 自1999年成立以来,Quantum S ...

  9. 激光雷达与相机:哪个最适合自动驾驶汽车?

    自动驾驶汽车行业专家之间正在进行的辩论是LiDAR(光检测和测距)或相机是否最适合SAE 4级和5 级驾驶,争论的焦点在于是否将 LiDAR 与相机系统一起使用,或者只使用没有 LiDAR 的相机系统 ...

最新文章

  1. 2019机器学习比赛_2019顶尖的机器学习课程
  2. 详细的多维度测评,看看哪个 Python 版本速度最快!
  3. UVa 11059 - Maximum Product
  4. Python 统计一行字符中单词的个数_Python 经典练习题-015
  5. 索尼a5100_【大象原创】索尼微单最全功能就在这里啦
  6. 【网址收藏】win10环境下安装Docker、Windows安装docker
  7. 定义,公理,定理,引理,推论,命题,推测,猜想
  8. hdu 4717 The Moving Points(三分+计算几何)
  9. 编译QT出错 Basic XLib functionality test failed!
  10. torque安装笔记
  11. a+=b不一定等于a=a+b
  12. Mybatis实体类属性名与数据库类名不对应的两种解决方法
  13. 汉字和utf编码转换
  14. linux基础命令(总结)
  15. linux将数字转为科学计数法,Linux下科学计数法(e)转化为数字的方法
  16. html语言代码大全,html常用代码大全 寻找最全的HTML语言代码大全
  17. (转)步进电机扭矩计算公式
  18. 华为云计算hcip证书有效期_华为云计算HCIP V4.0认证要发布了!
  19. PHP云尚发卡,搭建个人发卡平台教程:云尚发卡平台搭建
  20. W3C(万维网联盟)

热门文章

  1. SSM SpringBoot vue学校办公自动化系统
  2. 2022年全国大学生数学建模竞赛A题思路
  3. IEEE SPL文章接收后通讯作者注册IEEE账户并验证文章
  4. linux石头剪刀布游戏三次,一个 Shell的剪刀,石头,布的小游戏,喜欢的可以看看
  5. oracle ace a,Oracle
  6. 商城系统运营模式有哪些?有什么优缺点?
  7. 【Exceptions】Flowchart is not a function / null is not an object
  8. 【diannaoxitong】总结网站被百度K站怎么快速恢复的方法
  9. linux内核挂载nfs,NFS Client in Linux Kernel - Mount
  10. 相似度:医学领域:Exploiting Sentence Embedding for Medical Question Answering