未来明星语言 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

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型: