「计算思维」第七话 | 学校的传统编程教学与“计算思维”的区别

之前几话一直在介绍借助 Wolfram 语言孩子们能够很快学会自己创造代码,也能够很快理解计算思维的要点。

而事实上,学校的传统教育中本就包括编程教学,但与 Wolfram 语言教学相比传统的编程教学似乎收效甚小。这是为什么呢?

让我们来听听 Stephen Wolfram 大神对此怎么说的吧!

 

 

温故知新直升机:

第一话:得“计算思维”者得天下

第二话:当孩子在敲代的时候,他在想什么?

第三话:你需要知道的关于 Wolfram 语言 的一切

第四话:“计算思维”如何与现行教育接轨?

第五话:为什么 Wolfram 语言是“计算思维”的入门首选?

第六话:老师们应该怎样传授计算思维?

 

写代码与计算思维的区别

感谢阿曹、菜根谭、顾天予和翼年的倾情翻译

怎样教授“计算思维”?

第七话

该部分中你将了解到:“写代码”与计算思维的区别,传统的编程教学是怎样的,传统编程教学与 Wolfram 语言教学之间的关联。

 1、究竟什么是“计算”、“编程”?

在过去的几年我们一直谈教“写代码”。“写代码”跟计算思维不同。就像手写、打字和写作的关系。通常情况下我们需要手写或打字才能产出一篇文章,但这却不是核心。那么我们该如何教授“写代码”?

在 Wolfram 语言中,人们用计算思维规划自己的想法,并尽可能地在 Wolfram 语言中转换成代码。 一些简单的案例中用英语可以十分简便的直接指定一个需要实现的东西。但通常人们都是直接在 Wolfram 语言中进行写作,这意味着某种程度上一个人不是写代码,就是在编程。

这是一种较大多数编程语言更为高级的编程。这也是为何它能更为广泛的应用,且被大规模应用于教育领域的原因。

 2、传统编程教学

那么它与“传统的”编程教学有何相关呢?现有两种编程教学:一种是“高中版”;另一种是“小学版”。

高中版更多的是 C++和 Java。小学版更多的是 Scratch(一款由麻省理工学院设计开发的一款面向少年的简易编程工具)等图标的衍生编程。即使是美国最先进学校里以技术为主要学习的孩子,也很少真正学过正式的编程知识。

那当他们在高中开始学习“编程”的时候,他们能学到什么?虽然存在许多语法细节,但其主要概念往往是条件、循环和变量。许多人会浪费时间去思考计算。尽管这些概念是低级计算机语言的一部分,但这不是计算的核心,通常在计算思维中也能很好地展现出来。

什么最重要?实际上唯一最重要的就是所有能被以计算形式表现出来的方面(文本、图像、网络、用户界面等等)。函数、列表和一个人的知识、通用计算概念也很重要。

但问题在于 学校教的不仅不是计算思维,甚至也不是编程! 条件语句、循环和变量是初代计算机语言(出现于 1960 年代)的核心。今天的计算机语言(像 C++、Java),有许多更好的方式来管理大量代码。但其底层的计算结构与 1960 年代的语言十分相似。所以上孩子通常输入的代码很少,到最后可能就只是像 1960 年代那样的处理计算。

 3、Wolfram 编程教学

Wolfram 语言是一个现代化的语言。 把它放到 1960 年可能完全不能用:当时的电脑容量不大运行也不流畅,也没有云端能存储大量的知识库。

但那与循环、条件及变量有什么关系呢?它们都存储于 Wolfram 语言中,只不过它们不是前端的中心概念。在我的《浅论》(Elementary Introduction)一书的第 38 章中,在我讨论到给变量赋值之前,在我讨论完将复杂的基于知识库的应用配置到网上之后。

假设,我们想做一个前 10 个平方数的表。在 Wolfram 语言中可以轻松做到:

 

但假如一个人用 C 语言做的话,大致会是下图这样:

 

非程序员也许会问:“这些是什么东西?”其实就是处在一个较低的水平确切告诉计算机要做什么,而不是直接说出我们想做的事。我们要告诉它分配内存来存储整数 n 的值。比如从 n=1 开始,且保持递增到 n=10。然后每个数都告诉计算机要输出其平方等等。

 4、循环、条件语句和变量的作用

现在的关键是:循环、条件语句和变量不是计算的重点;它们只   是针对低级语言的特定执行细节。 我根本不赞同别人说在清晰的循环、条件语句和变量的帮助下,孩子更容易理解代码做了些什么。今年有些转变,人们在日常生活中开始更普遍地接触计算和计算思维。但目前为止和孩子谈论循环、条件语句和变量反而更会让他们更难理解计算的概念。

那么学习理解循环、条件语句和变量有用吗?当然!它们是计算和计算思维的一部分! 虽然那不是最重要或是入门的那部分。如果一个人开始用图像、网络或其他来谈论计算,那根本不需要循环的概念。

(上图为 Scratch 青少年编程工具)

Wolfram 语言的一个重要特征是通过覆盖常用的计算思维,它集成了大量不同的计算范式。有函数程序编程、程式化程序编程、符号编程、机器学习和实例编程等等。当人们学习 Wolfram 语言时,他们会接触到广泛的计算概念,非常便于融会贯通。

但人们在 Wolfram 语言里学习后想在低级的 C++或 Java 里编程怎么办?我碰到过几次:人们用这些低级语言很容易能编出优秀的程序,但同时他们还会抱怨“竟然要自己分配内存!”“原来整数大小是有限制的!”等等。

从 Wolfram 语言过渡到低级语言看似容易。但反过来却十分难。所以教那些不懂编程的孩子计算思维反倒容易,他们会很快能懂这个概念,而且并不需要忘记所有东西都要转化为循环和条件等。

 5、人人都能用的 Wolfram 语言

当考虑把计算思维和 Wolfram 语言教给孩子时,本想主要面向高中生。但是在我的书出版后,发现也有许多 11、12 岁的孩子也在读。所以现在我认为 Wolfram Programming Lab 等平台是适用于低至 11、12 岁儿童的。

那更年幼的孩子呢?如今,他们都在用电脑和智能手机,且时常接触计算机活动。也许他们还在剪辑片子、为游戏购置资产等等。所有这些都是计算思维的良好前兆。

 

 

再说 1960 年代,有一项实验。最初是想构建 50 个“微观世界”供孩子们用计算机做实验。初代的应用是一只在屏幕上移动的“乌龟”。过了半个世纪,Scratch 之类软件的被包括进去(它的徽标把一只橙色的猫替代了乌龟),但另外的 49 个“微观世界”从未建立。虽然乌龟或猫的图案十分可爱,但以当今人们对计算的理解,它们是比较落后的。

 6、投入到 Wolfram 语言的世界中吧!

过去几年中,教年幼的孩子懂得让计算机实现自己的想法十分普遍。很多小学生还是会被教一些类似于 Scratch 的编程工具。但另一方面,现在儿童利用计算和计算思维的方式很多,显得这一做法多此一举。当然了,当今还在教小学生循环和条件语句确实显得有点奇怪。

我始终怀疑利用现在所有的科技和自动化技术能否有更好的方法去教授小孩计算思维。Scratch 一类软件的一个特征是他们的程序由砖块一样的模块构成,且不需要输入代码。通常实际的程序是呈线性结构的。但是模块有两类作用。其一,规避语法;其二,屏幕边会有一堆可供使用的模块,可迅速提供参考。

更重要的是:整个设置使得一个人不能用所有模块,只能使用一小部分可能用到的模块。

在整个 Wolfram 语言中,有超过 5000 个内置函数,如果把他们都做成模块的形式显然没必要。关键在于从所有可能的函数中选几个微观世界,每个微观世界仅包含一小组函数,但所有都能用来创造丰富而有趣的事物。

运用我们当前的技术, 微观世界可以很简单地涉及图像计算、自然语言理解、或机器学习 ,而最重要的是,它们可以立即实现!我始终怀疑那些 1960 年的东西是否能够真正让年幼的孩子更直接而成功地理解计算思维,并沿用到之后的学习过程中。

— 未完待续 —

 

 ▍下期预告  ▍

为传授计算思维 Stephen Wolfram 做了哪些努力

关于计算思维的未来愿景

 

如果你想知道更多如何入门 Wolfram 语言

大爆炸正在不断推出有关 Wolfram 的教学视频哦!

尽请关注

“创客大爆炸公开课”官方主页

www.makercollider.com/course 

让我们一起

好好学习

天天向上

为了让你的 Wolfram 学习之旅不再孤单

欢迎加入 Wolfram 学习小组微信群

和我们一起分享交流 Wolfram 语言 的学习感悟

一起徜徉在 Mathematica 的美妙世界

目前学习小组的人数已达到上限

想要加入的小伙伴请添加 Jane 为好友

我们将把你手动拖入学习小组微信群!

 

点此可以看到
How to Teach Computational Thinking  | 原文

 

发布者:Cara,转载请注明出处:http://www.makercollider.com/post/751

发表评论

登录后才能评论
QR code