未来明星语言 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和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以