# 未来属于 Rust —— LLM 使编程语言学习曲线变平 [译]

- Link: https://paooo.com/ai-study/7136/
- Published: 2024-04-08T18:17:52+08:00
- Author: 宝玉的分享

⚡ [Prompt](https://paooo.com/ai-image-prompts/) 语宙 AI 导读 · 30 秒核心看点

 * LLM 能把 Rust 等陡峭语言的学习曲线“压平”，缓解入门后卡在中级阶段的挫败感。
 * 文章核心观点是“中阶教材问题”最难，LLM 可在项目实战、报错理解和思路拆解上提供即时
   帮助。
 * 作者实测认为，学习难语言时若不使用 LLM 辅助，整体学习效率可能并不是最优解。

##  未来属于 Rust

##  编程语言的易用性

在 `/r/rust` 论坛上，我常常看到这样的言论：

阅读目录

 * [未来属于 Rust](https://paooo.com/ai-study/7136/#%e6%9c%aa%e6%9d%a5%e5%b1%9e%e4%ba%8e-rust)
 * [编程语言的易用性](https://paooo.com/ai-study/7136/#%e7%bc%96%e7%a8%8b%e8%af%ad%e8%a8%80%e7%9a%84%e6%98%93%e7%94%a8%e6%80%a7)
 * [中阶教材问题](https://paooo.com/ai-study/7136/#%e4%b8%ad%e9%98%b6%e6%95%99%e6%9d%90%e9%97%ae%e9%a2%98)
 * [使用大语言模型作为编程学习的助手](https://paooo.com/ai-study/7136/#%e4%bd%bf%e7%94%a8%e5%a4%a7%e8%af%ad%e8%a8%80%e6%a8%a1%e5%9e%8b%e4%bd%9c%e4%b8%ba%e7%bc%96%e7%a8%8b%e5%ad%a6%e4%b9%a0%e7%9a%84%e5%8a%a9%e6%89%8b)
 * [没有挑战，学习会受阻？](https://paooo.com/ai-study/7136/#%e6%b2%a1%e6%9c%89%e6%8c%91%e6%88%98%e5%ad%a6%e4%b9%a0%e4%bc%9a%e5%8f%97%e9%98%bb)
    - [近端发展区](https://paooo.com/ai-study/7136/#%e8%bf%91%e7%ab%af%e5%8f%91%e5%b1%95%e5%8c%ba)
 * [未来属于 Rust](https://paooo.com/ai-study/7136/#%e6%9c%aa%e6%9d%a5%e5%b1%9e%e4%ba%8e-rust)

> 我学习 Rust 已经三个月了，现在回想我之前学习 C++ 的过程，我发现 Rust 显然更加困难。
> 要想在 Rust 中高效编程，你需要掌握许多规则，包括但不限于：所有权（ownership）、
> 借用检查（borrow checker）、cargo 工具、生命周期（lifetimes）、特性（traits）、
> 泛型（generics）、闭包（closures）、不安全 Rust（unsafe Rust）等。
> 来源

很多编程语言在设计上追求易用性和快速上手，这种特性历史上让它们在被广泛采用上占有
优势，因为对于初学者而言，这些语言确实更易学习。

比如，Python 是继 ABC 之后的语言，ABC 是专门为了教学目的而设计的。现在，大多数人
都是从这类学习曲线较平缓的语言开始，然后在尝试学习像 Rust 这样学习曲线更陡峭的语言
时感到困难。

为什么会这样？这是因为语言设计总是需要做出权衡。如果优先考虑的是学习的平缓性，那么
语言的表达力、严谨性、性能和可维护性可能会有所牺牲。

![价值观之间存在权衡。易用性有利于推广，但可能会影响到可靠性。](https://paooo.com/
wp-content/uploads/2024/04/0350-800-93253ec77.webp)

价值观之间存在权衡。易用性有利于推广，但可能会影响到可靠性。

而采取不同设计理念的语言，如 Rust、Kotlin、Ocaml 等，就面临着许多新手在学习它们时
的挑战。学习的缓慢进度可能会让人感到害怕，甚至失去学习的动力，这只是初学阶段的问题。
更加复杂的是，当你进入到中级阶段，开始尝试独立构建项目时，挑战会更大。

**现在，得益于大语言模型（LLMs）的发展，这个陡峭学习曲线的问题已经变得容易解决了。**
无论是 Rust、Haskell 还是其他任何语言，借助大语言模型的帮助，现在学习起来都更加容易。
事实上，**如果你在学习难懂的材料时没有利用大语言模型（LLMs）的帮助，那么你的学习
方式可能不是最佳的。** 至少这是我个人的看法。让我来解释一下。

##  中阶教材问题

> 译注：“中阶教材问题” (The Intermediate Material Problem) 是指在学习某个技能或领域
> 时，在初级和高级阶段之间存在的一种学习难点。具体来说，在编程语言学习中，这个问题
> 特别明显，尤其是对于像 Rust 这样的复杂语言。
> 在初级阶段，学习者通过教程和基础课程获得基本的知识和技能。这些资源通常都是易于
> 理解和遵循的，目的是帮助初学者快速入门。然而，当学习者试图从基础过渡到更复杂的
> 应用和项目时，他们常常发现可用的学习材料突然变得稀少并且难度很高。例如，在 Rust
> 编程中，学习者可能已经掌握了基本的语法和概念，但在尝试开发更复杂的系统（如光线
> 追踪器）时，他们需要理解更高级的概念，比如所有权规则和内存管理，这些通常不在初级
> 教程中详细讲解。
> 这种情况造成了一个“中阶教材”缺口，学习者必须依靠自己的努力和探索来克服这个难关，
> 这通常包括阅读高级文档、参与社区讨论，甚至通过试错来解决具体的编程难题。这个阶段
> 通常伴随着挫折和困惑，因为学习者不再有清晰的指导和步骤可循，而是需要自己摸索前进。
> 这个问题并不限于编程或技术领域。在许多学习曲线陡峭的领域中，从初学者过渡到熟练
> 者的过程中都可能遇到类似的“中阶教材问题”。

设想你决定在下一个重大项目中使用 Rust – 你充满野心，打算开发一个光线追踪器 (ray 
tracer)。Rust 承诺的高速和安全性吸引了你，你通过一些教程和书籍已经成功掌握了其基础。
但当你开始着手光线追踪器时，却遭遇了一道高墙。这就是所谓的 _中阶教材问题_，对于学习
Rust 来说，这是一个巨大的挑战。

![在中级学习阶段，你需要理解大量材料，这些内容往往不在教程里，需要你自己去探索。](
https://paooo.com/wp-content/uploads/2024/04/5450-800-030793431.webp)

在中级学习阶段，你需要理解大量材料，这些内容往往不在教程里，需要你自己去探索。

从简单的 Rust 教程跳到复杂的图形渲染实现，差距非常大。你需要努力理解 Rust 的所有权
规则 (ownership rules)，解读编译器的错误信息，以及学会如何有效地管理内存。这不仅是
编程的问题，更是如何用 Rust 的方式思考，而这需要克服陡峭的学习曲线。

这种挫败感是非常真实的 – 你清楚自己想要做什么，但从现在到达目标，就像在没有地图的
迷宫中探路一样。这个阶段，从 Rust 的初学者成长为有能力构建光线追踪器的熟练开发者，
是一个充满挑战和学习曲线的过程，许多 Rust 爱好者都会经历这个阶段。

这个 _中阶教材问题_ 不仅仅存在于 Rust：它是许多复杂编程语言共有的体验。多年前，受到
Hacker News (HN) 的炒作影响，我决定学习 Haskell。读过几本书之后，我以为自己已经准备
好开始一些真正的项目。但很快我就遇到了障碍。我经常遇到困难，不明白自己缺少什么，
或为什么某些方法不起作用。感觉就像很多人都曾挣扎穿越这片迷惑的中间丛林，但每个人
都必须找到自己的路径。Stack Overflow (一个编程问题解答网站) 虽有帮助，但反应慢，
而我加入的一些 Slack (即时通讯平台) 社区则提供了更快的调试建议，但这整个过程都很
漫长。

这就是所谓的陡峭学习曲线。它不是开始时的教程学习，而是当你离开教程，开始自己动手
做项目，并遇到问题时的体验。

##  使用大语言模型作为编程学习的助手

在编程学习的中级阶段，我们常常遇到的一个挑战是，通过 Stack Overflow、邮件列表、论坛
和 Reddit 等渠道获取反馈的速度过慢。但想象一下，如果你能在编程语言相关的子论坛上
提出问题，并且几乎立刻就能得到答案，这会怎样改变你的学习过程？

试想一下，如果 Stack Overflow 能即刻回答每个问题，而不是简单地因为题目偏离主题而
关闭它们。这种体验既有直接和朋友私聊时的即时性，又拥有专业社区邮件列表中的深度和
广度。

**在编程学习的中级阶段，[ChatGPT](https://paooo.com/tag/chatgpt/) 使这一切成为可能。**

如果你在构建光线追踪器程序时遇到错误，直接问 ChatGPT。如果你不确定采取什么方法，
就像在 Reddit 发帖一样表达你的想法，并向 GPT4、shell GPT 或 aider 寻求建议。虽然
有时你可能会遇到它的知识极限并获得无用答案，但在中级阶段，你所提的大多数问题并非
知识的边界，大语言模型会比你更了解这些内容。你需要的仅仅是一些指引。有时你不知道
自己不知道什么，需要了解可能的问题和解决方案。ChatGPT 能迅速为你提供这些信息。

很多人没有意识到以这种方式使用 ChatGPT 的实用性，这令我感到惊讶。陶哲轩，当代最著名
的数学家之一，就在使用 ChatGPT：

> ![陶哲轩](https://paooo.com/wp-content/uploads/2024/04/8580.webp)
> 陶哲轩
> 作为一个实验，我最近在解决方案出炉前，尝试使用 #GPT4 咨询我在 #MathOverflow 上
> 发现的一个问题。
> 根据以往的经验，我知道不应该直接让 #AI 回答问题（那几乎肯定会导致毫无意义的回答），
> 而是让它扮演合作者的角色，提供策略建议。
> 它最终提出了八种方法，其中一种（生成函数法）最终被证明是成功的方法。在这个特殊
> 的案例中，我可能最终会尝试使用生成函数法，但它的建议还是有些许帮助（我最初考虑
> 的是采用渐近分析法来获取直觉，但这证明是不必要的）。
> 我想分享我的经验，希望能激励其他人也去尝试类似的实验。
> 来源

如果 ChatGPT 能帮助陶哲轩探索 Diaconis-Graham 不等式的解决方案，那它同样能帮助你
理解 Rust 中基础的生命周期编译错误。

以下是一些我在一个 Python 和 Rust 小项目中的个人实例，这就是 我所说的。

##  没有挑战，学习会受阻？

这种方式引发的一个现实问题不是大语言模型 (LLM) 是否足够有助于你度过学习的中间阶段，
而是它是否会妨碍学习过程。当我遇到问题并咨询 ChatGPT 时，它会提出一些解决方案，其中
一个可能正是我需要的。但我担心如果没有它的帮助，我可能无法达到那个程度。难道 ChatGPT
正在使我的技能退化吗？如果我的目标是提高技能，那么 LLM 的协助是否在阻碍我的进步？

与普遍认为最佳学习来源于独立解决问题的观点相反，学习研究显示，在编程等复杂领域中，
有指导的学习可能更有效果。

教育心理学家 John Sweller 指出，通过别人的引导来了解解决方案通常是学习的最佳方法，
这比自己摸索更有效。大语言模型 (LLM)，凭借其即时、情境化和对话式的帮助，在这方面
表现卓越。

###  近端发展区

当中级学习者遇到难以理解的错误或知识空白时，向 ChatGPT 提出问题可以获得结构清晰的
解释或逐步拆解这个问题。这不仅仅是解答问题，更重要的是揭示解决方案背后的逻辑和过程，
明了其“为什么”和“如何”1。

![近端发展区](https://paooo.com/wp-content/uploads/2024/04/image-800-300fb009e.webp)

近端发展区

有一个教育理论称为“近端发展区”。这是一片超越你目前技能的区域，在这里你需要外部帮助
才能继续进步。LLMs 可以成为通往这一区域的桥梁，提供必要的辅助，帮助你突破个人能力
的限制。

这种学习体验被称为“脚手架式学习”。你可以通过尝试超出自身能力范围的挑战、在遇到困难
时寻求 LLM 的帮助，来缩小这个中间的差距。通过这种方式，你将能够完成超越你单独能力
所及的任务。如果教育研究属实，这个过程将拓宽你独立完成任务的能力范围。这不是作弊，
而是学习的过程。

试着挑战一些难题，并依赖 LLM 的帮助。通过合作学习，你将掌握超越当前界限的工具和技巧，
并在新的领域中建立自信。

##  未来属于 Rust

让我们回到 Rust 和 Python 的对比：如果你是初次学习编程语言，那么不妨尝试 Python。
但如果你像我曾经在构建 Haskell 网络服务时遇到难题，那么不妨再试一次。挑战难题，并
在此过程中利用大语言模型来助你一臂之力。

**现在，陡峭的学习曲线已经变得平缓许多！**

试着做些事情，遇到障碍时寻找帮助，稍微回顾以确保你已经理解，然后再大胆前进。进入
你的“邻近发展区”！

说到陶哲轩，他现在正在用 Lean，一种功能强大但颇为挑剔的定理证明工具，来形式化他的
一些证明。你知道他是如何学习 Lean 的吗？

> ![陶哲轩](https://paooo.com/wp-content/uploads/2024/04/8580.webp)
> 陶哲轩
> 继续记录我的 Lean4 项目的进展。
> GitHub Copilot 在结束简短论证时非常有用，虽然它提出的长篇建议通常不准确。但即便
> 是错误的建议也帮我学习正确的语法。
> GPT-4 在澄清 Lean 语法细节方面有一定帮助，还能为我提供一种将数学英语转换成 Lean
> 步骤的建议翻译。然而，它似乎在很大程度上受到了 Lean3 语法的影响，这可能是由于训练
> 数据截止日期的原因。
> 来源

如果我们这个时代最杰出的数学家都在用 ChatGPT 来帮助他进行证明，那么你也没有理由不
尝试。

用 Rust 制作点东西，用 Ocaml 制作点东西，用 Elixir 制作点东西。中间阶段的困难已经
不是问题。你的编程伙伴会帮你跨过障碍，很快你将能够自己跳过这些障碍。大语言模型只
会变得更强大。因此，即便是编程语言变得更加富有表达力和严谨，拥有更陡峭的学习曲线，
我们仍然可以学会它们。**未来的世界将属于 Rust**。

❓ 常见问题解答（FAQ）

LLM 为什么能帮助学习 Rust？

因为 Rust 的难点往往不在语法入门，而在所有权、借用、生命周期和项目实战。LLM 可以
即时解释报错、拆解概念、给出调试思路，帮助学习者跨过教程之后的“中阶教材”断层。

什么是编程学习中的中阶教材问题？

它指的是从入门教程过渡到独立做项目时，合适的学习材料突然变少、难度骤增。学习者会
卡在真实项目、复杂概念和调试环节，缺少清晰路径，只能靠搜索、试错和社区答疑推进。

学习 Haskell 或 Rust 时还需要论坛吗？

需要，但 LLM 能显著补足论坛、Stack Overflow 和邮件列表的响应延迟。它更适合做即时
问答、概念解释和错误排查；而社区资源仍适合查证细节、获取经验和了解最佳实践。

🔬 语宙深潜追问 · 进阶实操拆解

学 Rust 时该怎么用[大模型](https://paooo.com/ai-study/)？

把它当“即时导师”而不是答案机：先让它解释报错、对比概念、生成最小示例，再自己动手
改。对所有权、生命周期和 trait 这类难点，最好让模型用多种类比重复讲解。

LLM 会不会让人学得更浅？

会，前提是只复制答案不做验证。正确做法是让模型给出解释、反例和测试用例，再通过编译
器和单元测试反证；这样既能提速，也能避免形成“看懂了但不会写”的幻觉。

🗳️ 读者观点微投票 · 您的实战立场是？

LLM 真的能把 Rust 学习门槛打下来吗？

🕸️ 语宙向量知识图谱 · 语义强关联深度内链

[💻 所属权威专题：Claude & AI 编程 / MCP →](https://paooo.com/topics/claude-mcp-coding/)

 * [现代大语言模型应用架构 [译]](https://paooo.com/ai-study/7022/)
 * [构建更佳大语言模型（LLM）应用的四大要诀 [译]](https://paooo.com/ai-study/7064/)
 * [RustGPT：用纯Rust从零打造的Transformer大模型，揭秘无框架AI开发全流程](https://paooo.com/aigc-news/13694/)
 * [大语言模型程序 [译]](https://paooo.com/ai-study/8464/)

[🏛️ 宝玉的分享](https://paooo.com/author/baoyu/) · 前沿大模型翻译与提示词工程实战
分享专栏，聚焦海外一手 AI 技术动态与工程实践。

[📄 Markdown 纯净版](https://paooo.com/ai-study/7136/?format=md)

💡 这篇内容对您有启发吗？

[📡 RSS 订阅](https://paooo.com/feed/)[✨ 提交 AI 工具 / 合作](https://paooo.com/submit-tool/)

**🚀 Prompt 语宙 AI 创作者生态：**探索 2,800+ 全球实用 AI 工具与高精度生图提示词
咒语库

[🧭 语宙 AI 导航 (ai.paooo.com)](https://ai.paooo.com/)[🎨 AI 生图 Prompt 库](https://paooo.com/ai-image-prompts/)
[📚 核心专题导航](https://paooo.com/topics/)[⚡ AIGC 早报生成器](https://paooo.com/mtool/)
