为了教给别人而分解事物的行为,可以成为重新熟悉旧概念,并在许多情况下获得新见解的好方法。
我有一个 YouTube 频道,我在其中演示 FreeDOS 程序并展示经典的 DOS 应用程序和游戏。该频道关注者不多,所以我倾向于探索我的观众直接建议的主题。当一些订阅者询问我是否可以制作更多关于编程的视频时,我决定推出一个新的视频系列来教授 C 编程。我从教授 C 语言中学到了很多,在这个过程中,我遇到了一些我认为其他人也会欣赏的有意义的收获。
制定计划
在我的日常工作中,我领导培训和研讨会,以帮助新的和新兴的 IT 领导者发展新技能。在日常工作之外,我也喜欢作为兼职教授进行教学。因此,我非常擅长构建课程大纲和设计课程。这就是我开始的地方。如果你想有效地教授一个科目,你不能只是随意应付。
首先写一个你想涵盖的主题大纲,并弄清楚每个新主题将如何建立在前一个主题之上。“积木”式的新知识添加方法是有效培训计划的关键。
为了以“跟随”视频系列的形式教授 C 编程,我创建了这个初始大纲
- C 编程简介——
#include
、#define
、main()
、数据类型和运算符 - 流程控制——流程控制和循环
- 函数——用户定义、标准库和递归
- 数组——固定大小数组、指针和可变大小数组
- 文件——读取和写入文件
- 高级编程——
realloc
、getline
和二进制 - 控制台编程——
conio
- 整合在一起——编写一个回合制游戏
每个主题都建立在前一个主题之上,并且在本系列结束时,我们已经学到了足够的 C 编程知识来编写一个全屏游戏。
展示与讲解
我最初计划只是录制一个关于 C 编程的视频系列,但我很快意识到人们需要某种书面教程;一个小时的视频包含的信息太多了。为了配合每周的视频,我决定编写一个简短的编程指南,以更详细地解释本周的主题。该指南还包括新库函数或编程概念的列表,这些列表为学习 C 语言提供了“快速参考”。
幸运的是,这对我有利。录制一个小时的视频需要计划,而我喜欢计划。在录制下一个视频的前几天,我写出了我想涵盖的主题,以及我想在屏幕上演示的示例代码。这给了我一个大纲来缩小视频的重点。录制完视频后,我将我的笔记扩展成一个编程指南,并在网上发布。
使其立即适用
大多数人通过实践学习效果最好;这就是为什么本系列中的每个“章节”或“单元”都包含几个示例程序,您可以按照这些程序来学习编程。我不希望这个系列只关注编写程序的理论,也关注实际操作。例如,在第一章“C 编程简介”中,我们通过编写程序来计算圆的面积,以及如何计算两个数相除的余数来学习。
每个单元还以几个“编程练习”任务结束,这些任务帮助用户练习他们的新知识。这些练习直接应用我在当周视频中介绍的概念,以巩固我们所学的知识。
最重要的是,我演示了如何编写实际的 FreeDOS 程序作为视频系列的一部分。例如,在介绍循环的视频中,我还展示了如何使用 do-while
循环编写 FreeDOS PAUSE 命令的一个版本,以等待用户按下 Enter 键。在整个系列的其余部分,我编写了 FreeDOS ECHO、TYPE、MORE、FIND、CLS 和 COPY 的版本,以演示如何应用新概念。
乐于学习
随着我在系列中继续下去,我发现探索新主题对我自己来说很有趣。例如,因为我很久以前就学过 C 语言,并通过在 DOS 上使用 C 编译器编写程序来练习我的 C 编程,所以我从来没有学过 getline
函数。这是一个较新的函数,可以从用户那里读取任意长度的行。与 fgets
函数和更危险的 gets
函数相比,getline
是读取用户输入的首选方法。但是在录制视频之前,我对 getline
了解不多。
有趣的是,实际上我已经编写了我自己的 getline
版本供自己使用,我相信无数其他程序员也这样做过。但我没有意识到它是较新的 C 标准的一部分,大约在 2010 年添加的。在教授 C 编程(本质上需要读取用户输入)的过程中,我也学到了一个“对我来说是新的”C 编程函数。
我也磨练了自己的开发者技能。作为一名自学成才的程序员,我知道我早期养成了一些坏习惯。其中一些习惯在其他编程语言中编码时是最佳实践,但在 C 语言中不是好习惯。AppleSoft BASIC 将变量名限制为两个字母。Fortran 可以假设以 I-N 开头的变量将是整型变量。因此,当我编写自己的程序时,我的默认做法是使用一个简单的变量名,如 i
来迭代列表,或 max
来存储某物的最大值。
但是在教别人 C 编程时,我想演示良好的编程行为。我最终改掉了变量名过短的坏习惯。在编程视频系列结束时,我开始编写描述性的变量名,如 colornum
来存储颜色列表的索引,player
来指示“玩家 1”或“玩家 2”,以及 message
来存储消息。我想我已经最终改掉了 20 多年自学编程的大部分坏习惯。
教学往往是双向的——当你分享知识时,你会获得新的事实和观点。无论你对某个主题的技能或熟悉程度如何,永远不要害怕拿起“教师”的衣钵,帮助别人学习。
如果你想自己学习 C 语言,你可以在这里找到 C 编程系列。
8 条评论