陈凯 上海市位育中学
《列子》中有:“伯牙鼓琴,志在登高山。钟子期曰:‘善哉,峨峨兮若泰山!’志在流水,钟子期曰:‘善哉,洋洋兮若江河!’”不妨作这样的想象,今天的人看到某人某事,赞叹道:“善哉,计算思维兮此事。”当然,正常情况下人并不会这样说话,但如果真的要说,那一定是因为“此事”具有用计算思维解决问题的特征。钟子期因为“峨峨兮”想到泰山,“洋洋兮”想到江河,那么计算思维解决问题的特征是什么?本文想要效仿司空图的《二十四诗品》,对蕴含了利用计算思维解决问题特性的若干情境加以描述。《二十四诗品》是中国古代诗歌理论的重要著作,它以四言诗的形式,将诗歌的风格、意境、技巧等元素归纳为二十四种,用诗性的语言营造出如画的诗的意象。其中的《实境》,大概可用于对本文意图的描绘:
取语甚直,计思匪深。忽逢幽人,如见道心。清涧之曲,碧松之阴。
一客荷樵,一客听琴。情性所至,妙不自寻。遇之自天,泠然希音。
设想一张智能的琴,只要拨动首几个音符,甚至于只是做出拨动的动作,琴就自己继续演奏下去了,对今天的人来说,这不应该是令人感到特别惊讶的事情。在这里,琴可以是对某种人工智能或某款软件应用的比喻,自动演奏或智能编曲固然是一种琴,自动写作或编程也可以是“琴”;也可能有其他目前不认为属于人工智能的功能各异的“琴”,除了演奏音乐,它还能绘图、排序,或者做二进制加法等。无论如何,人们需要先设定好“琴”能做什么,从功能的角度看,智能和非智能的界限并不清晰,但“琴”有着整体功能的界域。“琴”的功能的界域是使用者给出的,而一个人的功能没有界域,正如德勒兹所说,人的身体可以是任何东西……可以是一只动物、一个声音体、一个大脑或想法,也可以是一个语言学的语料库、一个社会体、一个集体,是具有自组织驱动力的“无器官的身体”。[1]“琴”需要由人对其功能界域进行扩展,至于如何扩展,却不能事先约定。
“琴”的界域总是存在,这与“琴”本身的智能无关,如果没有人,其本身的智能无法突破界域。例如,一个排序函数的功能界域就是将数字按大小顺序排列好,然而人可以用这个机制来实现信号的传递,将某个信息从列表之首传递到列表之尾;又如,一个赋值语句的界域就是将一个变量的值复制给另一个变量,但人借助在列表里赋值的方法,模仿实现了分支结构的功能,代码如图1所示,一些指令有限的计算模型正是以这样的方式运作的;再如,可以向生成式人工智能提问,要求它给出关于空气质量发布装置的创意,越多越好,人工智能当然可以给出很多方案,但这些方案其实恰恰是设计者需要排除掉的——“琴”的功能界域被人用“琴”所做的意料之外的事而打破,这体现了人和机器互动的自组织驱动。
图1 不用分支结构语句实现数字是否相等的判断
德勒兹推崇块茎式的思维方式,块茎不同于“树——根”的形态,它没有一种向中心化的形态,而是敞开的、发散的、多样的,这里的“多”不是由“一”做加法而来,而是反过来,“一”是“多”做减法的结果。人工智能做的是加法,当要求人工智能设计一个单纯的用拍手玩的游戏时,人工智能从资料库中搜集和重组各种已有的规则,它难以创造出一种新的规则,直到有人将某种规则新增到它的资料库中。人工智能按固有的形式运作(至少当前是这样),不能在运作中将自身的形式消解掉。
德勒兹用音乐来说明固有的形式,如节拍的消解:重要的是对于时间的解放,Aeon(笔者注:德勒兹用这个名词描述属于绝对事件的生成时间,Aeon这个词用来和记录时刻的时间相对应),一种飘逸的音乐所具有的非律动的时间——正如布列兹(Pierre Boulez)所说,在其中,形式让位给纯粹的速度变化。德勒兹的“块茎”是一个比喻而不是一种物,它流动着穿过任何固定边界。当人们谈论“计算思维”的时候,常会围绕“分解”“抽象”“模式”“算法”这些概念,这些概念都是在实施用机器自动化解决问题、完成任务的过程中生成出来的,不是预先有了这些中心概念等在那里供学习者学习,而是应该由学习者在自身的经验中去生成,然后“意外”发现恰好有些概念与经验契合。学习者甚至还会发现一些新的有待用文字来指称和记录的特有经验,这些经验是不能仅用“分解”“抽象”“模式”这些词汇描述的。人利用机器来观察、识别出形式,但人还需要消解已有的形式,创造出新的形式。不要奢求有什么创造新形式的形式,如果那种元形式果真存在,那么任何新形式的“创造”都变得不可能了,世界上的一切都变成了无生机的形式系统的规则替换。
这里另有一个猜想,如果交予生成式人工智能的语言工具这样的任务:请根据计算思维的培养要求设计一个教学活动,并说明之所以这样设计的理由。其结果是,不仅生成式人工智能很好地完成了任务,还能够发现,它所设计的活动和叙述的理由,与大多数由人所设计的教学活动和叙述的理由高度一致,这大概就提示人们,对于“计算思维”培养的研究等待着进一步的创新。
设想某学习者在用Python编写程序时,需要对列表中的数据排序,于是学习者询问了人工智能,然后知道可以用sort()方法来实现这样的任务,并且,人工智能提供的代码也能够直接嵌入到程序里运行。这里的问题是,学习者是否需要知道sort()方法到底是怎样实现的。学习者当然可以选择继续询问人工智能,让它给出实现sort()方法的全部代码,也许,只要有这些代码陈列在那里,就能让学习者心安,就好像在研究一个复杂的数学问题时,我们看到作者写了一句“容易证明”,就相信自己一定能看明白而直接跳过。或者,学习者决心研究全部代码,然后发现有更多需要了解的更底层的东西……这就相当于问,是否还需要拆解琴,去研究琴之所以实现功能的内在机理?自然有人这样考虑,世界上大多数人都是琴的演奏者,而不是制作工匠,那么,拆解琴似无特别的必要,除非在那些科幻末世的场景中,需要有人来挽救制造琴的技艺。但这样的考虑存在一个预设,那就是琴是用来演奏的,学习琴也是为了学习演奏,如果这样,就是把琴看成了一种用具,而不是一种学习环境。
成年人往往失去了如孩童那样的拆解物品的好奇,这大概就是被困于德勒兹所说的“纹理化空间”中的某一层了。德勒兹在《千高原》一书中,在讨论与“纹理化空间”相对应的“平滑空间”时提到分形,说科赫曲线(如图2)利用“同位相似(homothétie)”的自组织过程产生出分形图案体现了“平滑空间”的特性。德勒兹自创了大量名词,很难在有限的篇幅里详尽说明。有趣的是,国内文献绝大多数是建筑学文献而非哲学文献在讨论德勒兹的空间概念,这倒提供了一个便捷理解德勒兹概念的切入点,如“平滑空间”有“异质元素、无中心、多维度、不确定、平滑等空间特征”[2],“平滑空间是开放、无等级的,可以赋予它任意的属性……如教学楼之间的公共空间,就具有平滑空间的特性”[3],“纹理化空间”则与“平滑空间”相对,是一种被功能化的空间。
图2 一种科赫曲线
回到拆琴的例子,人们拆琴,研究琴,但不一定是为了造琴。那么拆琴的目的到底是什么呢?这尽管和学习者在更大尺度上的功能特性的自相似的契合强度有关,但在大多数时候,更大尺度的图形的特性是一种未知,因为在有限的时间里,无法事先约定局部区域内“同位相似”的“位”究竟在哪里,但这个“位”无疑和个人志趣的生成有关,这种志趣的生成是一种生长过程中的塑形,而不是被给予的赋形。这让人想起卫礼贤所说的种子:“种子不是超然于现象的理念,而是具有自我分化功能的自足世界,它既是框架,又是内容。”[4]“既是框架,又是内容”也是分形的特征,拆解的过程其实是建构,某种自相似特征将学习者原初的好奇和兴趣塑形为志趣。例如,学习者考察“生命游戏”元胞自动机的演化规则,通过编程模拟出了“生命游戏”的演化,这时候,形式变为了内容;学习者观察“生命游戏”的演化,发现其中“滑翔机”用以传递信息和处理信息的独特作用,如图3所示,这时候,内容又变为形式。在这个交替转化过程中,实现了一种形式的超越。
图3 “生命游戏”中一种产生出“滑翔机”的结构
在对“计算思维”进行研究的过程中,笔者发现的一个重要的线索,就是“计算思维”的原初兴趣,很大一部分不是为着问题的解决,而是为了实现一种自动和动态的生成,这种自动和动态的生成与人的生存境遇有关,是要对现实的混沌进行适应和改造。而所谓某特定的真实情境中的问题的解决,可能只是这个原初兴趣的副产品。线索的由来正是对于音乐节奏的考察,音乐节奏的重复是一种内在的冲动,而节奏的变化同样也是一种冲动。德勒兹在《差异与重复》一书中,视节奏为“一种具有内在差异的动态重复”[5],在《千高原》一书中,德勒兹进一步指出,节奏是环境对混沌的回应。这里的“节奏”不是节拍,是一种在一段时间里重复但又会适时发生变化的灵动的敲击规则,或可称为律动,或电子音乐中的Groove。
在对使用Turtle进行绘画尝试的学习者行为的观察中,能够发现人对这种律动的浓厚兴趣。一段简单的海龟绘图过程能很长时间吸引住人的目光,一些人沉浸在图像变化的观察中,仿佛被催眠一般。如上页图4所示,一个简单的程序代码产生动态的图像变化,一开始是三角形,然后仿佛看到了六角形,然后看到了一个圆,然后在这个圆中,又重新看到三角形和六角形,并且不同的形状层叠在了一起……如果仅仅看程序代码,是不可能预知其运行的效果的,在这里可以看到重复的节奏具有模拟混沌的能力,于是节奏可以作为一种工具,为人展现出人脑根据符号和逻辑推理所不能提前预测到的东西。
图4 简单绘图代码产生出难以预料的效果
某个音乐爱好者可能会利用ZynAddSubFX(一种开源的音乐合成器软件)为乐曲配置特别的音色,他可能仅仅满足于选取预置的音色,或者,也可以自己构造一种特别的声波形态。ZynAddSubFX虽然功能强大,但其人机界面的复杂性却是一个严重的问题,图5所示的是其中的一个配置界面。
图5 ZynAddSubFX软件界面的一部分
从图中可以看出ZynAddSubFX有如此多的旋钮和滑杆(其他配置界面还有更多的旋钮和滑杆),初学者无法仅仅从界面的旋钮的方向和滑杆的位置得知合成器生成的声音可能是怎样的。除非真切地听到声音,才能勉强感悟到某些对声音的 文字描述,如将声音弄得“湿”一些,或弄得“酸”一些,经过长时间的调参实践后,人就能在头脑中建立起音色和某个参数配置的联系,而这种建立联系的方式,需要综合直观的感受和逻辑,却不能仅仅依靠逻辑推理来达成。
类似地,人们往往看不到一个计算机器是如何达成特定的效果的,一个稍微复杂一些的神经网络的调参过程常被形容为炼丹或玄学,即便是一个简单的递归函数的使用,也让初学者感到头脑的“短路”。例如,用各种符号摆出图形,用符号的迭代产生出动画效果,模拟出斐波那契数列项计算过程中数据的变化,如下页图6所示。虽然这样做堪称兴师动众,效率低下,但人却更容易借助这样的展示理解递归的运行过程,因为其中数据的每一步变化和每一次功能调用过程都直观地展现了出来。然而,尽管能从这个用迭代来模拟递归的演示中理解递归的一些特性,但如果将这个展示撤出,要求真正用递归函数来编写计算斐波那契数列项的程序代码,这时内心却仍然生出一种如同“炼丹”的感受。
图6 用迭代来模拟用递归计算斐波那契数列项的演示的一个片段
维特海默在1912年发表论文《关于运动知觉的实验研究》,后来被认为宣告了格式塔心理学的诞生,据说引发他开展研究的缘由,是在铁道路口看到闪烁的灯使得他产生光在运动的错觉。论文主要研究似动错觉,即快速呈现一系列静止图片使其看上去呈现出连续的运动,其主要观点是:运动知觉是一种新的现象,是一个整体,不是通过孤立的感知可以解释的,这种整体就是一个格式塔。除了视觉认知,在听觉方面同样存在格式塔意象的生成,人在聆听音乐时,总是对声音、旋律、织体的整体产生出感觉。一个较为典型的例子是,在聆听巴赫的无伴奏小提琴曲时,能让人产生出存在复杂的复调织体的感觉,这是因为“旋律绝不会在某一狭小、孤立的音区内停留过久,它还承担着联系其他音区的使命……作曲家通过连续地勾勒那些处于不同音区的旋律碎片,让隐伏在单声部旋律背后的多声层次明暗交替地‘闪烁’”。[6]于是就有了这样的猜想,尽管可以对一个程序的每一个指令或每一个函数都有正确的理解,却仍然不能在对离散的指令和函数进行理解的基础上,经由逻辑推理建构出算法的整体认知。算法的整体的认知是人在和计算机的多次实践互动中建立起来的(在缺乏计算机的时代或环境中,需要用大量手工来实现机械性的计算,这是一种人和自己机械性计算结果的互动)。
观察如图7所示的一段实现自然数累加的非常简单的程序代码,读者可以思考,自己是如何理解代码运行的过程的。似乎存在这样的现象,仅仅在初学算法和编程时,自己的头脑才会跟随变量的每一步变化,艰难地从局部的变化推演全局的变化。但在熟悉算法后,类似的数列累加的程序代码就会在键盘敲打声中轻快地涌出,可谓驾轻就熟,经由局部变化细节推演全局变化的内心过程反而是不必要的。所以,在熟悉和感知了算法的整体性后,代码的编写者其实并不需要关心局部变化如何导致全局的变化,代码的细节优先和算法整体的功能联系在一起,而不是和其他代码细节的局部联系在一起,编程时的驾轻就熟不等于对所有工作过程的了然于胸,在理解代码细节产生出的局部变化与感知全局变化之间,存在着认知鸿沟。但心理上的格式塔创造出一种对机器行为加以掌控的连续性的感觉,这种感觉的形成依赖于人和机器长时间的协同,是一种不能被还原的感受性(qualia),而这种人和机器的协同,与其说是学习,不妨称之为一种训练,就像自行车学习者逐渐熟悉如何施加力量实现控制,然后感觉这种控制和车成为一个整体。
图7 一段实现自然数累加的简单程序代码
“计算思维”是可以被讨论的,但不应该以一种“树——根”的形态被讨论。德勒兹的“块茎”思维的一个重要原则是,“多”永远优先于“一”,“方法”提供了路径但也束缚了创造的自由。有学者说,“我们特别需要块茎思维……它把思想置于一个平滑空间之中,没有认识所要遵循的方法,没有有组织的规划平面……我们的研究人员普遍缺乏驰骋天宇、自由翱翔的想象和无拘无束、放荡不羁的构建”。[7]——论文的这段评论里的“放荡不羁”本身也似乎有些“放荡不羁”的意味。计算思维可能具有“块茎”思维的特性,研究计算思维的思维也需要这种“块茎”思维,有很多问题等待着展开讨论,就像块茎向各处发散茎条:计算思维的特征是单纯的,还是复合的?是整体的,还是可还原的?是不变的,还是演化的?本文倾向于这样的观点,计算思维虽然是复合的,但其中某些特性具有不可还原的特征,计算思维也是随计算机技术的发展而演化的,在一种形式和内容相互转化的过程中动态地自我增殖;计算思维具有通过长期的人机交互实践所达成的心理上的整体性,这种整体性消解了复杂系统局部变化的理解和全局变化的感知之间的认知鸿沟。当然,以上这些还只是受一些简单案例启发而生出的猜想,还需要更多专家和一线教育工作者投入研究,给出更完善、严谨、合理的结论。