Will Briggs:如何教授 C++26,以及为什么要读懂代码

原标题Will Briggs on Teaching C++26 and Learning to Read Code

一位编程教师讨论 AI、概念顺序、指针和如何让练习有趣。

WBWill Briggs嘉宾 · University of Lynchburg
频道
GOTO Conferences
发布
2026年9月25日
视频
28:24
阅读
5 分钟
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

University of Lynchburg 教授 Will Briggs 与 Todd Montgomery 讨论《C++26 for Lazy Programmers》。两人分享 AI 辅助编程的个人经验,并探讨如何教授 C++ 概念而不让初学者不堪重负。

  1. 1使用 AI 仍需读懂代码两人都重视阅读和理解生成代码的能力。
  2. 2让练习有趣Briggs 用有趣的例子和游戏鼓励持续练习。
  3. 3仔细安排概念顺序他用读者已经了解的概念引入新知识。
  4. 4选择过多的成本语言新增特性有收益,也会增加认知负担。
  5. 5循序渐进地引入指针数组和动态分配为后续明确讨论指针打下基础。
  6. 6学习经验可以迁移Briggs 认为 C++ 是学习其他语言的准备。

要点建议

  1. 两人都重视阅读和理解生成代码的能力。
  2. Briggs 用有趣的例子和游戏鼓励持续练习。
  3. 他用读者已经了解的概念引入新知识。
  4. 语言新增特性有收益,也会增加认知负担。
  5. 数组和动态分配为后续明确讨论指针打下基础。
  6. Briggs 认为 C++ 是学习其他语言的准备。
全文

按章节阅读整理后的全文

只看原始文稿
01

在 AI 时代学习语言

两人分享使用 AI 和阅读其代码的经验。

Todd Montgomery 介绍了 Will Briggs:他是 University of Lynchburg 的计算机科学教授,自 1998 年起从事教学,著有《C++26 for Lazy Programmers》。对话首先讨论,在 AI 能生成代码的情况下,学习编程语言是否仍然重要。

Briggs 说,他大约每年会用一个中等难度问题测试 AI 系统;按照他的经验,它还没有解决过。他承认情况可能改变,也说自己每天都用 AI 询问语言特性和编译错误。这些是个人观察,而非对系统的系统性比较。

Briggs 说 AI 能加快工作,但盲目采用建议的修复也可能让他走很长一段弯路。Montgomery 认为,读代码的能力越来越重要,因为代码是 AI 返回结果的一种方式;如果不懂语言,就很难评估和引导结果。

Briggs 回忆,了解 PHP 让他在 WordPress 网站需要超出标准选项的行为时能够修改相关部分。他说,认识的业内人士也认为 AI 有帮助,但开发者仍需要理解手头的工作。

02

让编程变得有趣

Briggs 解释有趣的书名和自己的教学动机。

Montgomery 问这本书面向谁,并提出一种好的“懒惰”是通过维护更少、更好的代码来减少长期工作。Briggs 说,书名带有玩笑意味:他希望吸引喜欢编程的人。

Briggs 认为,成为优秀程序员需要大量超出课后习题的练习,因此享受编程很重要。他希望提供一种比自己见过的过于严肃的教材更有趣的选择,用图形和游戏吸引读者。

两人回忆了过去的编程书籍和工具。Briggs 说,一本使用多样、有趣示例的 Pascal 书给了他灵感;他还记得在朋友推荐后,从昂贵、需要多次处理的编译器转向 Turbo Pascal。

Montgomery 说,语言书籍有时会变成参考手册,而不是有效的入门教程。他欣赏 Briggs 的书在引导读者逐渐接触更高级 C++ 概念时保持趣味,并询问章节顺序如何确定。

03

安排概念顺序

这本书按适合初学者的顺序引入新概念。

Briggs 说,入门书不可能涵盖 C++ 的全部内容;他的目标是让读者准备好学习更高级的材料。概念彼此依赖:解释链表可能需要与 vector 比较,还涉及复杂度记号。他尽量用读者已经了解的内容引入新概念。

特别是在入门阶段,他尽量每次只增加一两个概念。他也寻找能一举两得的例子:构建一个字符串类既能教授运算符重载,也能加深对字符串的理解,而不必让书的篇幅加倍。

04

C++ 的复杂性与指针教学

Briggs 讨论选择增多、函数和指针。

谈到 C++ 的演进,Briggs 抱怨同一件事有太多做法。他记得一段视频展示了大量初始化同一个值的方法,认为这种增加会让初学者不堪重负。他也承认,新增特性通常既有实际收益,也有成本。

例如,他把单一的 const 概念与 constexpr、constinit 等额外形式作比较。他更喜欢能够替换繁琐旧做法的变化:在他看来,span 可以避免单独传递数组大小。

在选择 C++26 内容时,Briggs 会问哪些变化是初学者和中级程序员需要知道的。他说函数对学生尤其困难,因为函数、参数和局部变量会同时引入多个概念。他把这一主题分成两章,并提供编写函数的模板。

指针是另一个常见的错误来源。Briggs 没有立刻引入这一术语,而是先讲数组、解释底层发生了什么,之后再引入动态分配的数组。等到书中明确讨论指针时,读者已经使用相关概念很久了。

Montgomery 回忆自己在学习汇编之后学习 C,曾问指针是否是内存地址;一个没有帮助的回答最初让他走错了方向。他说,这本书循序渐进的引入方式很自然,同时承认学生的学习方式各不相同。

05

AI 与未来语言

两人分享个人观察,并承认存在不确定性。

Montgomery 说,按他的个人经验,AI 生成的 C++ 代码看起来比生成的 Java 更好。Briggs 表示只能推测,并指出模型面对冷门材料时可能产生更多幻觉。Montgomery 猜测可用训练样本的差异可能有关;两人都没有提出受控研究。

被问到 AI 是否会催生新语言或让旧语言重新流行时,Briggs 说自己不擅长预测。过去互联网、脚本和内存安全等方向的转变都让他感到意外。他设想的一种实际用法是用 C++ 写代码,再让 AI 转成 Rust,尽管这并不需要新语言。

06

希望读者获得什么

Briggs 希望读者享受编程并学习其他语言。

Briggs 希望读者发现自己足够喜欢编程,愿意从事长期职业。他也希望学习 C++ 能让人更容易掌握 C 和其他语言。他引用了访谈时的一份 TIOBE 排名,说明老语言仍被广泛使用;排名会变化,而且是间接衡量流行度。

他认为,努力理解 C++ 的概念可以帮助人们学习其他语言,并提到一些校友很快适应 Java 工作的经历。Montgomery 最后感谢他写书并参与对话。

同频道的其他文章

3 张幻灯片39:12EN → 简体中文
GOTO Conferences· 2026年10月28日Cate Huston:严谨如何支撑 AI 辅助开发的交付速度Cate Huston · Twill两人团队分享发布关口、自动检查、优先级和加快交付的成本。AI 工程管理Software engineeringAI agents
4 张幻灯片22:33EN → 简体中文
GOTO Conferences· 2026年10月26日William Schor:Netflix 如何从单元测试走向合成金丝雀William Schor · Netflix用生成的工作负载和接近生产的基础设施,测试分布式键值服务。Software engineering
5 张幻灯片34:11EN → 简体中文
GOTO Conferences· 2026年10月23日Anatoliy Bilenko 和 Alberto Carretero:用形式化方法和 AI 让数据库协议可靠Anatoliy Bilenko, Alberto Carretero · CanonicalCanonical 的数据库工程师把可执行规格、基于模型的测试、故障探索和重建的执行历史串起来,并说明为什么这些方法单独用,都无法证明真实系统正确。开发流程与测试Code review & verification可观测性与可靠性+2
28:15EN → 简体中文
GOTO Conferences· 2026年10月22日Steve Poole:开源安全与 AI 带来的维护挑战Olimpiu Pop, Steve Poole为什么漏洞发现加速会给维护者、依赖使用者和升级流程增加压力。Software engineeringAI security
5 张幻灯片46:36EN → 简体中文
GOTO Conferences· 2026年10月21日Don Syme:围绕人类协作构建 Agent 自动化Don Syme · GitHubContinuous AI、仓库工作流,以及无人值守软件维护所需的防护措施。Agent orchestrationSoftware engineering编程智能体
28:23EN → 简体中文
GOTO Conferences· 2026年10月19日学习 Ash:声明式 Elixir 应用、测试与可扩展性Christian Alexander, Rebecca Le, Zach DanielRebecca Le 和 Zach Daniel 解释他们的书与框架如何共同演进。Software engineering