正式发布! 能否与之匹敌 Rust Mojo

正式发布! 能否与之匹敌 Rust Mojo

9 月 7 日,Modular 公司宣布正式发布 Mojo:Mojo 现在已经开放本地下载——初步登陆 Linux 系统,并将很快提供 Mac 与 Windows 版本。据介绍,Mojo 最初的目标是比 Python 快 35000 倍,近日该团队表示,Mojo 将动态与静态语言的优点结合起来,一举将性能提升达 Python 的 68000 倍。那么未来的人工智能的语言,是 Rust 还是 Mojo ?张汉东从 Rust 和 Mojo 语言的特性、生态和其在 LLM 大模型时代的角色进行了剖析。

编程语言是推动时代齿轮的抓手

我从 2006 年入软件行业,截止今年我的职业生涯已经走过十七个年头。

这十七年我虽然没有什么光彩履历,但却很幸运,我还能在这个行业坚守,并能不断成长。同样很幸运,我经历了桌面软件没落, Web 2.0 崛起,以及移动互联网的兴盛,当下基础设施系统软件开始复兴的诸多历程。

这么多年我思考最多的两个问题就是:

这两个问题的答案,取决于你如何看待编程语言。

在社区经常会听到一句话:“编程语言就是工具”。编程语言确实是工具,用于谋生的工具,用于编写软件的工具。在我看来,编程语言不仅仅是工具,更是思想的集合时代的缩影。编程语言的发展跟随计算机的发展一路走来,其中蕴含着推动时代变革的解决不同问题的思想。

编程语言背后都有共同的东西,比如计算机基础和其他领域知识。这些是可以在不同语言之间迁移的知识,只需要学一遍。但是编程语言的设计思想却是不同的,这就是编程语言吸引人的地方之一。就像同样都叫威士忌,可能会有不同的味道。

编程语言如何设计,一般都和它想要解决的问题有关。而它想解决的问题,通常都与语言创造者所处的时代和眼界有关。

C 语言的诞生,是为了解决操作系统快速交付的难题,背后是 70 年代操作系统的发展;Cpp 语言的诞生,是为了给 C 语言引入面向对象,提升开发效率,背后是 80 年代工业软件快速增长需求;Python / Java 语言的诞生,是为了让开发者专注于业务而非语言细节,背后是 90 年代日益增长的 Web 开发需求。

随着互联网的高速发展,2010 年编程语言领域迎来一个拐点,Rust 语言之父 Graydon 认为未来互联网应该是安全和性能并重,所以他集过去四十年众语言优势为一体,创造了 Rust 语言。到了 2022 年, Mojo 语言作者 Chris 认为 AI 基础设施生态的碎片化已经阻碍了 AI 的发展,所以他创造 Mojo 语言,想一统 AI 生态,解决碎片化问题,实现 All in One 理想。

回顾历史,我们看得出来。时代在不断变化,编程语言是推动时代齿轮的抓手。当新的时代到来时,有些语言是必须要学习的。让我们从 Rust 和 Mojo 语言的特性、生态和其在 LLM 大模型时代的角色来探索这两门语言的未来。

Rust vs Mojo :雄心与现状

Rust 语言

语言之父 Graydon 带着内存安全和性能并重的设计初衷于 2009 年创立了 Rust 语言,幸运的是,这颗种子是种在了 Mozilla 这片开放的土壤中,在 2015 年结出了开放的花朵。

Rust 语言并不是要百分百地解决内存安全问题,而是消除过去五十年导致系统编程语言中 70% 安全 Bug 中的内存安全问题:

为了达成此目标,语言设计需要在六个原则中进行权衡:

Rust 语言是在这些原则中权衡的结果,客观情况无法做到同时满足这六大原则。所以,导致的问题就是学习曲线较其他语言更高,对学习和使用者的基础有一定的要求。

因为 Rust 语言面对的这个问题领域本身就非常复杂。从 Rust 语言架构层面来看,Rust 语言为了解决内存安全和高性能并重的问题,给出的方案其实非常简洁。

首先,Rust 语言是一门编译语言。Rustc 是其编译前端,在编译过程中,通过精心设计的类型系统,通过对代码中类型的检查,来实现对内存安全进行管理,以及更好地优化代码。编译后端包括 LLVM 和 Cranelift,以及正在支持的 GCC 后端和 SPIR-V GPU IR。

其次,在类型系统之上,Rust 语言也提供了更高级的抽象范式,支持面向对象风格和函数式编程风格,甚至可以直接向写 C 那样遵循过程式范式。并且引入了很多现代化语言特性,比如 trait 和 enum ,允许开发者易于编写出更具可扩展性的系统。

从 2015 年 Rust 1.0 稳定版发布到写本文之时 (2023 年 9 月),Rust 已经发布了 72 个语义化版本,三个 Edition 版次(每三年发布一次的大版本)。在 Stackoverflow 的年度调研报告中,Rust 连续八年收获最受欢迎语言称号。

一门语言最重要的就是其生态。截止目前,crates.io 上面 crate 数量已经超 12 万,下载量已达到 393 亿次。虽然,Rust 学习曲线较高,但也没有阻碍生态的发展。

并且其生态从 2020 年起,每年下载量以 1.7 倍速度增长。

并且其生态基本能覆盖到 C/Cpp/Java/Go 等语言的应用领域。

截止今年,Rust 语言已经证明了其在系统编程领域的优势。曾经流行的 Rewrite it in Rust 梗,已经变为了现实,目前能用 Rust 重写的基本都已经用 Rust 重写了。包括一些新的系统,Rust 也是第一选择。这里说的系统,目前是指基础设施领域的系统,包括 AI 基础设施。

Mojo 语言

据 Mojo 官方声称,Chris 在 2022 年创建 Modular 公司时,并未打算创造 Mojo 语言。他们在构建下一代推理引擎 Modular 时,发现整个技术栈的编程模型过于复杂,并且手动编写了大量的 MLIR,开发效率极低。因此,他们萌生了创建新的编程语言来统一整个技术栈的想法,Mojo 就诞生了。

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

从 Mojo 语言架构层面来看,Mojo 如何解决这个问题:

首先,Mojo 的语法兼容了 Python 语法。因为 AI 生态中 Python 库占据生态位,想要一统天下,必须坐拥 Python。曾经 Chris 在 Apple 就有过类似经历,Swift 可以与 ObjectiveC 的库混编,用了五年时间完成了语言之间的过渡。

$ cat hello.        
声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。