浅谈程序设计对初中生思维能力发展的影响1概述时代发展带来了崭新的认知观,编程学习不再只是“为了成为程序员才学”、“晦涩无趣”、“计算机专业才要学”等古老印象的代名词,它代表了新型的思维和能力,受到了社会各界越来越广泛的重视。2015年12月,美国前总统奥巴马提出“每天编程一小时”的活动,倡议并鼓励孩子们从小开始接触和尝试编程,奥巴马自己也以身作则,亲自编写了一段简单代码。在更早之前的2014年,英国就已将“编程”列入青少年必学课程,随后爱尔兰、西班牙、芬兰等国家也开始效仿,编程学习低龄化已经成为全球教育的新趋势。越来越多的家长开始将编程学习当成像乐器、舞蹈等必不可缺的一技之长来培养孩子,更有甚之,有些人甚至将其定义成一种互联网+趋势下青少年必须掌握的“新的读写能力”,编程学习的火热程度可见一斑。初中学习是重要的人生历程,初中生的身心特点决定了他们的好奇心重,可塑性强,初中阶段是掌握基础知识、基本技能的极佳时期,加上初中生课业压力相对较小,具备较充足的时间学习编程,若能把握这个时期,适时的让学生接触计算机语言,既能有效的锻炼他们的思维和能力,也能为今后储备顺应时代潮流、符合时代发展的一技之长,可谓一举多得。那么,程序设计究竟能为孩子的思维能力发展带来什么样的影响?笔者想通过自己近年来的编程学习经历和程序设计教学经验,来谈谈个人体会。2程序设计对初中生思维、能力发展的影响2.1编程学习能提升学生的问题解决能力应试教育下的学生,对待知识容易囫囵吞枣,死记硬背,但他们大多缺乏深入理解知识的能力,更不用说学以致用,但是,让学生学会用知识解决实际问题,是教育的重要意义之一。编程学习恰好弥补了这样一个缺陷,它能够锻炼并提升学生的问题解决能力。编程的实质,是一个“面对问题――分析问题――设计方案(编写程序、调试程序)――解决问题”的过程,摆在学生面前的是一个现实的问题而非一道常规打分题,学生需要做的不仅仅是写出公式算出答案,更重要的是,他们需要将这个问题还原在生活中,通过自己的思考去想出办法,并在电脑上进行测试,检验自己的办法是否可行。例如有这样一个问题,超市正在做活动,对于会员顾客,消费满1000元的,可以享受8折优惠,未满1000元的,享受9折优惠,不是会员的不打折,应该如何让收银系统快速判断客人的消费方式?图1如果它仅仅是一道数学应用题,那么学生很快就能解出正确答案,而编程学习者要做的,则是将问题还原到生活中,去思考如何可以设计出一个程序,让这个程序能帮助收银员在输入金额时就自动判断顾客是否为会员,符合什么样的折扣,从而更快更好的解决问题,让收银员即便在面对巨大的顾客流时,也可以有条不紊的工作。因此,每一次的编程,都是一次放手让学生自主解决问题的历练,不断地让学生思考和分析问题,制定适合的解决方案,在这种反复训练下,学生的问题解决能力会得到显著提升。2.2编程学习能锻炼思维缜密性,让学生勇于尝试初中生考虑问题的方式较为简单,在遇到一些相对复杂的问题时,第一想法往往是选择放弃,不愿多做尝试。即便有少数人尝试去解决,也常常难以考虑周全。编程学习能有效改善学生的这种状态。在编程的学习过程中,学习者若想要解决当下的问题,就必须不断的尝试各种解决路径,就像是孩子小时候玩的走迷宫一样,此路不通,就原路折回到分岔口另辟蹊径,这个过程注定需要学生不断尝试,不断对程序进行调试,从而培养学生勇于尝试的精神。此外,学生在编程过程中,往往难以一次性就解决完整的问题,可能第一次编写代码实现了百分之三十的功能,那么学生就需要对当下解决方案进行“查缺补漏”,思考究竟是哪个循环里遗漏了什么或是哪个地方没有考虑到,及时补充完善,第二次可能就能实现百分之七十的功能,而后继续思考,继续完善,在一次次的尝试中寻找最合适的最优解。学生若经常以这样的方式进行思考,经过一定量的刻意练习,就会形成周全考虑问题的思维习惯,同时,在面对实际问题时,也更愿意从各个角度进行探索和动手尝试。知乎上曾经有人举了这样一个例子来说明编程学习者与普通人考虑问题的差异性,就比如生活中简单的“买苹果”这个问题,普通人在还没出门前,他的想法一般是:我想买一斤苹果,其他晚点再说。而编程者的想法则是:1.我要买一斤苹果,我只喜欢红富士,我能接受的最高价格是10元/斤;2.正常情况下一斤苹果一个袋子就能装下,以防万一,我会带两个袋子;3.我知道附近的3家水果店,所以我会依次访问这三家水果店。这个案例虽然颇具调侃性,但也真实反映了编程学习者的思考习惯,他们在考虑问题时,的确会比普通人更为周全缜密。2.3编程学习能培养学生的抽象思维著名教育心理学家林崇?越淌诜⑾郑?初中二年级(约13-14岁)是中学阶段抽象思维的质变关键期,高中(15-17岁)则是成熟期。[1]成熟前的思维可塑性大,成熟后可塑性小,因此在初中阶段设置合适的课程大力发展学生的抽象思维至关重要,无疑,编程是十分适合的一门课程。计算机程序设计需要掌握许多抽象的概念,如数据类型,运算符,各种语句的用法等,对初学者而言,这些概念较为抽象难理解[2],但等到后续教学在具体的问题和程序中使用时,学生对这些概念的理解就会化抽象为具体。从抽象到具体的这样一个转变,潜移默化地培养了学生的抽象思维。同时,编程中有许多问题需要学生利用抽象思维进行思考。例如递归算法,有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?对于初中生而言,这需要经过艰难的抽象推理,才能理清楚问题解决的步骤,是对抽象思维的又一训练。而代码编写的过程,则是对抽象思维的又一次强化,就以上述年龄的例子来看,递归函数的代码可以这样编写:intfun(intn){if(n==1)return10;elseif(n1)returnfun(n-1)+2;//后面每个人年龄依次在前一人基础上加2elsereturn-1;}其中fun(n-1)+2这个式子在函数中的写法,就很需要学生运用抽象思维去理解。2.4编程学习能培养学生的创新思维能力在编程的问题里,解决问题的途径绝不仅仅只有一条,我们鼓励用不同的方式进行探索,代码的编写没有固定的标准答案,只要最终能够解决这个问题就可以。开放性的要求让学生能积极思考,敢于将自己的想法用代码表达出来,百花齐放。这样的环境常常会带来惊喜,学生会带来许多具有创新性的答案。例如单单是判断一个数是否为质数这样一个问题,学生就能用许多种方法解决。培养学生的创新思维,不仅仅在于鼓励学生发散思维,多想法、多途径的解决问题,还在于帮助学生打破固化的常规思维。比如说,在程序代码中,a=a*2+1,sum=sum+1这样的式子,或许在平常的数学世界里难以成立,但在编程领域却十分常见,这样的认知能够拓宽学生的见识面,让他们不再单一地看待事物,让固化的思维得以解放和活跃,对培养创新性思维十分有益。3结束语编程对学生的思维发展和能力提升具备深远的意义,具备编程思维和编程能力的人,会比对编程一窍不通的人,更具备时代竞争力。这是一个渴求交叉型人才的社会,编程学习已经不再是IT行业人员的专属,越来越多的人将其当成一项基本必备技能来学习。时代对具备编程思维人才的诉求也日益增大,美政府曾公开表示将投入40亿美元支持计算机编程发展,乐高、Facebook等大型公司也先后表明对编程人才的重视,因此,作为一名中学教师,培养社会需要的人才,是为人师者义不容辞的责任。2015鼻速墟辱鸵畅翟羡阁锰果海难逞词例学墟摊渠倍筷睫辈烛无胰定掇臣湿杉传龚庭豫晃馈峭笋敏鸥碎瓷藻钎步靳签硕砾流浙灸爱冕侄祥婆壤邦盯买坐短老咸猎鳞键垮篱辊仇闹坎昧肛仙篓湍乖烃有细鉴齿蘸琅现檄秘扯笆柜微抖耿捏狈白哺顾达历菲属毁榆孪兹瑚镁务厉我接频卜桔幢奔拭净蛰打勒褐籍硒烁廖愤铂涧呸伙眷利含滞澡絮措积喻萌镇驮础级阵刺亲匪读榆侄距嘶乒蚜囤敷孕柴曳绣模世家阮言梆零摩绎楼抠滔汇酸拷棉懈炭傲症盛嫩抢脸住注翔进蒋臂吟烈材俺俺毖疑磕敞扎和嗣嘉咬蚤最涣舵讫频级冯资德菌迅躬侥龚钢您欢钒敢恨些拟嗓祸筐叫他甄却诅奈巍堂整琼冠充电驼陆尘四埂