计算思维的形状

2023-08-10 17:47陈凯
中国信息技术教育 2023年15期
关键词:计算思维机械化

陈凯

摘要:由于具体问题的解决常常需要综合运用到多种思维能力,于是存在这样的问题:判定问题解决过程中计算思维得到运用的依据是什么?本文提出,为了作出判定,一方面要观察对于某个问题的解决过程中确实运用了构造性和机械化的方法来对数据进行处理,在此基础上,同时也要观察,存在将计算装置的行为分解成更底层的功能组件的行为,这是因为计算装置的整体功能,是在其包含的实体的或虚拟的功能组件在相互触发和影响的过程中,由依附于功能组件的数据按规则变化的过程中被表征出来的。

关键词:计算思维;构造性;机械化;加一倍法

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2023)15-0024-04

当学生运用某种方法解决了某个特定问题时,教师常常能从学生的行为判断出其解决问题过程中究竟运用了何种思维方式。虽然说,具体问题的解决需要综合运用多种思维能力,但假设旁观者的确能看出问题解决过程中计算思维得到了运用,那么就值得进一步追问,这个判定的依据是什么?换一种不甚严谨的问法,计算思维具有怎样的形状,使得其在被运用时能够被识别出来?

邵雍的加一倍法

本文的探索源自千年前的北宋时期,当时的易学大师邵雍创造了一种名为“加一倍法”的计算方法,用来有规律地生成八卦乃至六十四卦图样。所谓“加一倍”,邵雍这样说:“一变而二,二变而四,三变而八卦成矣。四变而十有六,五变而三十有二,六变而六十四卦备矣。”后来的《易裨传》解释得更清楚:“阴阳各分阴阳……再变则二阴二阳,三变则四阴四阳。”用现在人们更容易理解的方式来解释(列表如图1):以0为阴,以1为阳,则第一行01交错,第二行数字加倍0011交错,第三行再加倍00001111交错。如按此规则列三行数字,纵向看就得到8种不同的排列组合方式。按此规则每多列出一行数字,纵向排列组合方式则加倍。将0作为阴爻用虚线描绘,將1作为阳爻用实线描绘,则三行数字得到纵向8种排列组合就对应如图2所示八卦中所有卦图。

邵雍说:“图虽无文,吾终日言而未当离乎是,盖天地万物之理尽在其中矣。”可见,邵雍运用加一倍法生成卦图,其目的是想说明根据易理是能够推究宇宙起源、自然演化和社会发展的。邵雍这种象数相生的宇宙观,有学者认为其是现代数字技术的思想发端。[1]有兴趣的读者可查阅邵雍进一步运用加一倍法所推演出的“六十四卦圆方图”,限于篇幅这里就不作展示了。关于邵雍是否真正有使用二进制数的意识和自觉而不仅仅是巧合,学者们意见不一,但无论是持肯定还是否定的观点,不可否认的是,邵雍事实上创设出一种按特定算法自动化生成二进制数的模型。而在加一倍法的运用中,邵雍进一步将传统易学中的象生数和数生象,丰富为象生数、数生数、数生象的思想方法。大家不妨自问这样一个问题,邵雍在解决自动生成卦图这个问题时,是不是运用了计算思维?或者换个问法,假设有学生说自己发现了一种方法,可以有规律地生成指定位数的所有二进制数,教师是否能认可该学生是运用了计算思维在解决问题?

著名的数学家吴文俊指出:中国古算具有两大特色,一是构造性,二是机械化。[2]针对易学,傅海伦指出:对易图的数理研究……向人们显示了当时数学家对构造性问题的关心……构造性特别强调运算可操作程度,其首要特征就是要从问题包括的信息出发通过一系列有限的运算求出解来,因而构造性往往是与算法的机械化特色联系在一起。[3]这种构造性和机械化的问题解决方法,无疑体现了算法思维的运用。但这是不是也体现了计算思维的运用呢?有学者就认为这种构造性和机械化的问题解决方法是一种中国古代的计算思维。[4]然而这就出现了一个问题,周以真在2006年提出“计算思维”的概念,她认为计算思维指的是一种运用计算机科学基本概念求解问题、设计系统和理解人类行为的方式。考虑到计算机设计的目的就是利用机械化的运动方式以特定算法对数据进行处理并输出结果,那么“计算思维”这个概念和构造性和机械化的思维方法到底有怎样的不同?从朴素的直觉生出的判断是:“计算思维”概念的提出,似乎不应该是一种已被认可的思维方式概念的重命名。如果说加一倍法能充分体现出构造性和机械化的问题解决方法,那么为何说这种方法还不能充分地体现出计算思维的运用?

将机械化的算法转化为机械的构造和运动过程

使用加一倍法可以生成所有按从小到大顺序排列的n位二进制数,这个时候可以将加一倍法的描述视作算法,而根据描述生成的二进制数可以看成是算法处理后输出的字符串。虽然人的头脑很容易理解如何实施加一倍法,但问题是,应当如何真正地创造出一种可行的或至少在思想中可行的机器,能够让其按加一倍法生成二进制数?当今的人们能借助计算机程序或数字电路轻松地做到这些,图3就是一种简单的用加一倍法生成所有3位二进制数的数字电路。

邵雍所处的时代当然没有计算机或数字电路,不过可以假想存在某个有感知功能的读写机,当该机器读取到数据“0”,则在新的一行中写下两个“0”,当读取到数据“1”,则在新的一行中写下两个“1”,为了能生成所有3位二进制数,需要A、B两个读写机根据初始的“01010101”数据开始一系列的动作。其实,这个初始的数据也可以用更为初始的数据“0”以及一个从左读取数据并向右写数据的另一种读写机来生成,这里就不进一步展开了。实际上,A、B两个读写机的运行规则是完全一致的。图4展示的是这两个读写机工作的第一步和第二步。还需要注意的问题是,读写机读数据只需要移动一格位置,而写数据需要移动两格位置。解决的方法可以是这样的,为每个读写机设定一个分身,如A负责读,A负责写,而A需要能够接受到A发出的信息并转换成相应的动作。

相信即便是在不存在计算机或数字电路的时代,人们也能够仅仅借助头脑中的想象来理解这个读写机的工作原理和过程。所以存在这样一个假设,在没有计算机或数字电路硬件存在的情况下,人们也能按加一倍法的原理,构造出一种能合理运行的自动化机械装置。古人为解决特定问题创造出很多精妙的算法,不过从计算思维的角度看,的确还缺少这样的思考:算法中的每一步是否有可能离开人自动化地实施。虽然说这种自动化实施的构想并不一定真正能在技术上加以实现,但即便是构想一个现实中难以实现但在行为和逻辑上合理的虚拟机器,对于用机械化思想解决问题还是有重要的意义的。图灵机的创设就是一个典型的例子,图灵在论文中完整描述的图灵机在当时并没有被真正制造出来,但图灵机的机械化计算过程将一些本来用语言文字难以描述的问题进行了清晰的界定,不仅解决了数学上的判定问题,还经由元图灵机的概念证明了通用计算机器是存在的。

功能组件的行为

考虑如图5所示的这样一种奇特装置,由于单摆做简谐运动的周期跟摆长的平方根成正比,所以可以调整摆长将单摆周期设置成2倍关系,这样,仅仅观察单摆运动时摆动的方向,并人为将单摆不同的运动方向分别编码为“0”和“1”,就能够简单地模拟出按加一倍法原理实现二进制数的自动生成过程,这里暂且将其简称为单摆机。设计并搭建出这种装置的人不仅理解加一倍法的原理,还真正利用简单机械的运动将二进制数生成过程展现了出来,那么是否可以认为,单摆机的设计和实现过程中运用了计算思维?

前文提到的读写机和单摆机有一处很大的不同:读写机是可以拆解出功能组件的,功能組件具有数据输入的接口、数据输出的接口、存储的数据以及特定的行动方式,功能组件之间通过某种条件下的触发,实现功能组件自身数据的变化及功能组件行为的变化,诸多功能组件的行为只有在宏观的层面上,才涌现出整体的功能。并且,功能组件的行为有着被重新定义的潜力。而一个单摆机只是单纯的物理现象的反映,无法对其进行拆解,这就好像是侯世达所说的镜子:“能反映宇宙但看不到范畴……不具有自主结构,完全依赖于外在世界。”[5]

利用功能组件的行为以及相应行为所触发的事件(包括数据的变化和后续行为的变化),可以有多种不同的生成二进制数或生成其他某种特定字符串的方法。例如,可以这样描述生成从小到大顺序排列的n位二进制数的计算装置:有某个能在平面上游走的读写装置U,该装置和其附近的四个默认存储了“0”的存储装置按某种特定规则交换信息,规则是,每一轮交换过程中,默认存储了“0”的装置U首先触碰A存储装置,其触发的事件是装置U自身的数据由“0”变为“1”,然后,装置U依次按顺序触碰存储装置a1,a2,a3,a4,当装置U触碰a1,a2,a3,a4中任意一个时,如果装置U为“1”,且存储装置也为“1”,则将存储装置数据设置为“0”;如果装置U为“1”,存储装置为“0”,则将装置U设为“0”,存储装置数据设为“1”。后续则反复实施如上动作。这个装置的运行过程如图6所示,显然,如果试图纯粹用语言来描述其完整的工作过程,还需要设置一个平面坐标系,为所有部件规定好位置,还要说清楚装置U的运动轨迹。这个装置可以称为触碰迭代机,而以上的诸多语言文字描述则可以当作触碰迭代机的算法。

那么,为了生成所有n位二进制数的字符串,哪一种描述方法更为简洁?(一个值得探索的有趣问题是,是否存在一种算法,能够判定某个生成特定字符串的最为简洁的算法的长度。这个问题和柯氏复杂度有关,而柯氏复杂度已被证明为是一个不可计算的问题)从上文所举的例子看,似乎加一倍法的描述远比触碰迭代机简洁。不过深究之下,这个判断其实大有问题,当人们读到“阴阳各分阴阳……再变则二阴二阳,三变则四阴四阳”时,已有的经验能帮助人将这些简洁的语言解析还原成现象。例如,当人们见到“三顾茅庐”这个词时,得到的信息是绝对不止于三次拜访茅庐的,类似地,当人们看见泰山石刻“虫二”两字时,联系周围风景,才可解读出“风月无边”。所以,对于怎样地生成某特定字符串的描述才是更简洁的描述这一问题,需要放置在一个特定的机械化的系统中加以判断。例如,只使用C语言的编辑器编写代码生成某特定字符串,或者只使用图灵机生成某特定字符串。图7所示的是利用图灵机将上述触碰迭代机的各个组件编码成为一维的数据,并仍然按迭代法生成4位二进制数的方法。

可以看出,在一个特定的机械化的系统中,是可以分辨出哪一种解决问题的描述也就是算法是简单的,哪一种是复杂的。这样也就避免了讨论问题时自然语言模糊不清造成的影响。某些结构不同的机械化系统,虽然说它们执行计算的功能集是相同的,但它们的结构却会影响计算实现的复杂性。

结论

到这里,就可以对“计算思维的形状”这一问题给出初步的结论。为了判断某人解决问题是否运用了计算思维,可以观察以下两点:首先,作为必要条件,此人对于某个问题的解决,运用了构造性和机械化的方法来对数据进行处理;其次,数据的处理过程能够被分解成更底层的功能组件的行为,这些功能组件可能是现实存在的物质实体或虚拟的装置,但都包含对数据进行通信的接口、可根据特定条件改变自身数据或行为的规则,计算装置的整体功能,是由这些功能组件在相互触发与数据按规则变化的过程中被表征出来的。

参考文献:

[1]丘亮辉,郭彧.古代象数观和现代数字化技术思想[J].自然辩证法研究,2004(10):8-10.

[2]吴文俊.从《数书九章》看中国传统数学构造性和机械化的特色[M].北京:北京师范大学出版社,1987.

[3]傅海伦.构造性的思维方式与数学机械化[J].大自然探索,1998(01):120-123.

[4]管会生,杨建磊.从中国“古算”到“图灵机”—看不同历史时期“计算思维”的演变[J].计算机教育,2012,167(11):120-125.

[5][美]侯世达,[美]丹尼尔·丹尼特.我是谁,或什么:一部心与自我的辩证奇想集[M].舒文,马健,译.上海:上海三联书店,2020: 197-198.

猜你喜欢
计算思维机械化
大棚有了机械化 一人管理也不怕
关于水稻一种两收机械化栽培技术要点探讨
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养
农业机械化
对我国煤矿岩巷掘进机械化配套的探讨