即使不学编程,你也要了解计算机思维 (转载)

计算机已渗入到我们生活的各个方面,生长于互联网时代的一代甚至被称作“数字原住民”。对他们而言,会使用计算机已是基本生存技能,了解计算机运作背后的逻辑,也就是计算机思维也变得非常必要。计算机思维有哪些特征?什么样的计算机语言才是优美高级的?《纽约时报》的这篇文章能让我们对此有所了解。

加州大学伯克利分校的Daniel Garcia老师为非计算机专业的同学设计出了一门名为《计算机的美与乐趣》的课。在这门课里,Daniel解释了一个非常重要的概念——抽象化。

他说,以奶昔为例,“你去上《烹饪的乐趣》这门课,因为你想做草莓奶昔,但是你不会专门去找‘草莓奶昔’这门课”。奶昔会有配方,这门课会指导你添加你想加的冰淇淋、牛奶和水果。虽然早期的烹饪书对草莓奶昔、树莓奶昔和蓝莓奶昔会有不同的配方,但是他认为最后肯定有人会问“为什么我们不把这些不同的配方融合成一个奶昔配方?”

Daniel说,“抽象化的意思就是隐藏细节”。这要求我们可以识别模式、将复杂的东西提炼,并形成精确清晰的概括。

抽象化以及计算机科学领域里的其他想法都又酷又有用,能激发人们的求知欲。很明显,电脑已经成为人们解决问题不可或缺的伴友,但是熟练操作软件还远远不够,了解隐藏在电脑魔力背后的东西现在看起来很重要。

计算机思维:从一般到精确,再到一般

美国公共广播公司位于波士顿的分站正在为3-5岁的孩子制作一档节目。在这档节目里,三只卡通猴陷入困境,需要孩子们“通过应用计算机思维帮它们从混乱中解脱出来”。

计算机思维并不是一个很新的概念。人工智能领域的前沿学者、MIT教授Seymour Papert,早在1980年,就已经使用这个术语来展望孩子们如何在未来使用电脑来学习。计算机思维主要包括识别模式和顺序、创造算法、设计用于发现以及修正错误的测试,把一般浓缩为精确,把精确拓展到一般。

正如达尔文进化理论里解释了政治和商业,在微软负责基础研究的卡耐基梅隆大学前教授Jeannette M. Wing博士针对计算机理念的广泛使用进行争论。她在一次采访里说计算机思维不仅可以应用于思维,“我们也可以提升日常生活效率并且让我们的压力变得小一点。”

她说,计算实践有很多的应用。比如,把困难的问题解构成我们所知道的方式去解决,观察时间和空间里的平衡问题以及流水线问题。

我们可以看一下自助餐的流水线。“当你去一家自助餐厅吃午餐,你会在第一站看到刀叉。我觉得这个真令人生气,它们应该是最后一步。你不应该拿着盘子的时候还要去拿刀叉。”Wing博士曾把小孩子收书包看作是电脑缓存,她认为自助餐的低效是对逻辑思维以及顺序的错误运用。

计算机思维可以辅助一个基本的任务,比如策划一段旅行——你可以把它分成预定机票、预定旅馆、租车这几个步骤。计算机思维也可以用于“像身体保健或政策制定这类复杂的东西”。我们只有识别次问题以及描述这些次问题与主问题之间的关系,才可以完成目标工作。Wing博士说,“一旦你有了一个好的接口,你就可以忽略剩下问题的复杂性。”

将计算机思维运用于其他学科

Alexander Torres是一名专业为英语的斯坦福大学高年级学生,他注意到学校和谷歌公司的相似性吸引了所有人,但是很少有学生去听计算机的课程。他也是其中之一,但是他说“我不认为我丢失了一些技能”。在争取学位的过程中,我锻炼了批判思维、分析能力以及有逻辑的争辩。“当你分析狄金森、惠特曼或者梅尔维尔,你不得不剖析他们诗句里的每一句话,然后再把他们综合起来看。”

没有一项可靠的研究显示计算可以使一个人更有创造力或者更有能力解决问题。研究教育与计算机的佐治亚理工交互计算学院的教授Mark Guzdial说,除非一些事情被明明白白地教,否则计算技能并不能让你更擅长某些事情。“你没法证明计算技能的消极面”,但是在长达十年的研究中,没有人发现电脑技能是可以自动转移来解决其他问题的。

另外,他还补充说,因为同样的原因,人们应该这样去认识生物、化学以及物理,“理解电脑在生活中的不同应用有很多意义。”越来越多的人在他们的工作里必须要做编程,即使它只是微软excel。教授说“用电脑解决问题每天都发生在我们的生活里”,如何能让更多人获得电脑技能,是一个很有趣的挑战。

计算机语言需要简约优美易学

三月的一天早上,布朗大学计算机科学中心。Brawner 把一个学生的家庭作业投影在屏幕上。他问,有人注意到问题了吗?没有一个***科系的学生举手。最后,一个女生说:“centimeters”和“kilograms”可以简写。Brawners说,可以,但是不够。

Brawners打破了沉静,然后指出这一长串的代码已经触碰到了屏幕边了。课堂一阵骚动中,他重复输入反斜线然后点击“返回”,这可以将符号变成整齐的块。对一个机器来说,这也许就是指令,但是计算机科学家很在乎视觉的美感。Brawner一边删除重复的指令,一边说,“不论何时我们定义衡量,我们希望美感在代码之上。”之后,他又布置了一个新的作业任务:写一个程序来用电脑玩石头、纸和剪刀。

Mili Mitra是主修公共政策和经济的低年级学生,她把电脑放在膝盖上,说她在一年前从来没有考虑过这门课程。但是看到小组研究项目总是给那些有专业电脑知识的人去做,Mili决定“不想这些项目让别人接手”。她已经学会了写基础的代码,以及从网络中提取出数据来分析她感兴趣的东西,比如,地缘亲近如何塑造联合国大会的投票模式。

尽管Mitra发现和电脑的交流就像和一个刚学步的小孩解释问题,她还是觉得这门课能够逐渐灌输一种习惯——“让学生们一步一步走,然后寻找出解决方案。”她承认自己是不耐烦的学习者:“我会往前跳。但是在计算机科学专业里,你没有选择。如果你错过了一步,你就会弄乱所有事情。”

“Block”就像Scratch一样是一种编程语言,由MIT媒体实验室于十年前公布。Block会把文本字符串隐藏起来,这些文本字符串就像电脑键在疯狂运行一样。这使得代码看上去不那么令人害怕。

你可能会从菜单里选择然后拖出有颜色的空格而不是用键盘字母和一些符号。这些有颜色的空格上写着“say( ) for( )secs”或者“play note( )for( )beats.”颜色和形状分别与“声音”和“动作”两个种类相对应;这些空格可以用拼图来填充以指挥说明。学生们用这个编程语言时,会说,来,设计一个游戏。

一个人不需要成为一个数码Doolittle博士,然后熟练掌握生硬困难的编程语言,比如Java或Python来编码。Block语言省去了记住指令的需要,这对电脑语言会有不同程度的依靠,因为block语言“按照你想的那样去读就可以了。”Garcia博士这样说道。伯克利课程的学生用“block”语言Snap来做作业——直到最后两周,他才教Python,这样他们就可以去上更高阶的课程。“我们会告诉他们,你们已经知道如何去编程”,Garcia博士说。因为步骤都是一样的。

“数字原住民”的生活

在Eliot-Pearson儿童学校一个通风的幼儿园教室里,在塔夫茨大学儿童学习和人类发展部门,孩子们用真实的木块来编程。儿童发展和计算机科学的教授Marina Umaschi Bers发明了带有条形码的木块。条形码上会有一些指示,比如“向前”、“旋转”、“摇动”。这些指示可以用来为机器人编程序。这些机器人就是一些小小的,有内置扫描仪以的转轮推车。通过给木块进行排序,然后扫描他们。这个程序就可以完成。每一个程序都会以绿色的“开始”木块开始,然后以红色的“结束键”结束。

小孩子学习编程已经成为一种新潮的教育方法,伴有很多玩具以及应用程序,比如Bers博士的积木。Bers和MIT合作开发了block语言 Scratch Jr,对宣扬编代码非常狂热。她说,学习机器的语言就像写作被认为是学好外语的基础一样。“你可以用很多表达方式写一首爱情诗或者写一张生日卡片”,“你不仅仅是在识读,你也在生产。”

Bers博士的同行评议研究显示,在学会为机器人编程序后,孩子们能够更好地为图片故事排序。她说,甚至有传闻,当老师们让孩子列出刷牙的步骤,他们仅仅知道几个步骤,“但是在接受完编程训练后,他们就会列出15-20个刷牙步骤”。

Bers博士把计算机融入小孩子们非常熟悉的活动里,比如,讲故事、跳舞或者艺术创作。最近的一个早上,塔夫斯学校的孩子们对一个问题感到困惑:一个机器人如何庆祝春天?

一个卷发小孩Hallel Cohen-Goldberg说,“他去跳舞,然后假装自己淋湿了”。

Solina Gonzalez用马克笔画了一个棕色、蓝色和红色的圈,然后透过粉色边框的眼镜冷静地看着,说:“他跳了个棒棒糖舞蹈。”Solina的伙伴,Oisin Stephens对Solina捆绑在木块上的啤酒棒棒糖画很担心。他说“机器人是不会识读这个的”。

当孩子们跪在地毯上时,他们可以执行计算机科学里的一些概念,比如,把指示分解成有序的指令,测试然后调试。一个团队使用“重复”和“停止重复”的木块,这样形成一个程序“循环”,这一串指示会不断重复直到程序的特定条件达到了。

和机器的对话就像孩子玩的游戏一样这种想法或许是一种飞跃。但是孩子们在排列积木时,Bers博士在和孩子们聊天,孩子们很难注意到他们是在编代码。“他们说,‘嗯,我不是在编程’”。

不管是有意识还是无意识,下一代可能毫不费力地吸收计算机思维技能,并且处在一个数字原住民的进程中。

转载自: 小花生花溪

你可能感兴趣的:(即使不学编程,你也要了解计算机思维 (转载))