写点什么

Mojo 作者 Chris Lattner 谈编程言语的进化

  • 2024-11-12
    北京
  • 本文字数:2481 字

    阅读完需:约 8 分钟

大小:1.13M时长:06:35
Mojo作者Chris Lattner谈编程言语的进化

Mojo,一种新的基于 Python 的模块化编程语言,于 2023 年问世,专为 GPU 和其他加速器而设计。它的官方 FAQ 中提到,“我们的目标不仅仅是打造一个‘更快的 Python’,而是实现一个全新的系统编程层面,提供对加速硬件的直接访问能力”。

 

或者,正如 Chris Lattner 在接受采访时所说的,他们的目标是专注于“如何表达”硬件的全部能力。同时,他们也希望“在用户熟悉的环境中”保持 Python 的风格和体验,因为许多人,尤其是在 AI 领域,都在广泛使用 Python。

 

一种编程语言的演化其实是一个难得的机会,我们不仅可以深入探索语言设计决策背后的逻辑,还可以探究将这些决策聚合在一起的底层哲学。在 2024 年,程序员真正关心的是什么?在播客“Software Unscripted”的第100集,Lattner 分享了他对设计编程语言、编译器以及相关基础设施的见解。

 

播客主持人 Richard Feldman,Roc 编程语言作者,开场便提出了一个关键的问题:现如今有这么多编程语言,为什么还要开发一种全新的语言?对此,Lattner 不假思索地回答:“这本质上是一种解决问题的方式。”

 

Lattner 给出的答案不仅回答了“为什么”,还回答了“做什么”和“怎么做”——为我们提供了对当前整个编程语言生态系统的全面视角。

 

对 Python 的部分演进

 

Lattner 认同 Feldman 的说法,即 Mojo 正在利用 Python 生态系统,同时通过“部分演进”来改进性能。这项工作正在进行中。Lattner 表示,“我们今年秋天的目标之一是能够轻松地使用 Mojo 创建 Python 包”,将 Mojo 的卓越性能带给 Python 开发者。

 

Mojo 将“去除与 C 语言互操作的复杂性,”Lattner 说道,同时提供“与 C 语言或 C++相同或更好的性能。”

 

Lattner 随后说这是一件“自然而然的事情”,因为一个成功的语言社区其规模自然会扩大。“程序员希望将自己的技能向前推进,就会自然而然地将这些技能带入他们想要应用的相关领域。”

 

当然,Lattner 最后也给出了一个更简单的答案:“我们开发 Mojo,因为我们关心 AI、GPU 以及加速器相关领域的东西。”

 

“Python 社区有很多声音是关于‘让原生 Python 变得更快,可以获得 20 倍的加速’等等,但 Mojo 的理念是‘怎样不从 Python 出发却可以让它变得更好’。我们说的是‘挖掘硬件的极限性能’。我们要释放硬件的全部潜能——这不仅仅是,比如,让 int 类型变得很快……还包括加速器、SIMD(单指令/多数据并行处理)以及所有这类东西……”

 

“这取决于具体的工作负载,但我们有一篇博文展示了 Mojo 的性能可能比 Python 快 65000 倍。”

 

“对此常见的反驳是‘在 Python 中,你不需要编写涉及大量数学运算的代码’,但这正是 Mojo 的精髓所在——它让你能够使用一种与 Python 保持一致且连贯的语言编写同样的代码。因此,你无需切换语言!

 

SIMD 支持和第二语法

 

为了提供一流的并行处理支持,Mojo 的 SIMD 语法包含了所有不同数字类型的元素。

 


Lattner 在这里对现代编程语言做了一番评论:“顺便说一句,自 20 世纪 90 年代末以来,所有处理器都支持 SIMD,但为什么没有编程语言去拥抱现代计算机呢?这对我来说一直是个谜。”(随后他再次对“如此多的代码仍然是单线程的”表达了惊讶。)

 

Mojo 还找到了一种提升性能的方法,使其可以超越 Python。“Python 中的整数是大整数,”Lattner 解释说,“你可以创建任意大小的整数,它们是堆分配的,具有引用语义。”Mojo 在语法中保留了 int 这个名称,同时也在标准库中引入了自己的替代类型——Int(大写的 I)。这个 Int 是一个结构体,极大地简化了 Mojo 编译器的工作。

 

尽管 Mojo 仍然兼容 Python 的原始语法,但如果你选择使用 Mojo 的 Int 类型,“你将获得更好的性能和可预测性。它还能在 GPU 上运行,等等。这不是说一个比另一个更好,而是一种权衡。”

 

变复杂,解锁超能力

 

Lattner 说,“一些芯片厂商”决定全力支持包含“虚数”(虚数在技术应用中被广泛使用,比如工程和物理公式等)的数学。“因此,一旦有人将这些技术集成到硬件中,并惊叹‘这比单独进行乘法和加法快了 10 倍’,我们也不得不说‘10 倍的性能提升’——因为他们将这些技术嵌入到了硅片中……那么我们该如何让这一优势为人们所用,而不必让他们深入了解背后的复杂性呢?”

 

Mojo 支持使用复数来定义结构体,这些结构体具备基本的行为和“一系列方法——包括乘法”。如果编译器检测到存在复数加速硬件,并且该硬件支持特殊的快速乘法指令,那么美妙的事情就会发生。“所有使用复数的程序都将获得加速,而开发者无需操心额外的细节。”

 

Mojo 保留了 Python 的运算符重载功能,即自定义操作符默认行为的能力,并保留与 Python 语法的兼容性。最终,许多额外的复杂性都转移给了库开发者。

 

Lattner 提到,他知道有很多编译器工程师,但他想将“人才生态系统”提升到库开发者所在的上游——那些深刻理解自己领域以及知道如何利用 GPU 性能增强手段的程序员。他说:“我的 Mojo 旅程实际上是关于释放这些人的潜力,并赋予他们超能力。”

 

后来他说,这与过去五到十年该领域的“趋势形成了鲜明对比……‘将复杂性嵌入编译器,将其锁定并扔掉钥匙,然后相信我们——我们这些编译器开发者’……但我看到的是,这实际上并不是真的……编译器很少能带来 10 倍的性能提升。但在应用领域工作的人,因为他们了解自己的应用程序——完全有可能实现,因为他们可以使用合适的工具来实现。”

 

最终的结果是,在光数字就有十几种不同类型的领域,“我们能够让人们在库中定义这些类型,减轻语言需要与所有硬件打交道的负担!”

 

Mojo 社区

 

在节目结束时,Lattner 呼吁有兴趣的程序员可以看看 Mojo 的官网及其“丰富的文档资源。Mojo 社区非常活跃!我们有一个 Discord 频道——据我所知,大约有 20000 人,他们在讨论各种话题,共同构建项目。”

 

他还补充了一句鼓舞人心的话:“Mojo 不仅仅是一种 AI 语言,社区还用它来构建 Web 服务器、GUI 库以及各种其他项目。我们非常希望人们能参与进来。Mojo 目前还处于相对早期的阶段,我们仍在不断添加核心功能和构建库。”

 

“但我们拥有一个庞大的社区,他们都非常热情,我希望人们能够参与进来。”

 

【声明:本文由 InfoQ 翻译,未经许可禁止转载。】

 

原文链接:https://thenewstack.io/mojos-chris-lattner-on-making-programming-languages-evolve/

2024-11-12 17:586475

评论

发布
暂无评论
发现更多内容

YashanDB操作系统身份认证配置

YashanDB

数据库 yashandb

从ChatGPT到DeepSeek,现象级爆火背后的数学逻辑!

小鲸数据

鸿蒙APP性能优化

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包公司

《Operating System Concepts》阅读笔记:p258-p271

codists

操作系统

【活动预告】3.15 数据与 AI 新技术论坛,徐汇西岸见!

Apache IoTDB

YashanDB HA节点间SSL连接配置

YashanDB

数据库 yashandb

YashanDB分布式节点间SSL连接配置

YashanDB

数据库 yashandb

YashanDB TLCP连接配置

YashanDB

数据库 yashandb

OCAI + DeepSeek满血版双buff加成,OS运维从此告别焦虑

OpenCloudOS

AI OpenCloudOS 社区 DeepSeek

MAC与HMAC技术辨析

石君

hash HMAC-SHA

RocketMQ:消息发送机制

葛飞

当达索仿真遇上DeepSeek:AI给工程研发装上了"智慧大脑"

思茂信息

abaqus DeepSeek SIMULIA CST Studio Suite 达索

企业为什么需要建设零信任身份安全

芯盾时代

iam 零信任 统一身份管理平台

H5 APP开发框架及特点

北京木奇移动技术有限公司

APP开发 软件外包公司 H5 APP

认知、实践、驾驭:AI 时代普通人的务实生存法则

小鲸数据

智能制造架构设计方案

金陵老街

智慧工厂 智能制造

【GreatSQL优化器-16】INDEX_SKIP_SCAN

GreatSQL

两会布局的新兴和未来产业,用友一直在助力!

用友智能财务

AI 财经 用友 会计

YashanDB数据库服务端SSL连接配置

YashanDB

数据库 yashandb

H5 APP的性能优化

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP开发公司

推荐一款好用的智能工单系统,有哪些智能化应用场景

云智慧AIOps社区

ITSM ITSM软件 工单系统 智能工单

一招解决数据库中报表查询慢的痛点

阿里技术

数据库 duckdb TP系统

推理大模型时代,TextIn ParseX助力出版业知识资产重构

合合技术团队

人工智能 算法 图表 图像处理 大模型

字节跳动冯佳时:大语言模型在计算机视觉领域的应用、问题和我们的解法

极客天地

时序数据库 IoTDB 为某大厂多领域物联网场景提供数字化管理基座

Apache IoTDB

三个AI思维,让你拥有碾压DeepSeek实力

小鲸数据

DeepSeek AI思维

邀请函|相约新乡——“AI 赋能,智造跃迁” AI 驱动数字化创新设计促进新质生产力发展交流会

Altair RapidMiner

AI 数字化转型 仿真 智能制造 CAE

DeepSeek大模型6大部署模式解析与探索测试开发技术赋能点

测试人

人工智能 软件测试

19.5stars!未来十年一定要学的免费、开源的OLAP数据库——DuckDB

遇码

大数据 开源 数据分析 OLAP duckdb

为什么说JSON不一定是LLM结构化输出的最佳选择?

Baihai IDP

程序员 AI LLMs 格式化数据

Mojo作者Chris Lattner谈编程言语的进化_编程语言_David Cassel_InfoQ精选文章