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好,还给出了5个理由相关推荐

  1. julia与python对比_有人说Julia比Python好,还给出了5个理由

    选自medium 作者:Emmett Boudreau 机器之心编译 参与:杜伟.张倩.肖清 本文作者从速度.通用性.多重派发.适用于 ML 的程度和包管理器 5 个方面阐述了 Julia 语言相较于 ...

  2. ChatGPT竟写出毁灭人类计划书,还给出相应Python代码,网友:AI正在指数级发展...

    羿阁 发自 凹非寺 量子位 | 公众号 QbitAI "网红AI"ChatGPT,又被网友们玩出了新花样! 这次,在一位工程师的诱导下,ChatGPT竟写出了毁灭人类的计划书. 步 ...

  3. 全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.Python 会有哪些最为独特的优势呢?又存在哪些让开发者无力的缺陷?在本文中,我们将 ...

  4. [转载] Python新手写出漂亮的爬虫代码1——从html获取信息

    参考链接: Python中从用户获取多个输入 Python新手写出漂亮的爬虫代码1 初到大数据学习圈子的同学可能对爬虫都有所耳闻,会觉得是一个高大上的东西,仿佛九阳神功和乾坤大挪移一样,和别人说&qu ...

  5. Julia 向 Python 宣战!

    近两年,凭借动态特性和易于扩展性,Python 在企业级应用程序.机器学习/人工智能模型.数据科学等工作中,备受开发者青睐,其火热程度早已超越了编程语言界的老牌兵 Java.而 Python 有朝一日 ...

  6. python 对比matlab_全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    原标题:全面对比 MATLAB.Julia.Python,谁在科学计算中更胜一筹? 数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.P ...

  7. python彩票分析_数字化场景应用平台加持,开课吧学员Python挑战赛秀出代码精彩...

    来源标题:数字化场景应用平台加持,开课吧学员Python挑战赛秀出代码精彩 企业在数字化转型过程中,如何应对数字化人才短缺成为了最大挑战.同时,很多企业还意识到在外部人才争夺战日益激烈的大背景下,仅仅 ...

  8. python表白程序-python如何写出表白程序

    用python编表白程序的方法: 1.创建GUI窗口,实现代码的调用. 2.编写点击触发函数,实现表白程序. 具体代码如下: from tkinter import * from tkinter im ...

  9. python写出的程序如何给别人使用-python如何写出表白程序

    用python编表白程序的方法: 1.创建GUI窗口,实现代码的调用. 2.编写点击触发函数,实现表白程序. 具体代码如下:from tkinter import * from tkinter imp ...

最新文章

  1. Android反编译apk并重新打包签名(Mac环境)
  2. Leetcode 912. Sort an Array
  3. corosync+pacemaker在centos7上的安装,配置简述
  4. 《 FRIDA系列文章 》
  5. PullToRefresh
  6. wifidog java_wifidog 配置中文说明
  7. 安装、配置文件-配置 CACTI 监控 MySQL 数据库状态-by小雨
  8. Java学习资源、视频教程汇总
  9. 从来没见过这么多的资源~~好好找找吧,一定有你需要的
  10. 《Spring实战》读书笔记-第1章 Spring之旅
  11. 嵌入式C语言volatile作用
  12. 人脸识别接口_双目模组摄像头人脸识别技术中活体检测
  13. tp5 验证码 验证不正确 (跨域问题)
  14. 北京大学计算机801考试大纲,2019年中国科学院大学801高等代数考研初试大纲
  15. BP(back propagation)误差逆传播神经网络
  16. 详解基于深度学习的伪装目标检测
  17. EXCEL-数据透视表、日数据整理成月数据
  18. 后场正手移动跳杀球技术图解
  19. java-php-python-ssm基于智能选课系统的设计与实现计算机毕业设计
  20. 双离合档把上按钮作用_帕萨特档杆按钮作用是什么

热门文章

  1. Ubuntu下如何禁用IPv6
  2. Java并发机制深究1-synchronized和volatile
  3. 【MongoDB】嵌套数组查询方案
  4. AndroidStudio自动补完包的快捷键
  5. Codeforces Round #503 (by SIS, Div. 1)D. the hat
  6. micropython esp8266+ssd1306(OLED) 显示中文(示例)
  7. 读写应用程序数据-SQLite3
  8. 字符设备驱动笔记(一)
  9. network 学习笔记
  10. [导入]VB实现SQL Server数据库备份/恢复