30 秒看懂
University of Lynchburg 教授 Will Briggs 与 Todd Montgomery 讨论《C++26 for Lazy Programmers》。两人分享 AI 辅助编程的个人经验,并探讨如何教授 C++ 概念而不让初学者不堪重负。
- 1使用 AI 仍需读懂代码两人都重视阅读和理解生成代码的能力。
- 2让练习有趣Briggs 用有趣的例子和游戏鼓励持续练习。
- 3仔细安排概念顺序他用读者已经了解的概念引入新知识。
- 4选择过多的成本语言新增特性有收益,也会增加认知负担。
- 5循序渐进地引入指针数组和动态分配为后续明确讨论指针打下基础。
- 6学习经验可以迁移Briggs 认为 C++ 是学习其他语言的准备。
要点建议
- 两人都重视阅读和理解生成代码的能力。
- Briggs 用有趣的例子和游戏鼓励持续练习。
- 他用读者已经了解的概念引入新知识。
- 语言新增特性有收益,也会增加认知负担。
- 数组和动态分配为后续明确讨论指针打下基础。
- Briggs 认为 C++ 是学习其他语言的准备。
按章节阅读整理后的全文
在 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 有帮助,但开发者仍需要理解手头的工作。
让编程变得有趣
Briggs 解释有趣的书名和自己的教学动机。
Montgomery 问这本书面向谁,并提出一种好的“懒惰”是通过维护更少、更好的代码来减少长期工作。Briggs 说,书名带有玩笑意味:他希望吸引喜欢编程的人。
Briggs 认为,成为优秀程序员需要大量超出课后习题的练习,因此享受编程很重要。他希望提供一种比自己见过的过于严肃的教材更有趣的选择,用图形和游戏吸引读者。
两人回忆了过去的编程书籍和工具。Briggs 说,一本使用多样、有趣示例的 Pascal 书给了他灵感;他还记得在朋友推荐后,从昂贵、需要多次处理的编译器转向 Turbo Pascal。
Montgomery 说,语言书籍有时会变成参考手册,而不是有效的入门教程。他欣赏 Briggs 的书在引导读者逐渐接触更高级 C++ 概念时保持趣味,并询问章节顺序如何确定。
安排概念顺序
这本书按适合初学者的顺序引入新概念。
Briggs 说,入门书不可能涵盖 C++ 的全部内容;他的目标是让读者准备好学习更高级的材料。概念彼此依赖:解释链表可能需要与 vector 比较,还涉及复杂度记号。他尽量用读者已经了解的内容引入新概念。
特别是在入门阶段,他尽量每次只增加一两个概念。他也寻找能一举两得的例子:构建一个字符串类既能教授运算符重载,也能加深对字符串的理解,而不必让书的篇幅加倍。
C++ 的复杂性与指针教学
Briggs 讨论选择增多、函数和指针。
谈到 C++ 的演进,Briggs 抱怨同一件事有太多做法。他记得一段视频展示了大量初始化同一个值的方法,认为这种增加会让初学者不堪重负。他也承认,新增特性通常既有实际收益,也有成本。
例如,他把单一的 const 概念与 constexpr、constinit 等额外形式作比较。他更喜欢能够替换繁琐旧做法的变化:在他看来,span 可以避免单独传递数组大小。
在选择 C++26 内容时,Briggs 会问哪些变化是初学者和中级程序员需要知道的。他说函数对学生尤其困难,因为函数、参数和局部变量会同时引入多个概念。他把这一主题分成两章,并提供编写函数的模板。
指针是另一个常见的错误来源。Briggs 没有立刻引入这一术语,而是先讲数组、解释底层发生了什么,之后再引入动态分配的数组。等到书中明确讨论指针时,读者已经使用相关概念很久了。
Montgomery 回忆自己在学习汇编之后学习 C,曾问指针是否是内存地址;一个没有帮助的回答最初让他走错了方向。他说,这本书循序渐进的引入方式很自然,同时承认学生的学习方式各不相同。
AI 与未来语言
两人分享个人观察,并承认存在不确定性。
Montgomery 说,按他的个人经验,AI 生成的 C++ 代码看起来比生成的 Java 更好。Briggs 表示只能推测,并指出模型面对冷门材料时可能产生更多幻觉。Montgomery 猜测可用训练样本的差异可能有关;两人都没有提出受控研究。
被问到 AI 是否会催生新语言或让旧语言重新流行时,Briggs 说自己不擅长预测。过去互联网、脚本和内存安全等方向的转变都让他感到意外。他设想的一种实际用法是用 C++ 写代码,再让 AI 转成 Rust,尽管这并不需要新语言。
希望读者获得什么
Briggs 希望读者享受编程并学习其他语言。
Briggs 希望读者发现自己足够喜欢编程,愿意从事长期职业。他也希望学习 C++ 能让人更容易掌握 C 和其他语言。他引用了访谈时的一份 TIOBE 排名,说明老语言仍被广泛使用;排名会变化,而且是间接衡量流行度。
他认为,努力理解 C++ 的概念可以帮助人们学习其他语言,并提到一些校友很快适应 Java 工作的经历。Montgomery 最后感谢他写书并参与对话。
同频道的其他文章
39:12EN → 简体中文
22:33EN → 简体中文
34:11EN → 简体中文
28:15EN → 简体中文
46:36EN → 简体中文
28:23EN → 简体中文