python和julia_Julia(Julia)和Python(Python):哪个最适合数据科学?

python和julia

在Python涵盖的众多用例中,数据分析可能已成为最大,最重要的。 Python生态系统中装有库,工具和应用程序,这些库,工具和应用程序使科学计算和数据分析的工作变得快捷便捷。

但背后的开发者Julia语言 -在“科学计算,机器学习,数据挖掘,大型线性代数,分布式和并行计算”的具体目标-python并不快还是不够方便。 Julia旨在为科学家和数据分析人员提供不仅快速便捷的开发,而且还提高了执行速度。

Julia是什么语言?

Julia由四个人的团队于2009年创建,并于2012年向公众公开,旨在解决Python和其他语言以及用于科学计算和数据处理的应用程序的缺点。 他们写道:“我们很贪婪。” 他们想要更多:

我们需要一种具有自由许可的开源语言。 我们希望C具有Ruby的动态性。 我们需要一种同调的语言,具有像Lisp这样的真实宏,但又具有类似Matlab这样的显而易见的熟悉的数学符号。 我们想要的东西像Python一样适用于常规编程,像R一样易于统计,像Perl一样对字符串处理很自然,像Matlab一样对线性代数同样强大,并且希望像Shell一样将程序粘合在一起。 简单易学的东西,却让最严肃的黑客高兴。 我们希望它是交互式的,我们希望它是编译的。

(我们提到它应该和C一样快吗?)

以下是Julia实现这些愿望的一些方式:

  • Julia是经过编译的,没有解释。 为了提高运行时性能,使用LLVM编译器框架对Julia进行了实时(JIT)编译。 在最佳状态下,Julia可以接近或匹配C的速度。
  • Julia是互动的。 Julia包含一个REPL(读评估打印循环)或交互式命令行,类似于Python提供的功能。 快速一次性脚本和命令可以直接输入。
  • Julia的语法简单明了。 Julia的语法类似于Python的语法(简洁但又富有表现力)。
  • Julia结合了动态键入和静态键入的优点。 您可以为变量指定类型,例如“无符号32位整数”。 但是,您还可以创建类型的层次结构,以允许一般情况下处理特定类型的变量-例如,编写一个接受整数的函数,而无需指定整数的长度或符号。 如果在特定的上下文中不需要完全输入,甚至可以完全不用输入。
  • Julia可以调用Python,C和Fortran库。 Julia可以直接与用C和Fortran编写的外部库交互。 还可以通过PyCall库与Python代码进行接口,甚至在Python和Julia之间共享数据。
  • Julia支持元编程。 Julia程序可以生成其他Julia程序 ,甚至可以以类似于Lisp之类的方式修改自己的代码。
  • Julia具有功能齐全的调试器。 Julia 1.1引入了调试套件 ,该套件可在本地REPL中执行代码,并允许您单步执行结果,检查变量并在代码中添加断点。 您甚至可以执行细粒度的任务,例如逐步执行由代码生成的函数。

相关视频:Python如何简化编程

Python非常适合IT,可简化从系统自动化到机器学习等前沿领域的许多工作。

Julia vs.Python:Julia语言的优势

Julia从一开始就是为科学和数值计算而设计的。 因此,Julia具有许多对此类用例有利的功能也就不足为奇了:

  • Julia很快。 Julia的JIT编译和类型声明意味着它可以按常规的数量级击败“纯”,未经优化的Python。 Python可以通过外部库的方式进行更快,第三方的JIT编译器(PyPy),并与喜欢用Cython工具的优化,但Julia的设计是门的更快右出。
  • Julia具有数学友好的语法。 Julia的主要目标受众是科学计算语言和环境(例如Matlab,R,Mathematica和Octave)的用户。 Julia的数学运算语法看起来更像是在计算世界之外编写数学公式的方式,这使非程序员更容易理解。
  • Julia具有自动内存管理功能。 像Python一样,Julia不会给用户增加分配和释放内存的负担,它提供了一些手动控制垃圾回收的方法。 这个想法是,如果您切换到Julia,就不会失去Python常见的便利之一。
  • Julia提供了卓越的并行性。 当您可以利用给定机器(尤其是多核)上的全部可用资源时,数学和科学计算会蓬勃发展。 Python和Julia都可以并行运行操作。 但是,Python的并行化操作方法通常要求在线程或节点之间对数据进行序列化和反序列化,而Julia的并行化则更为完善。 此外,Julia的并行化语法不如Python繁重,从而降低了其使用的门槛。
  • Julia正在开发自己的本地机器学习库。 Flux是Julia的机器学习库,其中有许多常用模型的现有模型模式 。 由于它完全是用Julia编写的,因此可以根据用户的需要进行修改,并且它使用Julia的本机即时编译功能从内而外优化项目。

Julia vs.Python:Python的优势

尽管Julia是为数据科学而专门设计的,而Python或多或少地演变成了角色,但Python为数据科学家提供了一些引人注目的优势。 “通用” Python可能是数据科学工作的更好选择的一些原因:

  • Python使用基于零的数组索引。 在大多数语言(包括Python和C)中,数组的第一个元素都以零访问-例如,Python中的string[0]用于字符串中的第一个字符。 Julia将1用作数组中的第一个元素。 这不是一个任意决定; 许多其他数学和科学应用程序(例如Mathematica)都使用1索引,Julia旨在吸引该受众群体。 可以通过实验性功能在Julia中支持零索引,但是默认情况下1-索引可能会妨碍具有根深蒂固的编程习惯的更广泛的读者采用。
  • Python具有较少的启动开销。 Python程序可能比Julia程序慢,但是Python运行时本身更轻巧,并且通常花费更少的时间来启动和交付第一个结果。 同样,尽管JIT编译加快了Julia程序的执行时间,但代价是启动速度较慢。 为了使Julia的启动速度更快,已经做了很多工作,但是Python在这里仍然具有优势。
  • Python很成熟。 Julia语很年轻。 Julia(Julia)仅在2009年才开始开发,并且在此过程中经历了大量的功能改动。 相比之下,Python已经存在了近30年。
  • Python具有更多的第三方软件包。 Python第三方软件包文化的广度和实用性仍然是该语言最大的吸引力之一。 同样,Julia的相对新颖性意味着围绕它的软件文化仍然很小。 使用现有的C和Python库的能力弥补了其中的一些不足,但是Julia需要自己的库才能蓬勃发展。 Flux和Knet之类的库使Julia在机器学习和深度学习中很有用,但绝大多数工作仍由TensorFlow或PyTorch完成。
  • Python有数百万的用户。 如果没有一个庞大,专注且活跃的社区,那么一门语言就一无所有。 Julia周围的社区充满热情并且正在成长,但是它仍然只是Python社区的一小部分。 Python的庞大社区是一个巨大的优势。
  • Python越来越快。 除了获得对Python解释器的改进(包括对多核和并行处理的改进)之外,Python的加速也变得更加容易。 mypyc项目将带有类型注释的Python转换为本机C,远不及Cython笨拙。 它通常会带来四倍的性能提升,并且对于纯数学运算而言通常会带来更多的提升。

翻译自: https://www.infoworld.com/article/3241107/julia-vs-python-which-is-best-for-data-science.html

python和julia

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值