早在 2009 年,Jeff Bezanson、Alan Edelman、Stefan Karpinski 和 Viral Shah 四个人聚到一起决心创造一种全新的编程语言。新语言要快速、有表达力,结合 C 语言、Matlab、Java、Ruby、Python、Perl 和 R 各自的优势,并能直接与 R、Matlab、Python 等最受欢迎的机器学习语言,以及其他动态工具展开竞争。听起来这思路很直接、很简单,是吧?这想法的背后有着几名创始人对开发者“痛点”的长期切身体会:工程师们为了在数据分析中获得速度和易用性,不得不首先用一种语言编码,然后用另一种语言重写——这实在很“坑爹”。而这就是很多人口中的“双语言问题”。

这背后的努力,促成了 Julia 的诞生。

创始人之一的 Viral Shah 解释道:

“为什么一个编程语言不能同时具有性能和生产力,这难道是一个物理定律吗?或者,现有的编译器-语言技术还没有发展到那个阶段?我们认为,在同个封装中获得易用性和性能是可能的。于是,我们开始投入到这个项目之中,并把它命名为 Julia。”

Viral Shah

随后,几名 Julia 创始人联合 Keno Fischer 创立了“Julia Computing” ——一家咨询公司,为使用 Juia 语言的企业客户提供帮助。

Julia 是一门开源语言,允许开发者创建性能更为强大的数字算法——相对于采用 Just In Time (JIT) 解释的语言而言。它易于使用,大幅减少了需要写的代码行数;并且能够很容易地部署于云容器(cloud containers )

2012 年,Julia 的第一个公开版本 Julia 0.1 正式发布。2016 年九月发布了Julia 0.5,涵盖了 1100 个工具包,比一年前的 0.4 版本增加了 57%。Julia 开发者社区的规模还很小,目前在全世界范围内大约有 15 万用户。但随着计划于今年 6 月在加州大学伯克利分校举办的 JuliaCon 峰会,以及将在峰会上发布的 Julia 1.0;届时,它的用户群有望快速增长。Viral Shah 表示,他们的下一个目标是 150 万用户。另外,现有 Julia 版本的技术支持期限是一年,而 Julia 1.0 将会是五年。

Julia 已经引起了华尔街的注意。投资银行 Berkery Noyes 的 CTO Keith Lubell 评论道:

“真正让我们感到激动的是,你可以编写高层级的科学、数字计算,而不需要重新编译。通常来讲,当你用 R 或 Matlab 写了一些东西,想让它运行得更快。你需要把它重新翻译至 C++,或者其他更快的语言。而使用 Julia 就不需要这样——它的速度是拔尖的。”

Julia 仍是摇篮中的新生儿。因此,若要成为大数据、机器学习工程师们的普遍选择,它需要在多个领域成长起来。其中最重要的是开发者社区,它亟需壮大以提供更多的工具包和库。只有这样, Julia 才能吸引更多用户到它的平台,与基础设施完善的老牌数据分析语言直接竞争。

如果你跟任何使用 Julia 的开发者聊聊,他们会告诉你,选择“上车”、使用这个萌芽期编程语言的首要原因是速度。据 Julia Computing 的宣传,在七项基础算法的测试中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。

Julia 精简的代码行数,对其性能提升贡献巨大。迄今为止最引人注目的 Julia 应用案例是纽约联邦储备银行( Federal Reserve Bank of New York )

美联储对 Julia 的应用

大约两年前,诺贝尔经济学奖得主、纽约大学经济学教授、咨询公司 QuantEcon 的创始人 Thomas Sargent,以及澳大利亚国立大学的经济学教授 John Stachurski,共同建议纽约联邦储备银行( Federal Reserve Bank of New York )把其用于市场走势预测和政策分析的“动态随机一般均衡模型(DSGE)”转到 Julia 语言平台。

Thomas Sargent

此前,纽联储的 DSGE 模型一直用 Matlab 运行。该项目背后的逻辑是,探索像 DSGE 这样的大型模型能否轻易转移至 Julia,以及其运行速度究竟会不会有大幅提升。纽联储采纳了建议,并利用该机会与 QuantEcon 合作。纽联储宏观经济与货币研究部门副主席 Marco Del Negro 表示:

“对我而言,这是一个绝妙的注意。我们当时正在考虑脱离 Matlab ——既出于成本,也有速度方面的原因。我们希望进一步提升我们的模型,并探索新事物。”

在项目第一阶段后,他们发现,Julia 把模型运行时间缩短至原先 Matlab 代码的十分之一到四分之三。模型中,Metropolis-Hastings 采样(从概率分布获取一系列随机样本的马尔可夫链蒙特·卡罗方法)是最耗费时间的环节。而在该环节,Julia 的运行速度是 Matlab 代码的 10 倍。相对于原先的 Matlab 版本,基于 Julia 的全新 DSGE 模型把代码行数减少了将近一半。

雷锋网(公众号:雷锋网)获知这些性能提升不能全归功于 Julia。纽联储表示,Matlab 版本的 DSGE 模型开发周期相当长,是一个累积式的过程。另外,它还支持了过多的模型和特征。这些原因导致其有很多不完美之处,运行效率本身就有不足。新项目下,这些专家们用 Julia 把该模型从头设计了一遍,针对此前发现的一系列问题做了改进。因此,新模型可被看做是经历了两重升级:架构优化以及 Julia。当然,两者是结合在一起实现的。不过,一些“经历了较小优化以及重设计”的算法,比如测量算法以及 kalman_filter 函数,新版本仍然比旧的、基于 Matlab 的模型提升了大约五分之一至四分之三的运算速度,见下图。

雷锋网获知,目前纽联储已经开启了项目的第二阶段:改进 DSEG 模型的预测能力。由于他们需要不断为模型添加数据和层级,纽联储认为 Julia 能更好应付提升的复杂性——他们估算基于 Julia 的模型运行时间大约只需要一至两天,而 Matlab 可能需要一个月才能等到输出结果。但这仍需第二阶段完成后进行证实。

开发者社区

Julia 最大的短板在于社区。雷锋网获知,Python 已经 25 岁了, R 语言快 25 岁了,Matlab 超过 30 岁了。它们有非常扎实的社区群众基础——不断加入新工具包以及库的支持。有观点认为这些主流语言会不断改进,并在未来的某个时间点,在原本的短板上一举超越这些新兴、但强大的小众语言。Keith Lubell 就表达了类似的观点,但他补充道:投资银行业正受到来自金融科技公司越来越大的竞争压力,迫使他们考虑利用 Julia 这些新兴语言实现创新。

为了对开发者社区提供支持,AOT 的 Duve 说他有信心 Julia Computing 会成为 RStudio 那样的机构。后者为 R 语言开发开源的免费工具及商用级的专业产品。Duve 认为,Julia 采取的开发、发布方式会鼓励更多的企业级用户采用它。尤其 Julia 的用户体验友好,它的架构使得金融和经济学领域的专家们很容易使用,因而已受到金融圈部分人士的欢迎。纽联储就是一个例子。

Duve 说道:“Julia 开发者社区推动、改进该语言的方式,比 R 语言历史上的任何时候都有条理地多。”

另外,BestX 的 Thind 表示,虽然 Julia 能被轻易部署于云端容器,但与云交互存在着风险:

“在云端服务上,用 Julia 在整个簇(cluster)部署多个处理进程,就像 MapReduce 那样,是非常简便、高效的。但如果你需要与 DynamoDB 或 RedShift 这样的特定服务交互,Python 的 API 要比 Julia 的原生库成熟、强大得多。”

想要拿 Julia 试手的开发者,需要仔细考虑他们使用该语言的用途,以及拿什么与之配合。

“所有想要加入 Julia 阵营的公司都需要弄清楚,你想要用它来实现哪些不一样的功能?它能不能为其中至少一半的功能提供原生支持?你可以用 C 语言或者 Python 来完成剩下的那些,并且这会是完全无缝的体验。但是,如果你的大部分应用都需要其他语言来弥补,你应该暂时缓一缓转向 Julia,或者联系 Julia Computing 看看能否得到缺失的功能支持。”

最后,我们来看看 Julia 创始人之一的 Viral Shah 的愿景:

“某一天,开发者社区会传来一个信号—— Julia 已经做好准备,将进入指数级增长轨道。”

via waterstechnology

相关文章:

Lisp 家族迎来新成员,函数式语言 Lux 是什么?

Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

入门必读 机器学习六大开发语言

机器学习新星:Scala 优于 Java 的五大理由!

本文作者:三川

本文转自雷锋网禁止二次转载,原文链接

美联储加持的小众语言 Julia ,能否成为机器学习的明日之星?相关推荐

  1. Emacs, Vi, Lisp, Logo, 小众语言集中营

    http://antkillerfarm.github.io/ emacs学习心得 emacs是大名鼎鼎的Richard Stallman的作品,我闻名已久.但作为早期一直在Windows操作系统下打 ...

  2. 互联网时代,用小众语言对抗焦虑和内卷!

    我大学毕业后第一份工作就用的是 Elixir 这门语言. 也许你听都没听说过,和你一样,这份工作之前我也是从来就没听说过. 总之就是种种原因机缘巧合,上了贼船,转眼到现在也做了快 5 年.不过这次不来 ...

  3. python julia_从Julia角度看机器学习的python经验

    python julia I recently went through some machine learning training with Python, and wanted to refle ...

  4. R语言caret包构建机器学习回归模型(regression model)、使用DALEX包进行模型解释分析、特征重要度、偏依赖分析等

    R语言caret包构建机器学习回归模型(regression model).使用DALEX包进行模型解释分析.特征重要度.偏依赖分析等 目录

  5. R语言使用knitr生成机器学习模型全流程步骤示例:knitr与自动化结果报告、knitr常用参数

    R语言使用knitr生成机器学习模型全流程步骤示例:knitr与自动化结果报告.knitr常用参数 目录

  6. R语言基于Boruta进行机器学习特征筛选(Feature Selection)

    R语言基于Boruta进行机器学习特征筛选(Feature Selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(f ...

  7. python学习书籍推荐-Python语言之6本机器学习书籍推荐

    本篇文章主要讲述Python语言之6本机器学习书籍推荐,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. 机器学习是实现人工智能的一种途径,它和数据开掘有一定的相似性,也是一门多领 ...

  8. TIOBE 5 月编程语言排行榜:Python、C++竞争白热化,Objective-C已沦为小众语言

    作者 | 屠敏 出品 | CSDN(ID:CSDNnews) 日前,TIOBE 编程语言社区最新发布了 2019 年 5 月排行榜. 和 4 月榜单相比,5 月编程语言排行榜的 Top 10 位置并没 ...

  9. 数值计算动态语言Julia 1.0发布

    Julia是一门用于技术计算的.高性能的高级动态语言.该语言的最新版本Julia 1.0包含稳定的语言API,并且内置了一个新的包管理器. \\ Julia计算团队在8月7日到11日举行的JuliaC ...

最新文章

  1. 【数据挖掘】高斯混合模型 ( 模型简介 | 软聚类 | 概率作用 | 高斯分布 | 概率密度函数 | 高斯混合模型参数 | 概率密度函数 )
  2. Git/TortoiseGit使用
  3. Liststring[] 如何去重
  4. java 时间戳和PHP时间戳 的转换 php time()
  5. 一道SQL面试题(行列互换)
  6. hibernate get() load() 区别
  7. Nginx 服务器开启status页面检测服务状态
  8. RocketMQ避坑指南:springcloud教程权威指南
  9. LeetCode 663. 均匀树划分(树形DP)
  10. 升级到Oracle 19c:你不可不知的十大SQL问题(上)
  11. UAC2.0 Requests处理
  12. Eclipse中文汉化包安装教程
  13. 教你ogg怎么转mp3格式
  14. 虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本。模块“Upgrade”启动失败。未能启动虚拟机。
  15. 自动化专题讲座:作为自动化工程师,如何才能更好的承担社会责任?
  16. 汉字读音表GB2312版 (共7809个汉字)
  17. 移动端touch事件影响界面click/超链接事件无法点击
  18. 什么是代理(Proxy)?
  19. Java 使用redis 设计一个每天重新开始计数的计数器
  20. 计算机打字总是会返回到桌面,电脑打字的时候经常回到桌面是什么原因?

热门文章

  1. centos虚拟机提高网速方法
  2. byvoid 神牛的tarjan算法讲解!
  3. 使用Batik把SVG转换为图片
  4. 心泰医疗在港交所启动招股:上半年利润下滑42%,市值将突破100亿
  5. UE4 动画系统 源码及原理剖析
  6. python微型爬虫获取美女图片(福利满满额)
  7. 如何在Github快速找到资源(资源快速检索)
  8. 成长Taller-是否有可能
  9. 抓住“开源盛世“,这个工具你必须了解一下
  10. 基于声网 Agora 信令 SDK 开发聊天室应用(一)