选自medium

作者:Emmett Boudreau

机器之心编译

参与:杜伟、张倩、肖清

本文作者从速度、通用性、多重派发、适用于 ML 的程度和包管理器 5 个方面阐述了 Julia 语言相较于 Python 的优势所在。

Julia 是一种多范式的函数式编程语言,用于机器学习和统计编程。尽管 Python 通常被认为是一种面向对象的编程语言,其实它也是用于机器学习的多范式编程语言。需要注意的是,Julia 语言更多地基于函数范式。此外,Julia 语言虽不如 Python 那么流行,但在数据科学中使用 Julia 具有很大的优势,从而使它在很多情况下成为更好的编程语言选择。

下文将从五个方面介绍 Julia 的优势所在。

速度

首先是速度,这是 Julia 语言引以为傲的一个重要方面。与 Python 需要解释器来执行代码不同,Julia 主要是依托自身实现编译。另一方面,与 C 语言等其他编译语言也不同的是,Julia 在运行时进行编译,而传统语言则是在执行前进行编译。如果 Julia 语言编写地非常好,它的速度与 C 语言相当、有时甚至可以超过 C 语言。Julia 语言使用即时编译器 Just In Time(JIT)compiler,它的编译速度非常快,尽管它编译时更像是一种解释型语言而非 C 或 Fortran 等传统低级编译语言。

通用性

我们都知道通用性是 Python 语言相较于 Julia 语言的一个优势,确实有很多通过 Python 语言编写的项目无法使用 Julia 来实现。当然以上仅针对编程语言本身而言,我们这里提到的通用性是指能够与其他语言混合编程。Julia 代码普遍能够在 R、Latex、Python 和 C 等语言中直接运行。这意味着典型的数据科学项目具有一旦被编写完成并在 Julia 本地进行编译后,在其他编程语言中作为封装类或仅传递字符串使用的潜力。

PyCall 和 RCall 也是 Julia 语言的两大优势。考虑到 Julia 语言一大缺点在于包的丰富程度不及 Python 或 R 语言,利用 PyCall 和 RCall 在 Julia 代码中随时调用 Python 和 R 为用户提供了极大的便利。PyCall 在 Julia 语言中得到了很好地实现,并且也非常有用。

多重派发

Julia 是一种非常独特的类型化语言,具有自己的执行模式和特征,但其中一个非常酷的特征是它的多重派发。首先,Julia 的多重派发速度非常快。除此之外,使用 Julia 的多态派发能够将函数定义应用为结构属性。这使得继承(inheritance)在 Julia 内部可行。不仅如此,使用 Julia 的多重派发还可以实现函数的扩展,这对于包扩展来说好处多多,因为无论什么时候显式地导入 method,用户都可以对它进行更改。因此,用户可以很容易地显式导入自己的 method,并选择相应结构将它扩展为一个新的函数。

适用于 ML 的程度

与 Python 不同,Julia 语言的目的是应用于统计学和机器学习领域。Python 语言则创建于 20 世纪 90 年代早期,是一种面向对象的语言,并且自此之后也改变了很多。尽管 Python 具有很长的发展历史以及广泛的应用范围,但使用一种专门创建用于高级统计工作的语言能够带来很大的好处。

我认为在线性代数中使用 Julia 要好于 Python。原生的 Python 只能缓慢完成线性代数,而原生的 Julia 可以飞快地完成。这是因为,Python 最开始并不是开发来用于支持与机器学习相关的所有矩阵和方程运算的。这并不意味着 Python 不好,特别是当有了 NumPy 扩展库之后。但就不导入额外扩展库而言,Julia 更适合于这类数学运算。此外,与 Python 相比,Julia 的操作数系统与 R 语言的更为相近。使用 Julia 语言能够更快速、更容易地完成大多数线性代数运算,如以下代码所示:

包管理器

Julia 的 Pkg 包管理器秒杀 Python 的 Pip 包管理器。Pkg 自带 REPL 和 Julia 包,你可以从中构建、添加、移除、实例化包。因为 Pkg 和 Git 是绑定的使得以上操作尤其便利。更新、添加包都非常容易。总之,比起 Python 的 Pip,Pkg 的使用体验在任何时候都要愉悦得多。

总结

R 也好,Julia 也好,Python 也好,你用什么语言其实没那么重要。重要的是,你要知道每种语言都有它的劣势,没有哪种语言是无可挑剔的。特别是当你的程序用途广泛时尤为明显(从机器学习到 GUI 到 API)。综上所述,Julia 和 Python 一样是我很喜欢的语言之一。Python 有更好的包,如果项目足够小,我就会用 Python。但是对于拥有数百万个观察结果的数据集,用 Python 读取数据都会变成一件难事。

总之,我对 Julia 的未来满怀期待。Julia 写起来很有趣,而且在未来的数据科学领域可能会变得更加实用。

本文为机器之心编译,转载请联系本公众号获得授权。

------------------------------------------------

julia与python对比_有人说Julia比Python好,还给出了5个理由相关推荐

  1. ds证据理论python实现_你好,Julia!再见,Python!

    点击上方蓝色字体关注"职业蛙",带你轻松拿offer! 今 日 福 利 后台回复关键词"DS" ,领取: 数据科学精选福利包  包括:Julia数据科学应用.S ...

  2. 有人说Julia比Python好,还给出了5个理由

    Julia 是一种多范式的函数式编程语言,用于机器学习和统计编程.尽管 Python 通常被认为是一种面向对象的编程语言,其实它也是用于机器学习的多范式编程语言.需要注意的是,Julia 语言更多地基 ...

  3. linux python优势_来讲讲 Julia胜于Python的5个优势

    导读 Julia是一种多范式函数编程语言,主要用于机器学习和统计编程.虽然Julia当然没有Python那么受欢迎,但是将Julia用于数据科学有一些巨大的好处,使得它在Python的许多情况下都是一 ...

  4. julia const报错_我爱Julia之入门-004

    变量 Julia 语言中,变量是与某个值相关联(或绑定)的名字.你可以用它来保存一个值(例如某些计算得到的结果),供之后的代码使用.例如: julia> # 将 1 赋值给变量 x julia& ...

  5. pythoncookbook和流畅的python对比_为什么你学Python效率比别人慢?因为你没有这套完整的学习资料...

    以下资源免费获取方式! 关注!转发!私信"资料"即可免费领取! 入门书籍 1.<Python基础教程>(Beginning Python From Novice to ...

  6. 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)

    小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...

  7. 好想学python机器人_拥有自动学习的Python机器人-ChatterBot

    「聊天机器人」一直是许多企业.学界在专研的东西,它可以用于许多用途上,例如淘宝会有机器人客服人员,会透过机器人来帮助你解决问题,又或者是很多聊天室都会有聊天机器人这种东西,例如Line 当中有人制作出 ...

  8. go和python优缺点_我为什么放弃了 Python ,选择了 Go?

    根据维基百科数据统计(https://en.wikipedia.org/wiki/List_of_programming_languages),一共有 600 余种不同的编程语言.对于五花八门的开发语 ...

  9. 21天精通python电子版_小白21天精通Python是如何做到的?

    第二种:看网站入门教程,很多人推荐的廖雪峰Python教程 第三种:视频教程,推荐慕课网.其他还有网易云课堂,学堂在线(这个里边大学课程比较多) 学写一些基本的Python程序,上述<简明 Py ...

最新文章

  1. proto buffer
  2. 友情链接交换看的不是“真友情”!
  3. 中国冶金行业投资战略及未来发展形势研究报告2021版
  4. java中printarray和selectsort方法_算法题(一)
  5. vst3插件_2B Played Music发布用于劲爆舞曲风格的极端失真和剪辑插件2B Clipped XT
  6. SAP Engagement Center的ShellCarousel控件control
  7. 小程序 生成条形码barcode.js
  8. [TJOI2009] 战争游戏
  9. MDX Step by Step 读书笔记(四) - Working with Sets (使用集合)
  10. 什么是ajax?ajax作用是什么?
  11. 基于trustonic tee使能MTK Widevine L1(SVP)
  12. VOIP技术的专业性网站
  13. 安卓如何调出软键盘_系统软键盘Android在外接物理键盘时,如何强制调用系统软键盘?...
  14. java tongpaiyu danliantiao_Java Pinyin.cou4方法代碼示例
  15. 奥迪坚技术革新带动信用卡呼叫中心管理升级
  16. MobaXterm在4K屏幕下的兼容性设置
  17. ONVIF学习笔记11:搜索设备不匹配问题排查
  18. linux和pe修复win10启动项,pe下如何重建win10引导?pe下win10引导修复图文教程
  19. 思科EtherChannel链路聚合
  20. linux查看IP端口占用情况

热门文章

  1. QPW 用户签署协议日志表(tf_user_agreement_log)
  2. Mybatis多条件直接查询
  3. 深度学习pytorch--softmax回归(二)
  4. tpm php,TPM系列
  5. python是什么牌子主机_python 收集主机信息
  6. redis 内存不足 排查_排查redis占用内存达90%以上
  7. cv2 imshow窗口大小_cv2.imshow()图片无法显示
  8. 鸿蒙os内测版应用名称,谁知道报名鸿蒙系统公测,应用名称怎么填的?
  9. android studio on/off 切换开关,如何使用android studio中的开关小部件来启用/禁用函数()?...
  10. pat 乙级 1010 一元多项式求导(C++)