推荐:使用 NSDT场景编辑器 快速搭建3D应用场景
Mojo的主要功能包括:
- 类似Python的语法和动态类型使Python开发人员易于学习Mojo,因为Python是现代AI / ML开发背后的主要编程语言。
- 使用Mojo,您可以导入和使用任何Python库,确保与Python的完全互操作性。
- 它支持实时 (JIT) 和提前 (AOT) 编译。Mojo编译器应用高级优化,甚至GPU / TPU代码生成。
- Mojo 可以完全控制内存布局、并发性和其他低级细节。
- 通过结合动态和系统语言功能,Mojo遵循统一的编程模型,该模型对初学者友好且可扩展,适用于基于加速器的各种用例。
Mojo目前是一种不完整的语言,不向公众开放。该文档面向具有系统编程经验的开发人员。
然而,随着语言的发展,他们打算让它变得更加用户友好,并且初学者程序员更容易访问。
Mojo Lang 入门
Mojo 不是公开的,但您可以通过注册模块化产品来访问 Mojo Playground。注册时,请确保您在模块化产品兴趣中选择Mojo。
图片来自模块化:立即开始
注册后,您将收到一封电子邮件,允许您在一小时内访问Mojo游乐场。Mojo Playground是一个JupyterHub环境,用户可以在其中访问相同的Mojo标准库。但是,用户有一个私有卷来编写和保存他们的 Mojo 程序。
图片来自Mojo Playground
当Mojo开源并公开可用时,您可以从终端运行Mojo程序。它既是解释语言,也是编译语言。
您可以保存文件或 .test.mojo
test.🔥
是的,您可以使用火表情符号保存文件。如您所见,我们创建了一个简单的Mojo文件并在终端中运行它。test.🔥
Mojo Lang和Python
Mojo是Python的超集,其语法与Python几乎相似。它还引入了新功能,如、、、,并定义变量、结构和函数以使其性能更高。let
var
struct
fn
let 和 var 声明
在为 Mojo 编写代码时,您可以使用关键字声明特定变量,这类似于您在 Rust 中声明变量的方式。let
var.
关键字表示变量不可更改,而表示可以修改。这通过在编译时强制实施限制来提高性能。let
var
结构类型
Mojo 使用的关键字类似于 Python 的。Python 中的类是动态且缓慢的,类型更类似于 C/C++ 和 Rust。它们具有在编译时确定的固定内存布局,针对计算机本机性能对其进行优化。struct
class
struct
FN 定义
使用定义函数将创建一个 Python 函数,具有与 Python 相关的所有动态性和灵活性。另一方面,关键字定义了具有更多限制的Mojo函数。这意味着默认情况下参数是不可变的,并且需要显式键入和声明局部变量等。def
fn
语法比较示例
在示例中,我们将创建一个 Mojo 函数,该函数将添加两个参数。
要运行 Mojo 函数,请执行以下操作:
- 必须为函数的参数指定类型。
- 必须使用箭头声明返回类型。
使用 Python 编程时,我们可以选择定义函数而无需显式声明参数和输出类型。它使过程更加动态和直接。但是,相比之下,Mojo的功能比.fn
def
Matplotlib in Mojo
Mojo不仅增强了性能,还使开发人员能够导入任何Python库并将其与Mojo函数集成。通过使用CPython解释器,Mojo无缝支持当前可用的所有Python模块。
在下面的示例中,我们导入并可视化了线图。有关高级示例,请查看Mojo中的Mandelbrot。matplotlib.pyplot
人们普遍认为,Python是AI/ML最流行的语言。 参加机器学习科学家与Python职业轨道将为你提供必要的Python技能,以获得机器学习科学家的工作。
与Mojo Lang一起编程
Mojo是Python的超集,就像TypeScript是JavaScript的超集一样。除了新的关键字和函数,任何Python程序员都可以理解并使用它构建程序。
在这一部分中,我们将介绍使其高性能和安全的Mojo编程功能。
低级编程
Mojo 是一种高级编程语言,它通过 MLIR(多级中间表示)提供对低级基元的访问,这是一种可扩展的中间表示格式。这使得Mojo程序员能够实现零成本抽象,同时仍然利用强大的编译器优化。
切片优化和自动调谐
Mojo 有一个内置的平铺优化工具,通过将计算划分为适合快速缓存内存的较小平铺来改善缓存局部性和内存访问模式。
Mojo中的自动调谐模块提供了用于自适应编译的接口。它通过自动调整代码来帮助您找到目标硬件的最佳参数。
所有权和借款
Mojo使用所有权和借用系统来管理内存,无需垃圾收集器并确保一致的运行时性能。Mojo的编译器通过静态分析分析变量生存期,并在不再使用数据时立即释放数据。
手动内存管理
Mojo 还提供了一个使用类似于 C++ 和 Rust 的指针的手动管理系统。
魔术中的矩阵乘法
在矩阵乘法示例中,我们观察到将Python代码导入Mojo导致性能提高了17.5倍。
通过在 Python 实现中引入类型,性能进一步提高了 1866.8 倍。
此外,他们还利用矢量化、并行化、平铺和自动调谐等技术实现了 14050.5 倍的性能提升。这太棒了。即使是 Julia 和 Rust 也无法提供这种级别的优化。
魔郎代码示例
在这个汽车示例中,我们将创建一个使用 Mojo 语法的类。CAR
- 我们将使用 创建一个类。
CAR
struct
- 使用 启动突变变量。
var
- 设置变量类型。“速度”是 Float32,“模型”是字符串。字符串不是内置类型,因此我们必须导入它。
- 我们将创建两个类似于 Python 但使用该函数的初始化函数。一个只有车速,另一个只有车速和车型。
fn
- 之后,使用 300 速度创建一个对象。
CAR
- 打印汽车模型。
正如你可能观察到的,Mojo的编程风格和功能与Python相似。它作为Python的扩展,增强了其性能和内存管理功能。借助 Mojo,您可以快速训练模型,实现更快的模型推理(即使使用 CPU),在几秒钟内分析海量数据集,并实时模拟。
您可以查看模块化文档上的所有代码示例,并在操场上的Jupyter笔记本上运行它们。
Mojo会取代Python吗?
目前,由于Mojo的早期开发阶段和缺乏必要的功能,很难确定Mojo作为通用编程语言的潜力。但是,它可能有能力在高性能至关重要的机器学习和AI应用程序中超越Python。
尽管如此,Mojo不太可能很快完全取代Python在数据科学和其他软件开发领域的领导地位。
Mojo 专为机器学习应用程序而设计,不适用于其他领域,例如 Web 后端、流程自动化或 Web 设计。虽然开发人员将来可能会扩展其功能,但Mojo目前的重点是针对机器学习应用程序进行优化。
此外,值得注意的是,与Python相比,Mojo的模块和库选择有限,Python受益于庞大的开发人员社区不断为AI和数据科学创建新的和改进的工具。Mojo可能需要数年时间才能赶上Python的发展水平。
通过参加 DataCamp 的生成式 AI 概念课程,了解如何开发生成 AI 模型以及它们将如何影响社会向前发展。
结论
总之,虽然Mojo作为一种为AI / ML量身定制的快速,与Python兼容的语言显示出前景,但它不太可能在不久的将来完全取代Python。Python 受益于庞大的生态系统、社区以及数据科学和 ML 领域的根深蒂固。充其量,Mojo可能会成为Python的补充语言,用于速度至关重要的地方。
原文链接:Mojo语言:AI的新编程语言 (mvrlink.com)