点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

【CSDN 编者按】在数据科学领域,你最常用的编程语言是哪种?对此,不同职业背景下的开发者答案各尽不同,一般来说,Python 和 R 语言是需要重点掌握的,但是如今有一枝独秀悄然而至,其创作理念是像 Python 一样通用、像 R 语言一样适用于统计、像 Perl 一样适用于字符串处理、像线性代数 Matlab 一样强大、像 Shell 一样擅长粘合程序,且可以像 C 语言一样高效,它的名字叫做——Julia。如今,在面对 Python 俨然已成为数据科学和机器学习领域的中流砥柱的窘境之下,Julia 以何种优势与之抗衡,接下来,本文将带你一探究竟。

以下为译文:

在 Python 涵盖的众多领域中,数据分析应当是应用最广同时最为重要的。Python 通过加载大量的库、工具和应用程序,使得科学计算和数据分析工作变得快速便捷。

Julia 语言(https://julialang.org/) 专门针对科学计算、机器学习、数据挖掘、大规模线性代数、分布式和并行计算,在 Julia 的使用者眼里,Python 不够快也不够方便。此消彼长,当它擅长某一项工作时,肯定会忽略其他部分。

Julia 语言简介

Julia 由一个四人组成的团队于 2009 年创建,在 2012 年正式对外发布,旨在解决用于科学计算和数据处理的编程语言(比如 Python)和应用程序的缺陷。团队成员追求完美和极致,他们表示:

我们需要一个开放源码且拥有自由许可证的语言。我们希望兼具 C 语言的速度与 Ruby 的动态性。我们希望编程语言具有同像性,既有 Lisp 这样真正的宏,又有 Matlab 这样带有明显的、为人熟知的数学符号。我们希望它像 Python 一样可以用于一般编程,又像 R 语言一样适用于统计学,能够像 Perl 那样自然地用于字符串处理,就可以像 Matlab 那样强力支持线性代数,此外还能像 shell 一样做程序的粘合剂。它能够让初学者轻松入门,又能给资深开发者提供高级特性。我们希望它具有很强的交互性,同时又属于编译型语言。

为了实现这些想法,Julia 遵循了如下策略:

  • 为了更快的速度,定义为编译型语言,而不是解释型。Julia 使用 LLVM 编译器框架进行即时编译(JIT)。在某些情况下,Julia 可以接近甚至达到 C 语言的速度。

  • 采用直接但有用的语法。Julia 语法的简洁程度可以与 Python 媲美,虽然简洁,但是表现力很强。

  • 动态类型。你可以指定变量的类型,如“无符号的32位整数”。但是,你也可以创建类型的层次结构以允许处理特定类型变量,例如编写一个接受整数的函数,通常不指定整数长度。最后如果在特定的上下文中不需要,你可以不用完全输入。

  • 可以调用 Python、C 和 Fortran 编写的库。Julia 可以直接调用 C 语言和 Fortran 编写的外部库。也可以通过 PyCall 库与 Python 代码进行交互,此外, Python 和 Julia 之间的数据可以共享。

  • 元编程。Julia 程序可以生成其他的 Julia 程序,甚至可以修改自己的代码,就像 Lisp 这样的语言一样。

Julia 相比 Python 的优势

Julia 从一开始就是为科学和数值计算而设计的。因此,Julia 在此领域具有众多优点也就不足为奇。它的优点如下:

  • 速度更快。Julia 的 JIT 编译和类型声明意味着它可以比“纯粹的”、未被优化的 Python 快几个数量级。虽然 Python 可以通过 PyPy 或者 Cython 等方式进行速度优化,但 Julia 从设计之初就具有天然的速度优势。

  • 友好的数学语法。Julia 的主要目标受众是科学计算语言和 Matlab、R、Mathematica、Octave 等环境的用户。Julia 的数学运算语法看起来更像计算机世界之外的普通数学公式,它使得非程序员很容易掌握。

  • 自动内存管理。像 Python 一样,Julia 不需要用户太多关注分配和释放内存的细节,它提供了一些针对垃圾回收的手动控制方法。这样的好处在于,假设你从 Python 转投 Julia,你依然可以享有 Python 一样的便利。

  • 并行性。只有充分利用机器上可用的全部资源(特别是多核),数学和科学计算领域才能够蓬勃发展。Python 和 Julia 都支持并行运算。但是,在并行计算方面,Julia 的语法比 Python 更简单,这样就降低了并行运算的使用门槛,使其能够得到更广泛的应用。

Python 相比 Julia 的优势

Python 是一种易于学习的通用计算语言,已经发展成为科学计算领域的主力军。Python 之所以能够在数据科学领域占据重要地位,得益于它的下列优势:

  • Julia 数组索引从 1 开始。Julia 的这个特性表面上看问题不大,但是我们不能排除它潜在的风险。在大多数语言中,包括 Python 和 C 语言,数组的第一个元素通常用 0 来访问,例如,string[0] 表示 Python 字符串中的第一个字符。但是 Julia 则使用 1 作为数组中的第一个元素,它这样做的原因是为了迎合一些数学和科学应用(比如Mathematica)的用户。虽然默认情况下 Julia 采用1索引,但是可以通过其他手段(https://docs.julialang.org/en/latest/devdocs/offset-arrays/) 让其支持 0 索引,毕竟用 1 作为第一个元素索引的方式违背程序员的编程习惯。

  • Julia 还很年轻。Julia 语言自2009年以来一直处在开发阶段,并且一路上增减了多种功能。尽管开发者一直宣称开发接近尾声(https://github.com/JuliaLang/julia/milestone/4),但实际上它仍然没有发布1.0版本。

  • Python 拥有更丰富的第三方软件包。Python 数量庞大且实用的第三方软件包是它能够吸引大量开发者的杀手锏。而年轻的 Julia 语言的生态系统稍显薄弱,它使用了很多现有的 C 和 Python 库,但是开发 Julia 自己软件包的任务依然迫在眉睫。

  • Python 具有庞大的社区优势。如果编程语言没有一个强大、活跃的社区支持,那么它的根基是不扎实的。Python 现在正拥有着一个强大的社区。虽然 Julia 的社区发展迅猛,但是和 Python 社区的规模相比依然不值一提。

总结

一个是经过 8 年开发的新秀 Julia,一个是圈内公认的标榜 Python,两种编程语言在数据科学领域各有千秋,综合以上的优劣对比,你会更倾向选择哪种编程语言入门呢?

原文:Julia vs. Python: Julia language rises for data science

链接:https://www.infoworld.com/article/3241107/python/julia-vs-python-julia-language-rises-for-data-science.html

作者:Serdar Yegulalp

译者:安翔

责编:苏宓

大佬 Python 对阵新秀 Julia ,谁能问鼎机器学习和数据科学?相关推荐

  1. python神经网络算法pdf_高清图解:神经网络、机器学习、数据科学一网打尽|附PDF...

    原标题:高清图解:神经网络.机器学习.数据科学一网打尽|附PDF [导读]完全图解人工智能.NLP.机器学习.深度学习.大数据!这份备忘单涵盖了上述领域几乎全部的知识点,并使用信息图.脑图等多种可视化 ...

  2. Python机器学习:数据科学,机器学习和人工智能的主要发展技术趋势概述

    1.介绍 Python因易于学习而广为人知,并且它仍然是数据科学,机器学习和科学计算中使用最广泛的语言.根据最近的一项民意的调查,该调查对1,800多名研究人员分析,数据科学和机器学习偏好的参与者进行 ...

  3. python优秀库_2017年度15个优秀的数据科学领域Python库

    由于近年来Python已经在数据科学领域引起了很大的关注,我想根据最近的经验,为数据科学家和工程师列出一些最有用的库. 由于所有的库都是开源的,我们增加了来自Github的提交,贡献者,计数和其他指标 ...

  4. python熊猫图案_熊猫备忘单–适用于数据科学的Python

    python熊猫图案 Pandas is arguably the most important Python package for data science. Not only does it g ...

  5. python必读十本书籍_机器学习和数据科学必读的10本免费在线电子书和书的详细介绍...

    1. <Python 数据科学手册> 本书介绍了在Python中处理数据所必需的核心库:特别是IPython,NumPy,Pandas,Matplotlib,Scikit-Learn和相关 ...

  6. python主成分对变量的贡献率_(数据科学学习手札20)主成分分析原理推导Python自编函数实现...

    主成分分析(principal component analysis,简称PCA)是一种经典且简单的机器学习算法,其主要目的是用较少的变量去解释原来资料中的大部分变异,期望能将现有的众多相关性很高的变 ...

  7. 聚焦机器学习和数据科学大佬工作的一天

    https://www.toutiao.com/a6709255739346518540/ 作为一个相对较新的职位,机器学习工程师或数据科学家的日子仍然有些不稳定.你可以从Airbnb.SurveyM ...

  8. python scikit_如何将Scikit学习Python库用于数据科学项目

    python scikit 最初于2007年发布的Scikit-learn Python库从头到尾通常用​​于解决机器学习和数据科学问题. 通用库提供整洁,一致,高效的API和详尽的在线文档. 什么是 ...

  9. Python或成Julia语言的最佳备胎

    开场 Python被Julia语言社区"誉"为在数据科学领域中最受欢迎的另一种语言. 曾在某语言社区闻人发玩笑帖:在Romeo(罗密欧)语言出现之前, 大蟒蛇Python应该是Ju ...

最新文章

  1. PNAS-2018-病原菌在植物免疫下的转录组
  2. Exchange Server 2010 灾难恢复
  3. 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)...
  4. UA MATH565C 随机微分方程V Markov Family简介
  5. Spark创建RDD的四种方式(二):从外部存储(文件)创建 RDD代码示例
  6. 国产操作系统发展离不开人才和市场
  7. AVFoundation – AVAsset 加载媒体
  8. ValueError: invalid literal for int() with base 10:Python报错及其解决办法
  9. go rpc安装方法
  10. 项目设计之----命令模式的利用
  11. 超详细陀螺仪MPU6050模块输出姿态角(有完整版源码)
  12. 心随风飞扬,仍存一线牵~
  13. 最新联发科Helio X30(mt6799)芯片处理器详细资料(datasheet)
  14. 图像合成:Multi-scale Image Harmonization
  15. java腰间盘终结者_大枣加大葱竟是腰椎间盘突出的终结者,一用一个好,腰不好不要错过...
  16. c语言埃尔米特插值思路,【数学建模算法】(26)插值和拟合:埃尔米特(Hermite)插值和样条插值...
  17. Canvas 画九宫格图片
  18. 独立性与互不相容的区别
  19. 《出路》电影版看到父母倾尽所有供寒门学子找出路还是那么的艰难
  20. Python实现美国费城Danny`s Wok中餐馆菜单分析

热门文章

  1. 中国四丁基尿素(TBU)市场趋势报告、技术动态创新及市场预测
  2. 如何判断stdin的数据类型
  3. java 类加载的过程
  4. CSDN 技术影响力之星正式揭晓 | 2022 开发者生态汇
  5. 湖南区块链服务网络(BSN)门户运营商确定
  6. 夹缝中的中小开源项目,融资之路该如何走?
  7. 马斯克火箭 SpaceX-API、程序员优雅赚钱项目……GitHub 热点速览
  8. 如何“发现”失联多年好友?代码告诉你!
  9. 面试妥了!2020 爬虫面试题目合集
  10. 干货满满!全面详解如何用递归解题!