Mojo编程语言简介
2023年07月20日 由 Susan 发表
929806
0
Mojo是一种新提出的编程语言,它将Python的简单性与Rust的速度和内存安全性相结合它还处于早期开发阶段,为用户提供了一个在线使用平台,以探索其功能。Mojo旨在在数据科学和机器学习方面具备卓越性能,为Python提供了一个快速的替代方案。逐步计划将其开放源代码。
由Chris Lattner创建的Mojo为人工智能程序员提供了可编程性和可扩展性,使其能够在人工智能硬件上进行高效编程。与Python相比,Mojo显示出了显著的速度提升,使其比PyPy快22倍,比Scalar C++快5000倍。它通过使用多级中间表示(MLIR)在不引入复杂性的情况下实现硬件类型的无缝扩展。Mojo使用LLVM工具链将其编译成机器码,通过使用Mojo特定功能提供更好的性能。另一方面,Python依赖于运行时解释。
Mojo引入了新的语言特性,可以分为两类。一类是Python中完全不存在的全新元素,而另一类是现有Python特性,但降低了其动态性。例如,Mojo允许使用诸如let和var之类的关键字声明变量,指示它们是不可变还是可变的。这些限制在编译期间进行强制执行,防止对不可变引用进行任何修改尝试。
此外,Mojo使用了struct关键字(与Python的class不同)来定义具有固定布局的类型,经过优化以达到本地机器速度,类似于C/C++和Rust的对应物。Mojo中另一个与众不同的关键字是fn,用于定义函数。Mojo函数默认情况下使用不可变参数,并要求显式类型指定以及局部变量声明。这些语言特性使Mojo在与Python相比具有独特的特征。
为了体验使用Mojo,用户可以访问Modular Playground,这是一个基于Web的Jupyter Notebook环境,可以提前访问。Mojo目前尚没有可下载的运行时环境,但这使得Mojo可以在任何具有浏览器的计算机上运行。该环境提供了带有详细注释的示例笔记本。
社区对该语言的发展感到好奇。人们对此持有积极的意见。Jeremy Howard在Twitter上分享了他的观点:
“一个Mojo应用程序可以编译成小巧、独立、启动快速的二进制文件。这是一个改变游戏规则的行动!想想如果你可以快速、轻松地创建小巧的快速工具,并将它们以单个文件的形式分发,你可以做些什么。”
克里斯·拉特纳(Chris Lattner)在莱克斯·弗里德曼(Lex Friedman)的播客中表示,创建Mojo的灵感来自于使机器学习及其基础设施对非专家更加可访问和易于理解。这导致开发了一种用户友好的语法的编程语言,使研究人员和不熟悉 GPS 等高级技术的人能够有效地使用机器学习。
来源:https://www.infoq.com/news/2023/07/mojo-programming-language/