運算思維到底是什麼?
所謂的計算思考,指的是人類解決問題的多元技能之集合,其根源來自對於計算本質的研究。
108課綱將程式設計納入國中課程,「運算思維」和閱讀、寫作一樣,變成一種不可或缺的能力。引文中的「計算思考」或書名「思考的演算」都是指我們常聽到的運算思維。但到底什麼是解決問題的多元技能?什麼又是計算本質?可以訓練嗎?要怎麼訓練?如果翻找定義,你會得到像是拆解、抽象化、模式比對、邏輯思考、演算法思考、評估等一堆大概知道是什麼,卻不好具體說明的能力。說來慚愧,我對人講述這些概念時,也常用定義來說明,了不起就是拿程式問題來對照一下。太抽象,太無趣了。
說來弔詭,抽象是一種把細節藏起來的能力,現實世界的問題要化為符號必須這麼做。但也正因為抽象,程式設計在多數人心中實在很難有趣,好像只有那些天生就具備這些能力的無聊的人才喜歡。畢竟,比起抽象而精鍊的表達,具體的細節才吸引人。
宏觀且具體
演算法的書主要分成兩類,第一種是從宏觀角度來看演算法如何影響我們的世界(比如臉書同溫層現象),這類書最近很多,比如我昨天買的《被操弄的真實》,談演算法如何影響我們的生活、新聞、政治、權力。另一種則是談演算法本身,通常只有寫程式的人會讀。這本《思考的演算》是難得的第三種。
本書扎扎實實的出現各種電腦科學中的演算法與概念,但都先以具體的生活例子切入,再將常見的演算法代入比對。這些例子之漂亮,讓人在理解運算思維是什麼的同時,也明白原來隨處都可以運用運算思維。第二章〈尋找說話的方式〉中,以《潛水鐘與蝴蝶》得到閉鎖症候群的作者尚-多明尼克·鮑比為引子,說明運算思維的諸多要素。鮑比是法國《ELLE雜誌》總編輯,一天醒來,發現自己四肢癱瘓,只有眼睛能眨。頭腦清楚的他,要如何與外界溝通?從初步解決辦法到進一步改良,演算法與運算思維諸要素一一出現,讓人印象深刻。
除了一般演算法,書中有幾章也談機器人與人工智慧。第七章〈建立一顆腦〉從桌遊玩起,透過我們訂下的規則與一次次的遊戲,桌遊「腦」完成了學習並達到我們的預期目標。整個過程是個清楚的遊戲,卻導入了機器學習的原理,真的令我開了眼界,非常佩服兩位作者。
到處都是運算思維
運算思維不是單一能力,涵蓋層面很廣。有些人天生就具備,不需特別教導就能領悟;也有人就是不容易理解抽象事物。那麼,程式教育能不能培養這些能力?我認為可以。但程式語言不過是種工具,就算不靠它,一樣也可以發展運算思維。最重要還是得靠練習。主動的練習。如果沒有花費心力投入,只是學學程式語法、呼叫強大模組製作出酷炫效果,看似很厲害,可能對運算思維的提升沒有太大幫助。
運算思維不只在數位世界中運用,生活中處處都需要。我們透過可以重複執行的演算法讓許多事情變簡單。它也是一種不斷評估、尋找更好答案的態度。我們不僅試圖解決問題,我們也試圖在這樣的過程中、透過分析、透過計算模型了解我們自己。一切看似抽象而冰冷,其實我們最後會發現,理解人性也是運算思維中的重要一環。