最近有些孩子家长提到这么一个观点:目前在计算机信息学竞赛中,能拿到一二等奖的学生都是尖子生,普通学生就算能拿到一些三等奖或者优秀奖,貌似也没有什么用。那么,是不是真的只有尖子生才值得学习编程,而普通学生就不值得去学习编程呢?其实这是家长对青少年学习编程的一种曲解,让我们来好好辨析一下。
首先,信息学竞赛不仅是选拔性的,也是素质普及性的。信息学竞赛当然是一种很优秀的编程比赛,它考察了学生们对编程中核心的部分,即算法和数据结构的掌握程度。在竞赛的过程中,学生们会学习各种前人总结出来的各类问题的解决办法,了解在编程中如何去对具体问题,进行计算机科学的抽象理解和数据模型设计,并在对于编程语言的掌握基础上去撰写出代码,从而解决竞赛中提出的问题。应该说,信息学竞赛的训练,确实对学习能力和学习时间有着选拔性要求。但另一方面,通过信息学竞赛的学习,能够让学生们熟练掌握编程语言,抽象设计数据模型,设计或灵活运用算法框架。这些知识和技能是前辈们总结出来的良好科学方法,是普通的学生也可以掌握,并且可以终身运用的技能。例如信息学竞赛中常用的算法里面,就有许多关于数值计算、逻辑推理、函数变化等内容,这些内容可以帮助孩子们理解日常现象、思考事物的逻辑合理性、理解生活中的物理变化,从而更好的帮助学生们面对生活和工作的各种问题,找到现成的解决方案,或者设计新的解决方法。对任何学生来说,即便不参与竞赛,这都是一种综合素质的提升。
其次,学习编程的范畴要远大于信息学竞赛的范畴。编程思维是一种充满逻辑和理性思考的方式,它更侧重于接地气的科学实践原则,也就是科学分析常用的:发现问题、分析问题、解决问题、得出结论和反馈,这样的科学探索方法。如果说信息学竞赛是在一个前人总结的知识和技能基础上的智力游戏,那么编程学习就是可以给予孩子们一个探索科学的思考框架和工具。智力游戏可以有赢家输家,但工具和技能是可以普遍赋予的知识和能力。我们在上算法课的时候,有一种方式就是希望孩子们提出自己想要解决的问题,然后去尝试编程解决它。通常孩子们都会提出各种各样貌似不可能的问题,例如在欧洲杯比赛期间,课堂上就有学生提出:我们能不能编程预测欧洲杯的冠*队伍是谁?一开始大家都认为这个问题是难以做到的,但通过编程中模拟算法的学习,逐步分析这个问题,慢慢大家理解了它。然后通过模拟算法的建模,最后编出了程序,计算出了各个队伍的获胜几率。这样的一种编程学习体验,是可以让孩子们获得非常良好的科学分析方法实践,从而为孩子们奠定一种对于主动发现问题、理性分析问题、动手尝试解决问题、获得结果和反馈的工作习惯。这样一种良好理性的工作习惯,将会帮助孩子们找到他们的目标和成就。
最后,编程学习不仅依赖于智力因素,更依赖于创意因素。正如很多技能一样,编程技能的高级知识,不见得应用面就比初级知识要广。一个普通的自动控制算法,也许比用高级的神经网络算法,在生活中应用的更有效果。所以编程学习,更难得的是发现生活、学习和工作中的应用场景,发掘编程技能能够帮助我们理解学习、解决生活中的问题、和提高工作效率的地方。我们有许多普通学生都有这样的创意,例如有学生就发现,在听写练习的时候非常麻烦,需要有其他同学或者家长来帮忙才能听写。于是这个学生就用python编写了一个可以随机听写语文词语的程序,这样就可以自己完成听写的练习了,确实非常巧妙的创意。应该说类似的创意,我们的孩子们都是随处可见的,只是孩子们缺少编程技能这样的可以去动手实现创意的方式和方法。如果我们能让孩子们掌握这种技能,相信一定能让孩子们更多的尝试实现自己的创意,去让生活更加具有乐趣。
因此,请家长们忘掉竞赛这些功利性的想法吧,多点让孩子们去发现世界的乐趣。掌握好编程这个现代社会最有价值的实践技能,让孩子们多一种可以改变世界、改造生活的工具。
朱敏
图灵编程学术顾问
Python首席教师
毕业于中山大学物理学系,18年IT科技从业经验。
-资深的云计算及人工智能AI技术专家
-中国CISP认证安全专家
-卡巴斯基认证安全专家
-广州市产业发展和创新人才
-广东省粤港澳金融委员会常务委员
-广东省初等数学学会委员
文理通识教育发起人,制作文理通识宇宙学、信息学等科普课程并在中小学现场公益授课。
数据科学(Python)课程
最适合儿童的编程语言课
从Turtle创意绘图到游戏兴趣启蒙
以项目式学习方法,零基础入门
最终达到熟练掌握Python语言
参加国内各大编程竞赛
帮助孩子凭借编程开拓新道路
信息学(C++)课程
真正的备战信奥竞赛编程课
教授编程赛事通用语言——C++
针对NOIP、USACO、CSP-J/S热门赛事
从零基础到复杂算法、高级数据结构
适合中小学学生初次学习编程
在信奥竞赛上无往不胜,不断晋级
扫