您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > 百科

吊打Python!Mojo语言首探!

时间:2023-06-09 13:23:26  来源:51CTO  作者:

作者 | Serdar Yegulalp

策划 | 云昭

Mojo很狂!它的目标非常有野心:“与Python/ target=_blank class=infotextkey>Python一样易于使用,但与Rust一样强大和快速。”

新推出的Mojo语言,被宣传为多个领域中最好的:Python的易用性和清晰的语法,以及Rust的速度和内存安全。这些多少有些夸大其词。由于Mojo仍处于开发的早期阶段,用户还需要一段时间才能亲眼看到这种语言是如何达到他们的要求的。

Mojo的创建者,一家名为Modular的公司,提供了一个早期的在线运行环境:一个Jupyter Notebook环境,用户可以在这里运行Mojo代码并了解该语言的功能和行为。

因为Mojo还没有作为最终用户下载,所以我们首先关注的是Mojo作为一种语言是什么样子的。我们将研究它与Python的相似之处,它的不同之处,以及它能为熟悉Python或其他语言的程序员提供什么。

1、Mojo:Python的超集

Mojo可以被描述为Python的“超集”。用Python编写的程序是有效的Mojo程序,尽管有些Python行为尚未实现。目前在Python中找不到的Python行为的一些示例包括,函数的关键字参数、global关键字以及list和dict理解。也可以使用实际的Python运行时来处理现有的Python模块,尽管这会带来性能成本。

当Mojo引入新语法时,它用于系统级编程功能,主要是手动内存处理。换句话说,可以为随意的用例编写Python代码(或几乎完全类似的代码),然后将Mojo用于更高级、性能密集型的编程场景。在这两种情况下,都可以利用现有的Python库,但性能成本更高。

Mojo与Python的另一大区别是,Mojo不像Python那样通过运行时进行解释。Mojo是提前编译的,使用LLVM工具链来加工本地代码。为此,最好的性能来自于使用Mojo特有的功能。Python功能很可能是以模仿Python的动态行为为代价的,这些动态行为本质上很慢,或者仅仅通过使用Python运行时来实现。

2、Mojo vs. Python 语法

Mojo的许多母语特征有两个作用。它们要么是Python中根本没有的全新功能,要么是Python功能的扩展,使其更具性能,尽管Python的动态性较低。

Mojo的许多母语特征有两个作用。它们要么是Python中根本没有的全新功能,要么是Python功能的扩展,使其更具性能(尽管Python的动态性较低)。

例如,在Python中,没有办法在运行时正式声明变量引用不可变,尽管类型提示和其他机制可以在编辑时模仿这一点。在Mojo中,则可以使用关键字let和var来声明Mojo特定的变量,这与在Rust中使用的方法非常相似。let关键字表示变量是不可变的;var表示它是可变的。这些限制是在编译时强制执行的,所以试图变异不可变引用的程序甚至不会编译。

图片

Mojo的语法与Python非常相似,但提供了新的关键字来启用Mojo特定的功能,如可变行为。

Mojo还有自己的struct关键字,与Python的class形成对比。类只是Python类,具有所期望的所有动态行为。不过,struct类型更像它们的C/C++和Rust对应类型,在编译时确定了固定的布局,但针对机器本机速度进行了优化。另一个旨在区分Mojo的行为和Python的行为的Mojo关键字是fn。如果你使用def来定义一个函数,那么就会得到了一个Python函数,以及与这些函数相关联的所有动态。fn关键字也定义了一个函数,但定义为Mojo函数。这意味着参数在默认情况下是不可变的,并且必须显式类型化,并且必须声明所有局部变量(除其他外)。

3、Modular Playground

如果想知道用Mojo有多爽,现在还需要取号排队。Modular通过Modular Playground提供了对Mojo的早期访问,这是一个基于网络的Jupyter Notebook环境,运行在Modular的服务器上。目前,Mojo还没有可在自己的系统上下载的运行时。从好的方面来说,这意味着你可以通过任何带有网络浏览器的计算机运行Mojo。

Mojo在线环境附带了一些notebook示例,以及关于在某些任务中使用Mojo的详细内联注释。其中一个例子是一个常见的程序员演示,绘制了Mandelbrot集算法。乍一看,代码与Python非常相似。即使是新的特定于Mojo的关键字也能很好地与现有的Python语法集成,因此可以仔细查看代码并大致了解发生了什么。

图片

Mojo游乐场在行动,运行Mandelbrot情节演示。用于生成此演示的代码是本地Mojo代码和Python库的混合,通过Mojo的Python运行时接口调用。

notebook 演示还举例说明了如何通过并行、向量化和“平铺”(增加操作的缓存位置)来加速Mojo代码。其中一个演示是128x128矩阵乘法演示,通过简单地按原样运行而无需特别修改,它的速度据称是Python的17倍(使用Mojo游乐场中的Python运行时)。

Mojo通过添加类型注释增加了1866x的加速,通过添加矢量化操作增加了8500x的加速和通过添加并行化增加了15000x的加速。

同样,验证这些声明的最佳方法是让Mojo在本地可用,但值得在同一代码中同时试验Python运行时和Mojo编译器,看看会发生什么。

4、Mojo能取代Python吗?

Mojo的第一次公开演讲就证明了它是数据科学和机器学习的一种语言。这两个主题构成了Python现代用例的很大一部分,这并不是因为Python本身很快,而是因为它为难以使用的快速事物提供了一个方便的编程接口。

Mojo显然是为了提供该用例的默认快速版本,在该版本中,不必通过外部库来快速实现。Mojo的目标不是Python更广泛的用例集:web后端、流程自动化等等,至少在早期不是这样。这可能会在Mojo更完整、拥有更好的第三方库时出现,但这显然不是首要任务。

即使默认情况下Mojo更快,也很难取代Python在机器学习和数据科学中的地位。Python的用户社区、现有的软件文化和便利性都使其成为这些领域的支柱。Mojo必须做的不仅仅是快速地取代Python来完成这项工作。尽管如此,看看Mojo如何继续沿着其Python兼容和快速用例的路径,进行开发还是很有趣的。



Tags:Mojo   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
AI 编程语言 Mojo 登陆 Mac 平台
10 月 20 日消息,Mojo 编程语言近日登陆 Mac 平台,为 AI 开发人员带来类似于 Python 的编程体验。Mojo 编程语言的开发工作由 Chris Lattner 领导,他同时也是苹果 Swift 编程语...【详细内容】
2023-11-20  Search: Mojo  点击:(142)  评论:(0)  加入收藏
llama2.mojo比llama2.c快20%,最年轻的语言Mojo惊艳开发者社区
机器之心报道编辑:梓文你听说过 Mojo 的「传奇色彩」吗?如果说 Python 是最流行的语言,C 语言是最经典的语言,那么 Mojo 也有它的之最 —— 最年轻。Mojo 能够与 Pyth...【详细内容】
2023-09-13  Search: Mojo  点击:(235)  评论:(0)  加入收藏
比C语言还快20%!Mojo首个大模型开放下载,性能达Python版250倍
明敏 发自 凹非寺量子位 公众号 | QbitAI专为AI而来的新语言Mojo,推理LLaMA2性能比Python提升250倍!比C语言也要快上20%。上周五才开放下载,Mojo这么快就自证实力了。要知道,之...【详细内容】
2023-09-13  Search: Mojo  点击:(363)  评论:(0)  加入收藏
吊打Python!Mojo语言首探!
作者 | Serdar Yegulalp策划 | 云昭Mojo很狂!它的目标非常有野心:“与Python一样易于使用,但与Rust一样强大和快速。”新推出的Mojo语言,被宣传为多个领域中最好的:Python的易用...【详细内容】
2023-06-09  Search: Mojo  点击:(254)  评论:(0)  加入收藏
Mojo比Python快35000倍?这门新语言想搞个大新闻!
撰稿丨千山 在AI 领域,Python无疑是最流行的编程语言。而且从近年的TIOBE排行榜来看,这种地位一时还很难撼动。不过在编程语言界,后浪总是层出不穷,不停地向前浪发起冲击。 最近...【详细内容】
2023-05-15  Search: Mojo  点击:(388)  评论:(0)  加入收藏
编译器大神 Chris Lattner 官宣新编程语言:Mojo,比 Python 快 35000 倍!
整理 | 王子彧 责编 | 张红月出品 | CSDN(ID:CSDNnews)说起 Chris Lattner,大家一定不陌生。这位编译器大神,曾经领导了众多大型技术项目。他不仅是 LLVM 项目的主要发起人,还是 C...【详细内容】
2023-05-04  Search: Mojo  点击:(283)  评论:(0)  加入收藏
▌简易百科推荐
用于人工智能开发的主流编程语言都有哪些?
在人工智能开发领域,编程语言的选择至关重要。目前,主流的编程语言主要包括Python、Java、C++、JavaScript和Swift等。这些语言各具特色,适用于不同的人工智能开发场景。首先,Py...【详细内容】
2024-01-31    简易百科  Tags:编程语言   点击:(131)  评论:(0)  加入收藏
探究微处理器开发中的汇编语言的优势与挑战
在计算机编程中,汇编语言是一种低级语言,它可以直接控制计算机的硬件资源。与高级语言相比,汇编语言具有更高的运行效率和更好的控制能力,但同时也更加复杂和难以理解和维护。在...【详细内容】
2023-12-19  松鼠宝贝    Tags:汇编语言   点击:(99)  评论:(0)  加入收藏
选择适合微服务的编程语言,让你的工作事半功倍!
讨论编程语言就像是一场政治辩论。每个开发者都会过分捍卫他/她所使用的编程语言。然而,编程语言应该被看作是它们真正是的东西,即一种工作工具。每种编程语言都有特定的目的...【详细内容】
2023-12-14  爱发白日梦的后端  微信公众号  Tags:编程语言   点击:(178)  评论:(0)  加入收藏
编程语言大比拼:Python、Java、C、C++、Go 实现 'Hello World' 和九九乘法表"
应该90%的IT专业的朋友写的第一段代码就是打印"holle world",每个大学老师都会通过这个方式吸引你对课程产生兴趣。也许有的朋友学的是JAVA开发,有的学的是c,在几年前应该很...【详细内容】
2023-12-11  IT仔的笔记本  微信公众号  Tags:编程语言   点击:(216)  评论:(0)  加入收藏
TypeScript中的null和undefined的区别
在TypeScript中,null和undefined是两个特殊的值,用于表示变量的缺失或未定义。尽管它们在某些情况下可能看起来相似,并且都可以表示"没有值",但它们在语义和用法上存在一些重要...【详细内容】
2023-12-07  科学随想录  微信公众号  Tags:TypeScript   点击:(135)  评论:(0)  加入收藏
面向AI开发的六种最重要的编程语言
作者丨FATIH KÜÇÜKKARAKURT 译者 | 布加迪审校 | 重楼出品 | 51CTO技术栈(微信号:blog51cto)在AI开发界,你使用的编程语言很重要。每种语言有其独特...【详细内容】
2023-12-07    51CTO  Tags:编程语言   点击:(121)  评论:(0)  加入收藏
NLP问题实战:基于LSTM(RNN)和Transformer模型
译者 | 朱先忠审校 | 重楼简介GPT等语言模型最近变得非常流行,并被应用于各种文本生成任务,例如在ChatGPT或其他会话人工智能系统中。通常,这些语言模型规模巨大,经常使用超过数...【详细内容】
2023-11-29    51CTO  Tags:NLP   点击:(273)  评论:(0)  加入收藏
一文了解低级和高级编程语言
中文是一种尽量用简短文字表达更多含义的语言,所以很多时候一句话的含义很容易曲解成别的意思。最近,有人提出C语言是一种中级语言的概念,所以特意介绍一下低级语言和高级语言...【详细内容】
2023-11-23  数字随行  微信公众号  Tags:编程语言   点击:(232)  评论:(0)  加入收藏
JetBrains 发布 2023 调研报告:77% 开发者使用 ChatGPT
IT之家 11 月 21 日消息,JetBrains 日前公布了《2023 开发人员生态系统现状》调研报告,汇集了来自全球 26,348 位开发者的调研结果。《开发者生态系统现状报告》涵盖广泛的主...【详细内容】
2023-11-21    IT之家  Tags:JetBrains   点击:(238)  评论:(0)  加入收藏
Go vs Rust:文件上传性能比较
一、设置所有测试都在配备16G内存的 MacBook Pro M1 上执行。软件版本为: Go v1.20.5 Rust v1.70.0测试工具是一个基于 libcurl 并使用标准线程的自定义工具,能够发送多部分请...【详细内容】
2023-11-20  技术的游戏  微信公众号  Tags:Rust   点击:(174)  评论:(0)  加入收藏
站内最新
站内热门
站内头条