「计算思维」第一话 | 得“计算思维”者得天下

在不久的将来,许多职业将不复存在:保洁工、工人、银行柜员、司机、机械修理工、甚至记者、财务、律师……都将变成历史遗迹。面对来自机器人和计算机的失业危机,很多人不禁要问,究竟怎样才能不被时代淘汰?!下面就给大家指一条明路:

趁着还年轻,少做一些重复的无用功

努力提升自己的“计算思维”吧!

正所谓

得“计算思维”者得天下!

Stephen Wolfram(Wolfram 语言创始人)一直以来致力于计算思维的研究和传播,最近,他写了一篇超长的博文,深入浅出地介绍了有关计算思维的一切。

下面我们就一同拜读一下这篇 深度好文 吧!

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

如何传授“计算思维”?

第一话

你将在下文了解到:

  • 为什么我们需要计算思维?
  • 什么是计算思维?
  • Wolfram 语言和计算思维有什么关系?
  • Wolfram 语言有多牛 X?
  • 如何让小孩子了解并爱上 Wolfram 语言?

 计算化的未来 

“计算思维”将会成为未来的主导要素,我们有必要把它教给孩子们!

很多人关心如何教孩子们传统的数学思维,但展望未来,数学思维与计算思维相比,其重要性绝对不可同日而语。的确,我们需要一定的数学思维来应对日常生活和工作中的挑战,然而,计算思维的影响却无处不在。

计算思维将成为未来几乎各行各业的关键所在!

在未来,不论你是要做医生、律师、教师、农民,都需要用到计算思维——因为你需要掌握基于传感器的医学、计算合约、教育分析、计算农业等,只有掌握计算思维才能胜任这份工作。

我还注意到一个有趣的趋势,随便挑一个领域,从考古学到动物学,这个领域要么已经有了“计算 XX 学”要么即将诞生“计算 XX 学”,而且“计算 XX 学”也常被公认为该领域的未来。

那么,我们该如何为孩子做足准备应对计算化的未来呢?

我个人已涉足计算思维将近 40 年,我为它研发过技术,把它运用在各个领域,研究它的科学基础,理解它的原理。因此,我对计算思维有着清楚的认识。那现在的问题是如何把它传授给孩子们?

我可以很负责任地说,我已经有了一个很好的答案——那就是基于某些其他原因花了我 30 多年设计的—— Wolfram 语言。

在过去很长一段时间里,我们发明了各种各样的方法来传授底层的编程方法和技术,而现在,由于我们经年累月地在 Wolfram 语言里添加各种各样的知识与自动化因素,我们终于能够让小孩子也能轻松了解什 么是计算思维!

我个人非常热衷于传播计算思维,因为我坚信这是我们未来的根基所在。为此,我竭尽所能用我们的技术进行了各种尝试:我们发布免费的 Wolfram | Alpha 已有多年。现在还推出了 Wolfram Open Cloud,以便任何人都能随时随地地在 Wolfram Programming Lab 中使用 Wolfram 语言学习计算思维。但这只是开始,正如我即将谈到的——许多令人激动的新事物业已成为可能。

 什么是“计算思维”? 

首先,什么是“计算思维”?在我看来,其终极核心就是: 用足够清晰、系统的方式来阐述问题并告诉给计算机如何去解决。 数学思维是在可能的情况下,将情景翻译成数学问题,然后用数学手段去解决。但计算思维能做得更多更广,因为有更多的东西可以用计算的方式去解决。

但是如何“告诉计算机”呢?你必须要说它听得懂的语言。而 Wolfram 语言的好处就是,我们可以把我们的想法很直接地告诉计算机。

Wolfram 语言是基于知识的:它认识世间万物,比如城市、物种、歌曲、照片……它还知道如何用它们进行计算。一旦有一个想法可以用计算化的方法构建, Wolfram 语言就能帮我们把它表达出来,得益于 30 多年来的技术进步,我们还可以尽可能自动化地实现那个想法。

Wolfram 语言是一种编程语言。这意味着,你在使用它的时候你就在编程。不过这是一种新型的编程语言。你在使用它的时候可以尽可能直接地表达计算思维,而不是仅仅告诉计算机如何逐步地执行底层操作。 人类(甚至是小孩)只需要提供想法,其余执行的细节则全全交给计算机和 Wolfram 语言吧!

编程以及编程教学,过去就是学会告诉计算机如何执行底层操作。而因为 Wolfram 语言的技术进步,人们再也不必这样做了。 你可以站在一个更高的层面上表达想法,你可以专注于计算思维,而不仅仅是编程。

当然,世上还是需要有一些软件工程师(码农)去编写相对底层的代码,运用诸如 C++、Java、JavaScript,等等把握细节。但是对这部分人的需求量和对拥有计算思维的人的需求量相比,简直就是小巫见大巫了。

Wolfram 语言以 Mathematica 的形式被广泛用于世界各地的顶尖技术研究中已经超过四分之一个世纪了,无数重大的发明和发现因它而变为可能。这些年来我们也在不断丰满最初的愿景:用一个集成语言构建和自动化每一个可能的知识领域 。令人兴奋的是,我们做到了!Wolfram 语言涵盖了各个领域,足以支持各种各样的计算思维,比如学校里所有你能想到的学科。

七年前,我们发布了让孩子们(及其他人)爱不释手的 Wolfram | Alpha 以回答各种问题。Wolfram | Alpha 接受直白的英文输入,然后通过 Wolfram 语言的复杂运算自动生成结果页面。我认为 Wolfram | Alpha 精彩地解释了对于孩子和其他人,用 Wolfram 语言基于知识的计算到底可以做什么。但它只适合快速地解决“极简”问题——那些能用几个的单词或符号就能表示的问题。

那么更复杂的问题和其他事情呢?大白话英语在这些情况下就不大合适了。为了获得足够的准确度,得到想要的结果,你还是得掌握一些复杂奇怪的“计算机黑话”。但幸运的是现在有一个完美替代方案:Wolfram 语言——专为表达复杂概念而生,但仍然准确直白。

使用 Wolfram | Alpha 不需要任何特殊技能,但如果一个人想用计算实现更多可能,他就得进一步学习用计算机听得懂的语言表达他所需要的东西。 换句话说,他需要学习计算思维。所幸 Wolfram 语言可以满足这一需求。因为我们过去所有的艰苦努力让它超越了简单的编程,而尽可能地让你直接用计算思维与计算机对话。

 走进 Wolfram 语言 

那么,当孩子第一次接触 Wolfram 语言的时候,他们会是什么反应?

我在过去几年中,努力学习如何传授计算思维,花了相当多的时间与孩子一起使用 Wolfram 语言。有时是和一大群人,有时是和几个人。我曾注意到过一个误入大人活动的小孩,最后拿着我的电脑和其他孩子玩起来了。我也曾和初高中(11-14 岁)的孩子们一起工作过。

如果对象只是一个孩子或者一小群人,我会坚持让那些小孩来打字。而我通常会从大家都知道的东西教起,比如计算 2+2。他们自己输入后,会看到计算机显示出他们已经知道的结果。

他们之后总是会尝试一些其他的简单数学题。

非常重要的是,Wolfram 语言让他们键入之后立即能看到输出,没有额外步骤。

在他们玩腻了基础算术之后,我会建议他们试一试会产生更多数字的计算:

通常他们会问这是不是可以,或担心太长的答案会令电脑奔溃。而我总是鼓励他们试一下,然后他们算出来的答案的数字通常会长到要翻好几页才能看完。这种大数字计算我们几十年来做过多次,但对于孩子来说这仍然值得兴奋。

我认为他们知道了一点:计算机确实可以做许多复杂的事情(想想若要是换做你,你会花多长时间算出这么长的答案…)

在他们做了一些加减乘除之后,我会让他们再尝试一些其他的函数。一般从常用的 Range 函数开始:

Range 函数可以让孩子很容易看出它是做什么的。他们很快就意识到,他们告诉计算机做一件事,那么计算机就会马上做到。

还有就是可以用它很容易地生成大规模的东西。 通常我会建议他们输入 Range[1000]。他们会问 Range[10000] 也可以吗。我告诉他们试试看就知道了!

我一般对不同的孩子展示不同的功能,但是一般在这一步之后我会教他们如何可视化之前生成的列表。

如果这个小孩正好很喜欢数学,我会让他试着做一个素数表:

并且将其画出来:

对于不太喜欢数学的孩子来说,我会教他们点不一样的,比如显示不同的颜色:

也会让他们尝试混合红色和蓝色,进而生成紫色:

也会教他们从摄像头中获取当前图像:

然后检测图像中的“边缘”:

或是教他们如何用颜色做更复杂的事:

然后我们会换一个方向,比如获取常用的英文单词表。(如果有孩子知道其他语言,我也会获取其他语言的单词表)

如果孩子喜欢语言的艺术,我会尽可能尝试生成一些随机单词:

我们可以使用 StringTake 函数获取每个单词的首字母:

然后使用 WordCloud 函数制作一个词云,并查看首字母的相对频率:

一些孩子可能会问“那么前两个字母是什么?”然后我们就去试试。(这里的 UpTo 函数涉及到了一点计算思维)

我们还会聊一下有多少字以“un-”开头的单词,可以探究一下这些单词,看看单词翻译:

实际上,用目前为止我们讨论的东西就可以很容易研究上数小时。下面我们看一下其他的例子。

Wolfram 语言很重要的一点是它包含许多现实世界的数据。 我会通过一系列步骤展示这个特点。这里有一个拼贴欧洲国家国旗的例子,其中每个国旗的大小都由该国目前的人口决定:

既然我们谈到了颜色,仔细观察会发现这些国旗在色谱中的位置很有趣:比如没有多少“粉红色的国家”。

Wolfram 语言的一个大主题是,它让人们不只是进行抽象的计算,而是基于现实世界的知识进行计算。Wolfram 语言包罗万象,从 STEM 到艺术、历史、运动、文学、地理等。

孩子们很喜欢用地图做一些事情。比如从我们目前的所在地出发(使用 Here 函数),或从一些地标出发。比如在地图中以埃菲尔铁塔为原点,100 英里为半径画一个圆:

这是一组以 10 的 n 次方为顺序的图像:

那么,如何使用 Wolfram 语言进行关于历史的研究呢?其实,它有很强大的历史数据库。比如国家(你可以制作国家随历史兴衰的动画)、电影(你可以随着时间的推移比较电影海报)、语言学(获取词频数据),下面这个例子是比较在过去 300 年“马”和“汽车”在书中使用的频率。

你也可以对国家的名称玩出很多名堂来。总之,我们在历史方面也可以玩出很多花样。

再比如绘图,现在让我们来构建一个三维球体:

对孩子来说,制作一个 3D 模型然后移动它是非常有趣的。如果他们想玩更复杂的,我们可以做这样一个 3D 图像,生成 100 个随机球并随机着色。

所有孩子都喜欢做能交互的东西。这里有一个简单的“可调节的眼睛”,可以轻松地分几步就做出来。

我还喜欢做的一件事就是让 Wolfram 语言发出声音。

下图是一个随机的音符序列:

还有各种其他的领域和方向,不一而足。

如果他对生物医学感兴趣的话,Wolfram 语言还可以做出三维的解剖图,并且可以挑选骨骼的几何形状并进行 3D 打印,等等等等。

 

— 未完待续 —

 ▍下期预告 ▍

当孩子们在码代码的时候他们在想什么?

Wolfram 语言面面观

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

发表评论

登录后才能评论
QR code