未来明星语言 Julia 将成 Python 劲敌

2023-10-24 13:58

本文主要是介绍未来明星语言 Julia 将成 Python 劲敌,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

去年今日,MIT Julia Lab 推出了 Julia 1.0 版。一年来,它的表现如何?

据 MIT 报道,截至 2018 年底,Julia 的下载量超过 300 万,并在超过 1500 所大学中用于科学和数值计算。根据 2019 年 8 月 TIOBE 编程语言指数,Julia 从 7 月的第 50 名升至第 39 名,在众多语言中上升幅度显著。今年 7 月,在将 Python 解释器移植到 Firefox 之后,Mozilla 出资将 Julia 引入 Firefox 和一般浏览器……

最近,Julia 开发团队对来自 90 多个国家的 1844 名 Julia 用户和开发人员进行了调查,结果显示,93% 的受访者喜爱 Julia,Python、C 排名第二、三位,分别获得 61% 和 27% 的投票率。这份完整的调查报告在今年7 月底的JuliaCon 上发布。在此次会议上,开发者还宣布将发布一个全新的Julia 线程接口—— 受到 Cilk 、 Intel Threading Building Blocks (TBB) 以及 Go 等启发的通用任务并行机制。看起来,Julia 的进化正在稳步有序地进行着。

Julia 会是编程语言中的“黑马”吗?你是否已经准备好学习这门崛起中的新语言了呢?

Julia 是什么?
Julia 诞生于 MIT 计算机科学与人工智能实验室 (CSAIL) 和数学系,由 Jeff Bezanson 博士、前 MIT Julia Lab 研究员 Stefan Karpinski、Viral B. Shah 和数学系教授 Alan Edelman 于 2009 年创建,并于 2012 年公开发布。开发者在 2012 年 2 月的博客中写道,

“我们想要的是一种自由开源的语言,它同时拥有 C 的速度和 Ruby 的动态性;我们想要一个具有同像性(可以将语言的脚本本身当作数据进行处理)的语言, 它有着真正的和 Lisp 一样的宏,但却像 MATLAB 一样有着显著的,类似于数学表达式的标记;我们想要一个可以像 Python 一样作为通用编程语言的工具, 像 R 那样适用于统计分析,像 Perl 那样自然地处理字符串,像 MATLAB 那样给力地处理矩阵运算,它还要能像 Shell 一样作为胶水将各种程序粘合在一起;我们想要一个简单易学的语言,同时还能让最苛刻的黑客们开心。我们希望它是交互式的,但我们也希望它能被编译。”

Julia 是一门灵活的动态语言,适用于科学计算和数值计算,其性能可与传统的静态类型语言媲美。它具有如下特点:

快速:Julia 一开始就是为高性能而设计的。Julia 可以通过 LLVM 而跨平台被编译成高效的本地代码。
通用:Julia 使用多重派发作为编程范式,使其更容易表达面向对象和函数式编程范式。标准库提供了异步 I/O、进程控制、日志记录、性能分析、包管理器等等。
动态:Julia 是动态类型的,与脚本语言类似,并且对交互式使用具有很好的支持。
数值计算:Julia 擅长于数值计算,它的语法适用于数学计算,支持多种数值类型,并且支持并行计算。Julia 的多分派自然适合于定义数值和类数组的数据类型。
可选的类型标注:Julia 拥有丰富的数据类型描述,类型声明可以使得程序更加可读和健壮。
可组合:Julia 的包可以很自然的组合运行。单位数量的矩阵或数据表一列中的货币和颜色可以一起组合使用并且拥有良好的性能。
2018 年 12 月,Julia 的三位联合开发者 Bezanson、Karpinski 和 Shah 获得 2019 年 James H.Wilkinson 数字软件奖。根据选拔委员会的一份声明,“Julia 允许研究人员以直观的语法编写高级代码,并以生产编程语言的速度生成代码。它已被科学计算界广泛采用,包括天文学、经济学、深度学习、能源优化和医学等应用领域。尤为特别的是,美国联邦航空管理局选择 Julia 作为下一代机载防撞系统的语言。”

在 GitHub 上有 Julia 应用于计算生物学、统计学、机器学习、图像处理、微分方程和物理学等领域的小组。根据最新调查报告,目前,Julia 的主要应用领域包括统计学与数据科学、工程学、机器学习、计算机科学、物理学、数学、人工智能、信号与图像处理等。73% 的用户使用 Julia 从事科研工作,54% 的用户将其用于个人工作,16% 的用户将其用于教学。

与 Python 的区别
Julia 需要用 end 来结束代码块。与 Python 不同,Julia 没有 pass 关键字。
在 Julia 中,数组、字符串等的索引从 1 开始,而不是从 0 开始。
Julia 的切片索引包含最后一个元素,这与 Python 不同。Julia 中的 a[2:3] 就是 Python 中的 a[1:3]。
Julia 不支持负数索引。特别地,列表或数组的最后一个元素在 Julia 中使用 end 索引,而不像在 Python 中使用 -1。
Julia 的 for、if、while 等代码块由 end 关键字终止。缩进级别并不像在 Python 中那么重要。
Julia 没有用来续行的语法:如果在行的末尾,到目前为止的输入是一个完整的表达式,则认为已经结束;否则,认为输入继续。强制表达式继续的一种方式是将其包含在括号中。
默认情况下,Julia 数组是列优先的(Fortran 顺序),而 NumPy 数组是行优先(C 顺序)。为了在循环数组时获得最佳性能,循环顺序应该在 Julia 中相对于 NumPy 反转(请参阅 Performance Tips 中的对应章节)。
Julia 的更新运算符(例如 +=,-=,···)是 not in-place,而 Numpy 的是。这意味着 A = [1, 1]; B = A; B += [3, 3] 不会改变 A 中的值,而将名称 B 重新绑定到右侧表达式 B = B + 3 的结果,这是一个新的数组。对于 in-place 操作,使用 B .+= 3(另请参阅 dot operators )、显式的循环或者 InplaceOps.jl。
每次调用方法时,Julia 都会计算函数参数的默认值,不像在 Python 中,默认值只会在函数定义时被计算一次。例如,每次无输入参数调用时,函数 f(x=rand()) = x 都返回一个新的随机数在另一方面,函数 g(x=[1,2]) = push!(x,3) 在每次以 g() 调用时返回 [1,2,3]。
在 Julia 中,% 是余数运算符,而在 Python 中是模运算符。
与 MATLAB、R、C/C++ 的区别详见文档。

为什么用 Julia?
Julia 最受欢迎的技术特征包括快速和高性能、易于使用、开源、多重派发以及解决了两种语言问题;最受欢迎的非技术特征包括自由、社区开发者富有才华且活跃、易于创建包以及采用 MIT 许可证。

Julia 最大的技术问题在于包并不像所需的那样成熟或维护良好、生成第一个图需要很长时间;最大的非技术问题在于同事、公司或合作者使用其他语言,在用户所在的领域 / 行业中,没有足够的 Julia 用户。

据外媒 ZDNet 此前发布的数据,Julia 的 GitHub Star 数在过去一年翻了一番,该语言还被 1000 多种学术出版物引用。

关于”为什么你会使用 Julia“的问题,52% 的受访者表示,Julia 似乎是未来的语言,43% 的人认为,它能使工作速度更快。

你是否已经准备好学习这门新语言了吗?

这篇关于未来明星语言 Julia 将成 Python 劲敌的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275633

相关文章

如何将Python彻底卸载的三种方法

《如何将Python彻底卸载的三种方法》通常我们在一些软件的使用上有碰壁,第一反应就是卸载重装,所以有小伙伴就问我Python怎么卸载才能彻底卸载干净,今天这篇文章,小编就来教大家如何彻底卸载Pyth... 目录软件卸载①方法:②方法:③方法:清理相关文件夹软件卸载①方法:首先,在安装python时,下

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python中局部变量和全局变量举例详解

《Python中局部变量和全局变量举例详解》:本文主要介绍如何通过一个简单的Python代码示例来解释命名空间和作用域的概念,它详细说明了内置名称、全局名称、局部名称以及它们之间的查找顺序,文中通... 目录引入例子拆解源码运行结果如下图代码解析 python3命名空间和作用域命名空间命名空间查找顺序命名空

Python如何将大TXT文件分割成4KB小文件

《Python如何将大TXT文件分割成4KB小文件》处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这... 目录为什么需要分割TXT文件基础版:按行分割进阶版:精确控制文件大小完美解决方案:支持UTF-8编码

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

Python中的魔术方法__new__详解

《Python中的魔术方法__new__详解》:本文主要介绍Python中的魔术方法__new__的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、核心意义与机制1.1 构造过程原理1.2 与 __init__ 对比二、核心功能解析2.1 核心能力2.2

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行