很多的大学生上c语言的课程,都理解不了循环的知识。那么,一个16岁以下的孩子,青少年学习编程,又能够掌握多少知识呢?作为一位青少年编程讲师,我的回答是,c语言比较基础的知识点,从最基本的数据类型和表达式到比较难的指针和结构体,所有要求学c语言的大学生需要掌握的知识点,青少年也能掌握。
青少年掌握C语言的程度
  言简意赅地说,青少年掌握c知识点的多少,不在于青少年的年龄,而在于老师的能力。老师需要对这些知识点的概念有足够深入的理解,并且讲解出最主要的特点,忽略掉细枝末节。并且善于使用生活中的例子去帮助孩子们理解知识,降低学习难度。我相信同样的教学方法也适用于大学生。只是大学生的知识储备更多,因此理解起来会少花费一些时间。当然,如果是同样的一位老师,教授不同的学生,知识点的理解能力也会因人而异。老师掌握对了方法,那么,学生学习一门语言,并不会难到完全无法掌握。毕竟,编程就是人去赋予计算机思维 。我们在生活中如何考虑问题,那么,我们编程的过程就是用一种语言去教会计算机思考。学生在生活中不需要编程,他会解决这个问题,那么,编程就是在训练他把自己的思维过程总结出来,以代码的形式。我们需要教的只是利用编程语言来顺利地表达你的思考过程。通俗地说,对老师的要求是,你心里首先要有“学生是可以学会的”的意识。其次,在讲解过程中,要俯就学生,我们来做降低难度的工作,然后用学生的世界观中可以理解的语言来讲解。最后,学生在使用知识的过程中可能因为年龄或智力的区别显示出不同的学习能力,老师需要去预期和调节学习时间的长短。不同学生对每个知识理解的深度和广度可能有区别。c语言这个“工具箱”中最基本的几个道具分别是承担什么功能和作用,他们是可以理解的,只是使用这个道具的熟练程度可能与成人不可同日而语。
  让学生理解编程的游戏规则,知道自己在这个过程中所扮演的角色,是编程的第一步。学生编写代码时,他就是在扮演着“程序员”的工作。计算机、程序员和程序的关系有很多类似的例子:如果计算机是乐队,那么程序员就是指挥家,程序就是指挥家手中的乐谱。乐队所演奏出的作品是受指挥家的设计,乐谱是指挥家创造的载体,甚至可以进一步说,乐谱如同一门语言,通过这门无声的“语言”,指挥家将自己所愿表达的流淌出来。如果计算机是军队,那么程序员就是总司令,程序就是总司令所发布的作战计划。军队需要无条件地执行总司令撰写的作战计划。这就对应着你的计算机无条件地执行你作为程序员所编写的正确程序。
  其次,我把学习c语言的阶段常遇到的问题分为几个坎:变量、循环、数组、递归和指针。每个知识概念对应不同的功能,老师需要抓住其它们的实质,让学生理解并会使用。例如变量的实质是内存,它的功能是存储某种数据,那么可以用生活中的抽屉或杯子作为类比。讲的更细一些是不同类型的数据需要用存储到不同类型的变量中,那么你可以告诉学生有几种常用的数据类型,不需要讲的太细,以免加重记忆负担。虽然说小朋友的记忆能力较大人来说更为优秀,但是,如同我们学语文最基本的目的是可以描述和表达,而不是掉书袋来卖弄知识。我们教编程的目的是是为了让孩子可以编程而不是考试。况且计算机科学中很多事物都难以进行准确的分类和定义,甚至根本没有定义。所以学习中要注意理解,而不是记忆。在教学的前期注意培养和保护孩子的兴趣,让他们可以顺利地学会用c语言表达自己的逻辑。等孩子的知识和智力发展达到一定程度,这时候我们可以在算法和知识细节方面对他们有更多的要求。其余知识点在此不做细讲,仅是抛砖引玉。
  最后,c语言是否是最适合青少年学习的语言呢?我不能回答说绝对是,这个问题从不同的角度出发,可能有不同的见解和结论。但不可质疑,c语言的特点奠定它绝对是一门优秀的适合青少年学习的语言。对比于一些常用的入门语言,pascal充满浓浓的学院风,Java的运行效率不优,Visual Basic的稚嫩,C#没有鲜明的个性,略显中庸……c语言自上世纪70年代辉煌至今,依然老当益壮。无从考证究竟有多少软件用C语言编写。但我们赖以生存的软件中确实大多数都是用C语言编写。随着时代发展,新的语言也不断被发明创造出来,目前新开发的软件中,尤其在Windows上,使用C语言的越来越少,其小弟C++、Java和C#正如火如荼。但是正确地学好C语言,却是学习这些流行语言的基础。让我们未来的主人在他们还年青之时就学会用c语言设计程序,他们必然能够更好地开拓出新的时代。