写点什么

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:586078

评论

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

【活动回顾】Data + AI 时代下的云数仓设计 @Qcon

Databend

性能测试的理解误区

老张

性能测试 稳定性保障

手把手教你用 NebulaGraph AI 全家桶跑图算法

NebulaGraph

人工智能 图数据库

经过半年的努力,我终于成为了谷歌开发者专家(GDE)

拭心

android 面试 谷歌 GDE

DHorse v1.2.1 发布,基于k8s的发布平台

tiandizhiguai

DevOps k8s

【推荐】贵阳市等保测评机构看这里!

行云管家

贵阳 等保 等级保护 等保测评

sharding-jdbc分库连接数优化 | 京东物流技术团队

京东科技开发者

分库分表 Sharding sharding-jdbc 企业号 7 月 PK 榜

思维导图软件哪个好?试用百款导图软件只留下这15个。

彭宏豪95

思维导图 在线协作文档 mac思维导图 效率软件 笔记工具

人人都是架构师-清晰架构 | 京东物流技术团队

京东科技开发者

架构 架构设计 企业号 7 月 PK 榜 清晰架构

Kubernetes:快速入门指南

NGINX开源社区

nginx Kubernetes 微服务

使用GPT探索学习新东西的乐趣与惊喜 💡|社区征文

Five

学习 安卓 GPT 年中技术盘点

壹米滴答助力制造业、商贸业及电商企业提升商业流通效率

联营汇聚

实时社群技术专题(二):百万级成员实时社群技术实现(消息系统篇)

JackJiang

网络编程 即时通讯 IM

浅析JVM GC配置指南 | 京东云技术团队

京东科技开发者

JVM 垃圾回收 GC 企业号 7 月 PK 榜

龙蜥开发者说:参与开源要敢于担任不同角色 | 第 21 期

OpenAnolis小助手

开源 标准化 sig 龙蜥开发者说 T-one

云管平台和云服务器一样吗?两者有啥区别?

行云管家

云计算 云服务器

向量数据库的崛起:从矢量搜索到深度学习 (二)

极限实验室

深度学习 数据库 搜索 极限科技

小红书2024届REDstar技术提前批招聘火热进行中,快喊上学弟学妹看过来!【附专属内推码】

小红书技术REDtech

技术 招聘 校招 小红书

架构师日记-到底该如何搭建一个新系统 | 京东云技术团队

京东科技开发者

架构 架构设计 工程架构 企业号 7 月 PK 榜

极客欢聚,燃动夏日!开发者嘉年华等你来

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨

常规LED广告显示屏的运营成本怎么估算

Dylan

广告 项目 运营 成本 LED显示屏

掌握这些写简历投简历的“黑魔法”,告别简历已读不回!

王中阳Go

golang 简历优化 面试技巧 求职面试 后端面试

我们搬家啦!新家园,新征程,新篇章

KaiwuDB

KaiwuDB 剪彩 揭牌

MobPush 工作台操作指南:查看推送数据

MobTech袤博科技

大数据 前端 后端

中航机载新技术预研与应用工程师万胜来《IoTDB 在中航机载智能云制造系统》

Apache IoTDB

时序数据库 IoTDB Apache IoTDB 中国航天

和鲸 × 于峻川丨以遥感领域为例,浅谈 AI for Science 带来的数据开放、跨学科协同及产学研一体

ModelWhale

遥感 AI for Science 协同科研 数据开放 产学研一体

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