分享

放弃画画选择计算机,这位女生说编程教会她的是思考方式

 长沙7喜 2017-01-11


点  正在举行的全球最大消费性电子展(CES)上,教育领域最大的爆款就是可编程机器人。编程教育为什么会这么火?今天,外滩君和大家分享卡内基梅隆大学软件工程学院在读硕士Ivy学习编程的经历。Ivy算是典型的计算机原住民一代,小学开始接触编程,之后一路参加各种编程活动,最后保送进入复旦计算机系。在她看来,编程塑造了她的思维方式,也给予她更多创造的可能性。编程是一种适应未来的教育,不仅必须掌握,而且应该从小掌握。


文 | 李臻   编辑 | 闻琛




回想20年前我用过的第一台电脑,安装着MX200处理器、4.3G硬盘外加128M内存条,搭载windows95的操作系统。

 

20年后的今天,我们抛开处理器不谈,光说硬盘和内存,随意买台电脑就有上百G内存,就连智能手机的内存起步都是16G。

 

的确,计算机的发展远比我们想象的要快,手机和电脑早已变成现代人的必备物件,而未来,必然会以一种更难以想象的方式到来。

 

但凡关注科技领域发展,有一些前瞻性的人,都能感觉我们正站在一个时代变革的“奇点”,科技如同下一个世纪的“英语”,你不能使用“机器”,可能就会被“机器”取代


这也是我们越来越重视STEM教育(即科学、技术、工程和数学教育)的原因,在今年PISA(国际学生评估项目)中,教育研究者们又一次把焦点放在了科学素养中。

 

美国在这方面已经采取了行动。未来5年,发展STEM教育也是美国教育的核心重点之一:把注重人文素养的博雅教育和注重科学素养的STEM教育联系起来,培养思维灵活,并具有批判性思维的人。

 

这种科学素养的目标不是让每个孩子成为一名科学家,而是让他们更具有创造力,能科学地提出问题,尊重数据,并具有逻辑思维能力见到Ivy之后,我似乎明白了一个具有科学素养的人是什么样的。


Ivy毕业于复旦大学计算机专业,第一次认识她是作为外滩教育CodeMonkey夏令营的助教。现在她已经正式进入卡内基梅隆大学攻读软件工程硕士学位。




在申请研究生的半年期间,她与小伙伴一起创业,制作了一款游戏门户的APP,从产品设计、用户体验,到后台程序编写,她全程参与其中。

 

她与我之前印象里的“计算机系女生”有点不同,似乎还有点害羞,接受采访时,Ivy坦言她实际上并不会修电脑,就连游戏也只是喜欢扫雷、数独、蜘蛛纸牌类型的。


但聊起天来,我发现,Ivy逻辑严密,用词精确,并善于独立思考。每问及数字有关的问题,她都会准确地告诉我,是哪一年发生的事情。

 

1994年出生的Ivy,第一次接触到电脑课是在三年级。当时有一款软件叫做“海龟作图”,因为从小喜欢画画,所以Ivy对这款软件充满兴趣,虽然画面色彩不够明亮,但当时看来,已经算得上有趣了。

 

“那个软件就是左边一个图形框,右边是写代码的地方,这个代码不是积木可以拖的,它也没什么颜色,但是你可以控制海龟的颜色、移动,然后就可以画画,大概就是这么一个软件,算是学校的启蒙教育。”Ivy告诉我。

 

这个过程让Ivy觉得很有成就感,也是因为这款软件,Ivy放弃了原本更擅长的画画,走上了计算机编程的道路。她认为,计算机编程的学习与艺术并不冲突,反而编程能创造出的结果更多。


每当完成一个图案时,就等同于把内心的想法传递给了计算机,由它来帮助你展现出来。而计算机掌握了思路之后,计算能力远比大脑强很多。”

 

所以,Ivy认为,每当我们遇到计算不出来的东西,可以让计算机来帮我们解决。比如小朋友想画一个图案,借助计算机能画得更好看。


更大一点来说,计算机的使用迫使我们去调整大脑,只要大脑思维流畅,就会得到想要的结果。

 

在学习编程的过程中,Ivy一直都是自发地进行探索,初中时参加了信息学奥林匹克竞赛,获得了福建省第一名。一起参加竞赛的同学组成了一个小型社团,一起交流,并积累经验。


私下里,她还会在网络中找各种各样的资源,每当发觉自己某块掌握得不是很好时,就会针对性地去搜这块的练习,或者看看别人是怎么解决的。

 

“当解决问题时卡壳了,就会去参考别人的思路,有时可能会发现别人的思路很棒,那个方向是你想不到的,再后来你碰到类似的题就会想可不可以用那种思路,举一反三的感觉。


在我们课堂上有提到要寻找事物的共同点,不同的题目可能包装得完全不一样,但它的实质内容、解题思路是类似的,看到题目思考的过程也蛮有乐趣的。”


1

编程对于逻辑思维能力的培养



Ivy认为,编程是一个偏理性的学科,在复旦学计算机时,相比那些小时候接受过计算机启蒙的同学来说,那些到了大学才第一次接触编程的同学在思考问题时可能会遇到瓶颈,而从小就受到启蒙,就会比较有逻辑一点

 

“当我们解决问题时,用语言描述跟写成程序是不一样的,有些人可以用语言描述这件事要怎么办,但是让用代码写出来时,他会突然觉得为什么会这样子,写到代码里就会觉得这件事情不是那么通顺。”Ivy说。

 

我们常常会觉得程序员比较木讷、语言表达能力不足,但Ivy说,实际上是因人而异,程序员确实不会像文科生那样出口成章,但在思考问题时却更具有逻辑性。这不是指说话有文采,而是说话的方式更有条理性。


Ivy举了一个例子:


“我在进入卡内基梅隆研究生之前有做一些创业,做一些产品设计,在跟负责市场的人交流产品问题时,发现他的想法不够严谨,比如说用户使用你的产品时会有哪种反应。


因为我常年从事这个,每种反应我都会考虑到,所以想事情会比较全。有些东西他可能一下子想不出来要怎么解决,但是我可以把很长一段逻辑都给他说清楚。这是因为在编写程序时,没有模棱两可的语言,程序语言就是确实可行的指令

 

我们会觉得孩子出口成章是件好事,但是现在更多的问题则指向学生在作文写作中的逻辑缺乏。编程作为一门科学素养,实际上让孩子的思维更严谨、更有逻辑。

 

Ivy也肯定了这一点,她认为编程对于她的严谨性和思维能力确实有帮助。因为在程序里面需要考虑到输入的是什么,它可能有各种各样的情况,还会有一些边界,这都是设计程序的时候会考虑到的问题。

 

这和平常面对问题的时候一样,Ivy说,“比如说你办一个活动,要考虑到活动的每一个小细节。你整个活动的流程应该是有逻辑的,而不是七零八落的,这些和在程序中所用的思想完全不矛盾,它可以帮助你有一个更好的想法和思路。”



2

程序语言是通用的,重点在于创造力



Ivy学习编程后接触过很多种程序语言,比如最开始的时候她学习pascal,后来写C++、 C#、Java、python 等等。她发现程序语言就是一种基础语言,虽然这些语言特性不一样,但基础语法是类似的。

 

当我们掌握一种语言之后,就会发现,编程的思路是一样的,它的语句就像每一个小积木块,这些积木块在每一种语言里起到的基本作用是一样的。

 

大致来说它们都有一些最简单的基础语句,举例来说,“比如说像少儿编程启蒙软件Scratch里控制角色移动和转向的语句,就像语言学里的一个简单句,把这个积木块拖给一只猫,那就是猫走多少步,它就是一个只有主谓宾的简单句。”

 

“有时它也有可能是一个复合的从句:如果……那么……。又像如果……成立,那么……否则……,就是一个再复杂一点的复合句。还有循环语,它在Scratch里就是嵌套的积木块,意思就是把某样代码重复执行。”

 

这些语言可能跟中文不是那么像,它更像英文,但是Scratch里有中文,基本上现在大部分高级程序语言都和英文语法很相似,而且它的句型没那么多,只是几种句型组合叠加,怎样使用,发挥不同的效果。

 

当我们学会这一种编程语言时,可以更深入地创造。这就更像一开始说到的,编程可以带来无限的可能性



▲ 用Scratch画出七色花

 

“可能你喜欢画画,愿意用Scratch来做一些图案;有人喜欢音乐,利用编程可以做出更好的电子音乐;如果喜欢游戏,你也可以去创造一款新的游戏;当然最简单的你可以用它来计算数学问题。”Ivy告诉外滩君,“编程带给我们的是无限的可能。”

 

Ivy在gap year的半年创业里,就做了一个类似于游戏门户的App,这是她的一个尝试,因为她希望不仅仅用编程来完成学习任务,而是可以去做一些更为实际的事情,比如说做产品之类的,从产品出发,设计整个代码的逻辑。



3

游戏形式的Scratch更适合孩子的编程启蒙



Ivy的计算机启蒙是通过一款海龟作图的游戏,因此她认为,这种游戏的形式更加适合小朋友学习编程。

 

说到Scratch大家应该并不陌生,它是一款少儿编程启蒙软件,由MIT媒体实验室终身幼儿园小组(Lifelong Kindergarten Group)开发,该小组还开发了适合5-7岁的孩子学习编程的ScratchJr。Scratch可用来设计动画、游戏等创作,开发者还可以把程序分享给其他人。



▲ 用Scratch编出“三打白骨精”的情节

 

与之前外滩教育引进的CodeMonkey不同,Scratch可以让孩子更加自由地发挥,它是写好很多程序的小模块,把所有模块跟堆积木一样堆起来,成为一个程序。

 

曾作为CodeMonkey助教的Ivy说,“之前我们做的CodeMonkey是给孩子布置任务,他们去思考该怎么解决。而Scratch则会让孩子有更多的想象空间和创造空间。”

 

另外Ivy还提到,“Scratch有中文版本,所以孩子对指令的理解会更容易,不需要学英文的指令,而且它是一种叠积木的方式,这就等于在图形化的界面里,小朋友不需要去手动地输入一些代码,而是通过拖动的方式来拼接这些代码,做自己的创意。”

 

在这些基础知识的训练里,Scratch会给出一些一定要完成的任务,但是最终目的是鼓励大家用基础知识来完成任何想要完成的东西。

 

Ivy给外滩君举了个例子,讲解如何操作:

 

“Scratch里有一栏分类,每个分类底下有积木块,就像乐高积木有不同形状的积木,这些积木可能是长方形的、菱形的,每个都不一样的,就像语文里的名词、动词、形容词,每种形状对应一种词。


拼的时候就跟搭积木一样,各种形状要对应,这些积木才能接起来,你要做的就是用这些积木块来完成你想做的事情。”

 

Ivy利用Scratch,做过最简单的一个游戏就是打地鼠,她设计让地鼠从洞里随机地出来,使用者用鼠标点击,点击后会做出反应,地鼠就会缩回去,这用很简单的一小段代码就可以实现。



▲ 打地鼠

 

孩子需要做的就只是去理解,因为Scratch是一个个中文文字的积木块,所以只要理清思路,把自然语言变成程式化一点的自然语言,就可以把积木块搭成功。

 

在这之后,只需要点击播放就可以看到想要的效果,对效果有什么不满意可以直接进行修改,修改之后再预览,直到调到自己满意为止。

 

Ivy说,因为效果可以实时在旁边显示出来,所以Scratch很直观、很图形化,这也是比较适合小朋友学习的原因。


它不像正式的编程语言只有一个文本框的界面,只能打代码,小朋友不知道自己写出的代码会产生什么效果、也很难去找出自己的错误在哪里,需要一行行地去调试代码。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多