(未来10年的编程语言)(10年出现的新编程语言)

mojo一个新的程序设计语言适用于所有的AI开发者。结合了Pvthon的可用性和C的性能,释放了Al硬件无与伦比的可编程性和AI模型的可扩展性。

(未来10年的编程语言)(10年出现的新编程语言)

为什么选择mojo

当我们开始Modular时,我们无意构建一种新的编程语言。但是,当我们构建平台以统一全球的ML / AI基础设施时,我们意识到跨整个堆栈进行编程太复杂了。另外,我们手写了很多MLIR,玩得并不开心。

我们想要的是一种创新且可扩展的编程模型,可以针对加速器和人工智能领域普遍存在的其他异构系统。这意味着编程语言具有强大的编译时元编程、自适应编译技术的集成、整个编译流程的缓存以及现有语言不支持的其他功能。

尽管加速器很重要,但最普遍且有时被忽视的“加速器”之一是主机CPU。如今,CPU拥有许多类似张量核心的加速器块和其他AI加速单元,但它们也可以作为专用加速器无法处理的操作的“后备”,例如数据加载,预处理和后处理以及与外部系统的集成。因此,很明显,我们不能用仅适用于特定处理器的“加速器语言”来提升AI。

应用人工智能系统需要解决所有这些问题,我们认为没有理由不能只用一种语言来完成。因此,Mojo诞生了。

我们决定Mojo的使命将包括编译器内部的创新以及对当前和新兴加速器的支持,但我们认为没有必要在语言语法社区方面进行创新。所以我们选择拥抱Python生态系统,因为它被广泛使用,受到AI生态系统的喜爱,并且因为我们相信它是一种非常好的语言。

1.可用性和可编程性

​功能包括:

渐进式类型

利用类型获得更好的性能和错误检查。

零成本抽象

通过将值内联分配到结构中来控制存储。

所有权+借用检查器

利用内存安全性,避免边缘粗糙。

可移植的参数化算法

利用编译时元编程编写与硬件无关的算法并减少样板文件。

语言集成 自动调整

自动查找参数的最佳值,以利用目标硬件。

以及:

MLIR的全部功能 并行异构运行时快速编译时间

2.性能

利用硬件的全部功能,包括多核、矢量单元和异国情调的加速器单元,以及世界上最先进的编译器和异构运行时。实现与 C++ 和 CUDA 相当的性能,而无需复杂性。

Mojo 作为 Python 家族的一员

Mojo语言有崇高的目标:我们希望与Python生态系统完全兼容,我们需要可预测的低级性能和低级控制,我们需要能够将代码子集部署到加速器。此外,我们不想创建一个碎片化的软件生态系统——我们不希望采用Mojo的Python用户将痛苦的从Python 2迁移到3进行比较。这些目标不小!

幸运的是,虽然Mojo是一个全新的代码库,但我们并没有真正从概念上从头开始。采用 Python 极大地简化了我们的设计工作,因为大多数语法已经指定。相反,我们可以将精力集中在构建Mojo的编译模型和系统编程功能上。我们还受益于从其他语言(如 Rust、Swift、Julia、Zig、Nim 等)中学到的大量经验教训,以及我们之前将开发人员迁移到新编译器和语言的经验,以及我们利用现有的 MLIR 编译器生态系统。

此外,我们决定Mojo的正确长期目标是提供Python的超集(即使Mojo与现有的Python程序兼容),并接受CPython实现以支持长尾生态系统。如果你是一个Python程序员,我们希望Mojo立即熟悉,同时也提供新的工具来开发安全和高性能的系统级代码,否则这些代码需要低于Python的C和C++。

我们并不是要让世界相信“静态是最好的”或“动态是最好的”。相反,我们相信两者都在用于正确的应用程序时是好的,所以我们设计了Mojo,让你,程序员,决定何时使用静态或动态。

(未来10年的编程语言)(10年出现的新编程语言)

有意与 Python 的差异

虽然Python兼容性和可迁移性是Mojo成功的关键,但我们也希望Mojo成为一流的语言(这意味着它是一种独立的语言,而不是依赖于另一种语言)。它不应仅仅为了保持兼容性而限制引入新关键字或语法产品的能力。因此,我们的兼容性方法是双重的:

  1. 我们利用CPython运行所有现有的Python 3代码而不加修改,并使用其运行时,未经修改,与整个生态系统完全兼容。以这种方式运行代码不会从Mojo带来任何好处,但是这个生态系统的存在和可用性将迅速加速Mojo的启动,并利用Python已经非常适合高级编程的事实。
  2. 我们将提供一个机械迁移工具,为想要将代码从 Python 迁移到 Mojo 的人提供非常好的兼容性。例如,为了避免使用与Mojo关键字匹配的标识符名称的Python代码出现迁移错误,Mojo提供了一个反引号功能,允许任何关键字充当标识符。

总之,这使得Mojo可以很好地集成到一个主要是CPython的世界中,但允许Mojo程序员逐步将代码(一次一个模块或文件)移动到Mojo。这是苹果执行的从Objective-C到Swift迁移的行之有效的方法。

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者新元宇宙主所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(未来10年的编程语言)(10年出现的新编程语言)
本文链接:https://www.51qsb.cn/article/m9ch9.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-06-20
下一篇2023-06-20

你可能还想知道

发表回复

登录后才能评论