您现在的位置:幼教 > 家庭教育 > 幼儿家庭教育 > 智力开发 > 正文

漫谈孩子学习编程和写软件

来源:JHHY菁华浩扬 作者:王有财 2018-06-17 10:17:27

说两句

  应该是美国中小学即将开学的缘故,家长需要给孩子们选择周末兴趣班,这几天好多朋友问我,孩子们要不要学编程,更具体的说,要不要学习Python程序设计。孩子要不要学编程,的确是个好问题。就算没有朋友问,我自己也考过很多,也曾试过。在女儿读二三年级的时候,我教过她简单的Python和Java程序设计。很可惜,成效并不大,尽管我挑选了几个很有趣的简单数学问题,用计算机去求解,仍然不能引起孩子的兴趣。这就更让我进一步思考,到底该不该现在就教孩子写程序,如果教,该教哪一种程序设计语言,怎么教。

  我自己不是计算机科班出身,但是靠着科学计算混饭吃,能够熟练地使用C,C++,FORTRAN,Java, Visual Basic,MATLAB,PYTHON,Bash, GrADS, NCL甚至是AML写程序。大学期间,我正经八本上的计算机课,也只有C语言程序设计。用了不到一个月时间,我就把谭浩强先生写的《C语言程序设计》自学完了。通过这本书,我学会面向过程的软件开发方法。学期末,我就用C语言给我们班写了一个奖学金评选的程序。当时是九十年代末,C++已经开始成为潮流。写程序的人如果不会C++,是不敢出去吹牛的。我很喜欢吹牛,所以买了本C++程序设计的教材。C++比C语言丰富多了,我用了两三个月才学明白什么叫做面向对象的软件开发方法。我大学毕业的时候,用C++开发了一套人工神经网路的程序。在2000年,在好多国内的书店里,如果你问有没有人工神经网络方面的书,店员大多会让你去医学门类去寻找。所以,我那时候,作为一个地质系的学生,用基于人工神经网络的人工智能,去研究矿山稳定性,也值得大吹特吹了。自吹自擂这么多,拉回到程序设计的话题上,其实哪种语言不重要,关键是学会软件开发的方法,比如前面提到的面向过程和面向对象软件开发。

  当然,一个写程序的人必须要了解计算机的体系结构。我很幸运,从C语言开始学习编程。学过C语言的,很多人都很憎恨它,就算学过,一辈子也不会用C语言写一个超过100行的程序。C语言之所以招人厌恶,是因为它太接近计算机硬件了。作为一种强类型语言,也就是说,需要直接声明和定义变量的计算机语言,写程序的人必须了解,什么是整数,什么是实数,什么数有符号,什么数无符号。解决问题,我们必须搞清楚,实数需要小数点后几位的经度,整数需要几个字节。问题复杂了,需要分配内存,需要传递复杂变量,就要涉及地址和指针。把这些细节搞清楚,的确是需要花点时间学习计算机的硬件和原理。因为这个,和多人都望而却步打了退堂鼓。然而,对那些肯花时间钻研的人,一旦弄明白了底层细节,以后操作计算机就像是庖丁解牛一样,可以轻松玩耍。

  通过C语音学习编程,起点高,的确有点难。对很多人来说,就像是撞墙一样痛苦。可是一旦把墙撞破了,就可以把头伸进计算机的内部世界,能够享受把自己的想法转变成计算机程序的自由,最终可以驱使计算机替你思考。在我上大学的时候,除了计算机系的学生,肯去研究C和C++程序设计的人非常少。多数人都去学习如BASIC这样的语言。BASIC很方便,方便到变量既可以声明,也可以不声明,总之是无所谓,关系不大。灵活带来方便,也带来混乱。BASIC的程序,大都是乱七八糟,就像一盆煮熟的方便面,顺着哪根面条,也捋不出一个头绪。很多人把这个问题归咎于BASIC程序中的GO TO语句。在我看来,这多少是冤枉了GO TO。问题的主要原因是,那些从BASIC学习计算机程序设计的人,没有学会正确的软件开发方法。他们大多是图简单,图方便,图快,最后把程序搞成了涂鸦。回想一下当年我的同学,热衷短平快学习BASIC和Visual Basic之类编程工具的人,大多没有在软件一行走下去深入发展。相反,好多学习C,C++和Visual C++的同学,成了软件业的精英,现在坐拥豪宅若干。

  前面谈的都是历史,现在转到现实。现如今再没有人学习什么Basic和Visual Basic。短平快的软件开发,大家都选择Python。Python可以算最成功的解释型语言,没有之一,而是唯一。Python引人指出,大概有这么几点。第一就是,严格的程序书写规范。Python的作者深受Perl语言自由灵活书写风格之苦,要求Python的开发者,必须按照既定的规则,书写每一行程序,否则Python解释器跟你没完没了地抱怨,这样确保了Python代码有良好的可读性。因此,你上周写的程序,今天还能很容易地看懂。第二,Python程序既能面向过程,也能面向对象。什么是过程,什么是对象,如果你写不了200行的程序,没必要去敲破脑袋搞清楚。 第三,Python提供了丰富的基本数据结构,例如元组(tuple),列表(list),字典(dictionary)和集合(set)之类的的数据结构。对于C++的开发者,如果使用这些数据街头,需要学习复杂的标准模板库,要么自己去开发,总之是费时费力。而Python的用户,可以轻松使用这些数据结构带来丰富功能。 最后也是最重要的一点,Python有极其丰富的共享资源。对于一个应用Python的软件开发人员而言,一定要记住,你是在用Python而不是开发Python。对于任何一个常用的计算机操作,不管复杂与否,开发人员基本上都可以在网上找到免费的Python代码库。开发人员需要做的,就是开发尽可能简单的Python代码,调用这些代码库,完成自己的任务。

  Python容易不容易学?Python强大不强大?我的答案是Python很强大,但是我不知道对于小孩子来说,到底容易不容易学。如果没有任何数据结构的基础,我不知道怎么给孩子讲明白列表的工作原理。那些现成的Python代码库,真的既丰富又强大。有大人帮忙,孩子们可以轻松用Python写一个收发电子邮件的程序。可是电子邮件里的文字和图片,到底是怎样从这台计算机到那台计算机的,孩子们要是问起来,Python程序员应该不是很容易回答。随手抓来的Python代码库,让我们不必关注细节,直奔主题地开发程序,完成我们的工作。可是,我总觉得,孩子们学习计算机程序设计,是需要了解细节的。教孩子学习写程序,不应该是简单的然他们学会怎样用别人的代码搭积木,而更应该让他们了解每块积木是怎么工作的。我们大人用Python写程序,是因为我们只看重结果。孩子们学习写程序,更应该侧重过程。如果没有计算机基础,上来就学习Python,孩子再聪明,怕也只能是浑沦吞枣式地学习。在大人的指引下,他们能够写出小程序,离开了大人指导,他们还能走多远?我不是很乐观。

  相关推荐:

小升初试题、期中期末题、小学奥数题

尽在奥数网公众号

   欢迎使用手机、平板等移动设备访问幼教网,幼儿教育我们一路陪伴同行!>>点击查看

  • 欢迎扫描二维码
    关注幼教网微信
    gh_5735a1f9f07c

  • 欢迎扫描二维码
    关注奥数网微信
    ID:aoshu_2003

热点专题

  • 幼儿园教学课件:奇特的建筑
  • 幼儿教学课件:小鱼的梦
  • 河头幼儿园“帮水宝宝搬家”

[幼儿园英语课件]幼儿园英语课件:认识时间

[幼儿园英语课件]幼儿园英语课件:A Apple

幼升小

幼升小资讯

幼升小政策

幼升小择校

幼升小指导

学区房

幼升小真题

重点小学

上海小学

广州小学

深圳小学

成都小学

武汉小学

南京小学

北京一类幼儿园

海淀区幼儿园

西城区幼儿园

东城区幼儿园

朝阳区幼儿园

其他区幼儿园

幼儿园资讯

教师园地

幼儿园说课稿

幼儿园教案

教学论文

幼儿园课件

幼儿园教师心得

幼儿园评语

少儿教育

胎教

早期教育

入园必读

潜能开发

艺术培养

家庭教育

儿童乐园

科普知识

图书推荐

睡前故事

成语故事

童话故事

唐诗宋词

孕育指南

时尚妈咪

健康宝贝

美食厨房

趣味数学

健康饮食

专家答疑

-->