中科院武延军:少儿编程纳入中小学课程,为什么有必要?

2021-01-09 15:21:06


12月初,《关于政协十三届全国委员会第三次会议第3172号(教育类297号)提案答复的函》公布了,对提案中建议的“推动编程教育纳入我国基础教学体系”进行答复,称将把包括编程教育在内信息技术内容纳入到中小学相关课程。从而帮助学生掌握信息技术基础知识与技能、增强信息意识、发展计算思维、提高数字化学习与创新能力、树立正确的信息社会价值观和责任感。

少儿编程被纳入中小学课程的必要性这个问题,中科院软件所武延军给出了答案。

1. 目前高水平软件人才极其短缺,在中国也是如此。虽然软件从业人员基数较大,但是真正的高水平程序员一才难求。

去年年初,IEEE Spectrum( IEEE 综览杂志)上的一篇论文对中国、印度、俄罗斯和美国四个国家的计算机科学(CS)专业的学生水平进行了比较。结果显示,美国处于领先位置。现实情况也是如此,国内大型IT公司长期面临着国内高水平人才供给不足的问题,不得不把目光投向硅谷,通过高薪引入领军人物。


23b992ca77a2d76d4a5d504fa521842a.jpg


一个高水平的程序员必须积累足够长时间的编程经验,特别是在计算思维和架构设计上,要从小就养成良好的习惯。从“HelloWorld”的简单程序,到操作系统、编译器这样的鸿篇巨著,需要无数程序员的努力。参与其中也同步收获了丰厚的市场回报。例如比尔盖茨、乔布斯、扎克伯格都曾经热衷于编程。

2. 编程能力培养并不会让人的思维僵化,反而会培养人有意识地把僵化、重复性工作用机器去实现。

我们惊叹于SpaceX猎鹰火箭的自动返回和太空舱自动对接,大狗机器人的灵活,伐木锄草农机的高效。而这些背后,都是程序化思维实践结果。

把一件复杂的任务分解再分解,把一些重复的模块合并再合并,把所有能够自动化的流程抽象成程序,把所有能够工具化的功能沉淀成工具。这就是编程能够带给我们的思维习惯。

为了同样的目标,花费同样的努力,人和人在成就上为什么会有巨大区别?很大程度上在于有些人能否把重复的、不需要创造力的事情交给机器去完成,而把更多时间投入到关键的、需要创造性突破的事情上。

编程能力不仅仅反映的是计算机专业能力,也反映了对复杂运筹学的实践能力。如何安排时间,如何调度资源,如何并行任务,如何防范风险。

3. 编程能力的培养越早越好,因为关系到一个人将来对机器和AI的掌控能力。

小孩子在很小的时候,往往喜欢做一些重复的事情。但作为教育者,不能让孩子在简单的事情上追求满足感而长期重复,而应该在某个技能得到巩固之后逐渐提升难度,引导孩子认识到简单重复的事情可以交给机器,然后站在机器的肩膀上去冲刺下一个挑战。AI正在为我们的生活提供越来越多的便利,但人类要做AI的主人而不是相反。

4. 编程对掌握其他学科具有重要的辅助作用。

当前任何一个行业都离不开软件。正是长期把软件与行业割裂的思维惯性,导致我们国家当前在工业软件(例如EDA、CAD、CAE等软件)领域基础薄弱,受制于人。工业软件对于工业行业的意义在于把专业知识(Know How)沉淀为一行行的代码,使得这些知识更加精确,也更加容易自动化,最终形成庞大的软件工具,提升行业的生产率。

熟练掌握编程的能力,对于身处任何一个行业中的人,都带来了独特的优势。一些行业中复杂繁琐的事情,也许通过几行代码就能搞定。这种解决问题的能力,对于任何人的职业发展都是加分项。