Julia和Python:哪个最适宜机器学习和数据科学?( 二 )

  • Julia有自动的内存管理功能 。 与Python一样 , Julia不会让用户负担分配和释放内存的细节 , 而且它提供了一些对垃圾收集的手动控制措施 。 其思想是 , 如果您切换到Julia , 您不会失去Python的一个常见便利 。
  • Julia提供了优越的并行性 。 当您可以利用给定机器(特别是多核)上的全部可用资源时 , 数学和科学计算将更能蓬勃发展 。 Python和Julia都可以并行运行操作 。 然而 , Python用于并行化操作的方法通常需要在线程或节点之间序列化和反序列化数据(甚至常要借助第三方库) , 而Julia的并行化更加精细 。 此外 , Julia的并行化语法没有Python的那么头重脚轻 , 降低了使用它的门槛 。
  • Julia正在开发自己的原生机器学习库 。 Flux是一个面向Julia的机器学习库 , 它有许多针对常见用例的现有模型模式 。 因为它完全是用Julia编写的 , 所以用户可以根据需要修改它 , 并且它使用Julia的原生即时编译来从内到外优化项目 。
  • 3.Julia和Python: Python的优势尽管Julia是专门为数据科学而构建的 , 而Python或多或少地充当了这个角色 , 但Python为数据科学家提供了一些引人注目的优势 。 由于一些“通用目的”原因,Python可能是数据科学工作的更好的选择:
    • Python使用从零开始的数组索引 。 在大多数语言中 , 包括Python和C语言 , 数组的第一个元素是用0 访问的- 例如在Python中 , string[0]表示字符串中的第一个字符 。 Julia对数组中的第一个元素使用1 。 这不是一个武断的决定 , 而许多其他的数学和科学应用程序 , 比如Mathematica , 也从1开始索引 , 而Julia就是为了吸引这些用户 。 在Julia中可以通过一个实验性的特性来支持0索引 , 但是默认情况下从1开始的索引可能会阻碍那些具有根深蒂固编程习惯的更通用的用户的采用 。
    • Python的启动开销更少 。 Python程序可能比Julia程序慢 , 但是Python运行时本身更轻量 , 通常Python程序启动和交付第一个结果所需的时间更短 。 而且 , 虽然JIT编译加快了Julia程序的执行时间 , 但它的代价是较慢的启动速度 。 为了加快Julia的启动速度 , 我们做了很多工作 , 但是Python在这方面仍然有优势 。
    • Python是很成熟 。 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那么笨重 。 它通常会产生四倍的性能改进 , 对于纯粹的数学运算 , 性能改进通常会更多 。

    Julia和Python:哪个最适宜机器学习和数据科学?文章插图
    4.小结【Julia和Python:哪个最适宜机器学习和数据科学?】通过对比介绍 , 两种用于科学技术和机器学习的语言 , 各有优势 , 相对而言Python生成级生态更胜一筹 , 主要得益于30多年的发展和生态区的完善 。 而Julia具有足够多的Python既有特性 , 只是相对年轻 , 而且社区和生态还有待进一步发展 , 前途不可限量 。 若有一定的研发能力 , 可提早切入进行Julia的技术准备 。