来源:JHHY菁华浩扬 作者:王有财 2018-06-17 10:17:27
我喜欢用Python,可是我心里总是隐隐约约觉得,Python不是一个给小孩子入门的计算机语言。当然,我也不想让一个孩子硬着头皮去学习C和C++。想来想去,程序设计可能是无法快速入门的。想靠着十节八节Python程序设计课程,就让孩子去研究人工智能,为申请大学加分的想法,是不切实际的。 在我看来,学习程序设计,还得从长计议。要是我列一个课程表。第一个必修课就是数学。理解程序设计的一个基本需求就是,孩子得理解数学中函数的定义。不管是面向对象还是面向过程,我们都会把相关的一组计算机操作组织到子程序(或者叫做函数)里。理解了数学中的函数,孩子们就可以学习面相过程的程序设计了。能写出几十个子程序(函数)构成的程序,才有学习面向对象程序设计的基础。有了一定的数学基础,第二个必修课就是计算机操作。好多孩子会在计算机上打游戏,却从来没有在计算机上发过一封电子邮件。编程的一个基础就是,计算机打字。孩子正确使用键盘和鼠标,也得点功夫。学会操作计算机,就可以真正接触程序设计了。好多老师,从集成开发环境(IDE)(比如说Eclipse)开始教授程序设计。不管学习Java还是Python,都是按照老师的指导,在IDE里输入程序,然后用鼠标按一下按钮,结果一下就跑出来了。一旦离开了IDE,孩子们一脸茫然不知道那里可以写程序,更不知道程序怎样变成可执行代码,并运行处结果。要是我来上课,一定从最简单的文本编辑工具开始。我会教孩子怎样打开命令行窗口(Terminal),怎样启动文字编辑器,怎样输入程序,怎样保存代码,然后怎样编译程序,最后怎样执行程序。
到底哪一种计算机语言最适合初学的孩子呢?我想我会选择Java。Java在语言要素和语法上,继承了C和C++,基本上就是一个C++的简化版。谈到课程设置,我想我会从数据类型,条件判断(IF语句),和循环结构开始,让孩子了解一个程序的基本构造:数据,判断,和循环。我不会着急让孩子学习类和面向对象的概念。相反,我会用半个学期,甚至一个学期的时间,让孩子学习面向过程的程序设计的理念。也就是说,怎样把一个复杂的问题分解成若干步骤,每一个步骤又通过一个Java的函数来实现。让孩子们学会,怎样把这些函数组织在一起,解决他们的问题。
想想看,我们为什么要写程序?写程序的目的就是为了解决问题。在写程序之前,我们脑子里要形成一个解决方案。这个方案,往往包括多个前后衔接的步骤,甚至有条件判断,还有重复性的步骤。 这些步骤,都可以通过程序中的函数来实现。用计算机求解问题,真正的难点不是写程序的过程,而是开发问题的解决方案。计算机代码,只不过是解决方案的计算机实现。用上半个学期,甚至一个学期,教授孩子怎样去利用计算机,探讨问题的解决方案,所用时间其实并不长。家长呢,应该认识到这一点。教授孩子写程序,其实是教授孩子用计算机来解决问题。面对相抵复杂的问题,如果孩子们可以设计解决方案,可以写出包括十几个甚至更多的函数的代码,那说明孩子们可以进一步提高了。我们可以随后教授孩子,怎样以数据为中心,进行面型对象的程序设计,开发更大规模的软件了。 当然这是后话,对于初学者的父母,完全不需要上来就考虑面向对象。
Python要不要学?要!不过是在孩子们完全理解了面向过程程序设计理念之后。有了这样的基础,即便不用Python里面的“类”,孩子们也可以写出像模像样的Python程序。如果孩子有了面向对象的基础,那么就可以更加容易地理解Python中的元组,列表,字典,还有集合等数据结构以及相关的操作(或者说函数)了。如果孩子有兴趣,也完全有可能应用Python的类(class)的组织代码,开发出复杂的软件。有了程序设计基础,孩子们可以更加深入地理解并有效地利用共享的Python代码库。那时候,他们用共享代码开发出的电子邮件收发工具,不再是简单地模仿。孩子们可以设置甚至改造共享代码,把他们的有趣的想法实现到软件工具里。我相信,经历这样的过程,孩子们可以真正地了解计算机以及程序设计。深入掌握,必然帮助他们触类旁通,以后学习人工智能,自然会有坚实的基础。
最后一句话:Python便捷强大,适合急功近利式的软件开发,未必适合孩子们入门学习。
相关推荐:
小升初试题、期中期末题、小学奥数题
尽在奥数网公众号
欢迎使用手机、平板等移动设备访问幼教网,幼儿教育我们一路陪伴同行!>>点击查看