冯哲
摘 要:随着计算机、智能手机的普及,软件对人们日常生活的影响日益增大,越来越多的人意识到需要学习和掌握计算机基础知识、学习一些常用软件的使用技能、甚至能学会编程。然而大多数人的理解存在误区,认为做网站写软件是专业人士的事情,要上大学读计算机专业才能学到的本领。传统的青少年素质教育中,编程能力的思维训练还没有受到足够的重视。本文通过自身学习软件编程的亲身经历,总结了一些思维能力培养方面的心得体会,希望对致力于提升软件编程和算法设计思维能力的青少年有一定的借鉴作用。
关键词:程序;算法;思维训练;计算机辅助学习
中图分类号:G636.6 文献标识码:A 文章编号:1671-2064(2018)21-0224-02
1 编程其实不神秘,但有多种形式
编程,也就是程序设计,人们通常想到的是0和1、二进制、十六进制,想到C、JAVA、PYTHON、人工智能、黑客、病毒等概念。数字化时代,代码的世界丰富多彩。每一个领域都有科学家对其做深层次的研究,每一个领域都能细分出很多研究方向,穷其一生的努力也未必探索到尽头。
但是,编程思维其实非常接近我们的生活[1]。例如,在天猫购物的场景:在天猫网站选好商品后放入购物车,然后付款。作为消费者用户的你,已经完成了第一个阶段性的工作,可以继续做别的事情。第二天或者过几天,你会收到菜鸟商铺的短信,通知你去领取快递,短信还有菜鸟超市的货架信息等。你到了菜鸟超市,报货架号码和名字或者电话号码后,超市店员会找对应的快递并交给你;你确认快递是否正确、包裝是否完好并签收,然后拿回家里,开箱检查、验收,这样就圆满完成了一次网购。该过程隐含编程中的许多概念。例如,完成付款后继续做其他事情,就是编程中的多线程概念,分时多任务处理。收到菜鸟超市的短信后的一系列行动,相当于编程中的回调,或者事件触发。菜鸟超市根据货架编号找到你的快递,这就是检索或者叫数据库查询;店员问你名字或者电话号码是网络安全,如果有不止一个快递同时领取,则出现了循环。如果发现包装有破损,则可以拒收或退货,这就是抛出异常,出现了分支流程。
任何自动化系统都是从实现系统中模拟和扩展出来的,包括人工智能和机器学习的模型。同时各种应用程序有成千上万的形式,有庞大的系统,也有固化到小芯片的程序。例如有大到10多亿用户的微信系统、也有小到闹钟的闹铃程序。
现代人对上述网购例子都很容易理解,但是并不是每个人都能将这个例子抽象出模型以及设定出算法。不过青少年就有条件由浅入深地开始训练这样的思维。
2 中学生的编程思维训练对学习的促进作用
中学生已经有足够的好奇心和智力条件,应当开展适当的编程思维的训练,只要方法得当,不仅不会浪费时间,还会对学习有促进作用。根据自身的经历本人推荐三个工具,分别是PCLogo、Scratch和GeoGebra。
PCLogo是经典的青少年学习编程的工具,已经在中小学教育中普及多年,很多城市还会定期举办Logo程序设计大赛。该工具俗称小海龟作图,只有几组简单指令。比如,换笔控制粗细、抬笔落笔、换颜色、前进后退、转动指定的角度、回原点、重复一组指令等,简单易学。现在还有网站可以在线设计PCLogo程序,网址为 https://www.transum.org/Software/Logo/。例如,如下语句可以做出很漂亮的花朵:
repeat8[rt 45 repeat 7 [repeat 90 [fd 2 rt 2] rt 90]],见图1。
Scratch是麻省理工学院的名为“终身幼儿园团队”(Lifelong Kindergarten Group)的软件团队的作品[2]。6岁以上的孩子就能用来制作小游戏和动画,只需要拖拉拽就能完成程序的制作,甚至不需要使用键盘。相比logo小海龟作图工具画出来的、线条组成的图形,Scratch制作出来的作品具有图片、动画、声音、键鼠可控制等特点(如图2所示),能更好激发同学们的学习兴趣。
Scratch程序将指令10个类别(如图3所示),每个类别有不同的颜色。用颜色进行区分的程序,看起来更清晰、更直观[3]。控制部分包含了条件判断、分支处理、循环等元素,虽然没有看到代码,但是已经包含了基础程序设计中的大部分概念和技巧。最难能可贵的是,每一个修改都不会破坏程序的完整性,所见即所得,随时可以运行,这和正式的、代码类型的程序调试很像,对培养青少年的逻辑思维能力很有帮助。
最后介绍GeoGebra。其侧重点是几何画图的制作,既有拖拉拽的方式,又有表达式的修改方式。两者可以互补,点线面都有坐标和方程,对数学的曲线方程、几何作图和空间想象力锻炼都非常有好处。如图4画出三角形外接圆及BC边上的高。
3 结语
身处信息时代,掌握了顶尖信息技术就掌握了未来[4]。计算机编程看似高深,事实上并非如此。本文通过自身学习软件编程方面的经历和体会,希望能够帮助青少年提升软件编程和算法设计思维能力。让我们开启程序设计之旅,遨游在那个奥妙、神奇的天地中。
参考文献
[1]沈兴漾.中学生“程序意识”教育初探[J].中学教学参考,2010,(15):121-122.
[2]张波.从 Scratch 开始——浅谈初中学生编程思想的培养[J].考试周刊,2014,(5):121-121.
[3]高红旗.浅谈Scratch环境下学生信息技术能力的培养[J].新课程导学,2015,(13):14-14.
[4]白羽.基于Scratch信息技术教学对小学生发散思维能力的培养研究[J].学周刊,2016,(27):14-15.