来源: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,孩子再聪明,怕也只能是浑沦吞枣式地学习。在大人的指引下,他们能够写出小程序,离开了大人指导,他们还能走多远?我不是很乐观。
相关推荐:
小升初试题、期中期末题、小学奥数题
尽在奥数网公众号
欢迎使用手机、平板等移动设备访问幼教网,幼儿教育我们一路陪伴同行!>>点击查看