陳凱 上海市位育中學
《列子》中有:“伯牙鼓琴,志在登高山。鐘子期曰:‘善哉,峨峨兮若泰山!’志在流水,鐘子期曰:‘善哉,洋洋兮若江河!’”不妨作這樣的想象,今天的人看到某人某事,贊嘆道:“善哉,計算思維兮此事?!碑斎?,正常情況下人并不會這樣說話,但如果真的要說,那一定是因為“此事”具有用計算思維解決問題的特征。鐘子期因為“峨峨兮”想到泰山,“洋洋兮”想到江河,那么計算思維解決問題的特征是什么?本文想要效仿司空圖的《二十四詩品》,對蘊含了利用計算思維解決問題特性的若干情境加以描述?!抖脑娖贰肥侵袊糯姼枥碚摰闹匾鳎运难栽姷男问?,將詩歌的風格、意境、技巧等元素歸納為二十四種,用詩性的語言營造出如畫的詩的意象。其中的《實境》,大概可用于對本文意圖的描繪:
取語甚直,計思匪深。忽逢幽人,如見道心。清澗之曲,碧松之陰。
一客荷樵,一客聽琴。情性所至,妙不自尋。遇之自天,泠然希音。
設想一張智能的琴,只要撥動首幾個音符,甚至于只是做出撥動的動作,琴就自己繼續演奏下去了,對今天的人來說,這不應該是令人感到特別驚訝的事情。在這里,琴可以是對某種人工智能或某款軟件應用的比喻,自動演奏或智能編曲固然是一種琴,自動寫作或編程也可以是“琴”;也可能有其他目前不認為屬于人工智能的功能各異的“琴”,除了演奏音樂,它還能繪圖、排序,或者做二進制加法等。無論如何,人們需要先設定好“琴”能做什么,從功能的角度看,智能和非智能的界限并不清晰,但“琴”有著整體功能的界域。“琴”的功能的界域是使用者給出的,而一個人的功能沒有界域,正如德勒茲所說,人的身體可以是任何東西……可以是一只動物、一個聲音體、一個大腦或想法,也可以是一個語言學的語料庫、一個社會體、一個集體,是具有自組織驅動力的“無器官的身體”。[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]——論文的這段評論里的“放蕩不羈”本身也似乎有些“放蕩不羈”的意味。計算思維可能具有“塊莖”思維的特性,研究計算思維的思維也需要這種“塊莖”思維,有很多問題等待著展開討論,就像塊莖向各處發散莖條:計算思維的特征是單純的,還是復合的?是整體的,還是可還原的?是不變的,還是演化的?本文傾向于這樣的觀點,計算思維雖然是復合的,但其中某些特性具有不可還原的特征,計算思維也是隨計算機技術的發展而演化的,在一種形式和內容相互轉化的過程中動態地自我增殖;計算思維具有通過長期的人機交互實踐所達成的心理上的整體性,這種整體性消解了復雜系統局部變化的理解和全局變化的感知之間的認知鴻溝。當然,以上這些還只是受一些簡單案例啟發而生出的猜想,還需要更多專家和一線教育工作者投入研究,給出更完善、嚴謹、合理的結論。