寫程式,就是學運算思維?

運算思維推得如火如荼,常常聽到各個電腦課、研習的名字,動不動就套個「運算思維」,結果內容還是教一些基本的指令或介面,到底學寫程式的過程,到底算不算培養運算思維呀?

先講結論:

不算。

應該這麼說:
學程式不等於學運算思維,但是學運算思維,一定要透過程式設計。

在細談程式設計與運算思維的差異之前,我希望大家先思考一下:
教學生「加法」、「減法」,算不算是教學生「數學」?
教學生「齒輪」、「槓桿」,算不算是教學生「工程」?

算數與數學

在九年國民義務教育以前,國小沒有數學,只有算術 (目前日本還是這樣),那時國小算術的內容其實和現在大同小異,都是記憶、機械式的知識,如數與量、加減乘除、角度、時間、坐標、幾何等等。沒有為什麼,記住、會算就對了。到了國中,才有數學,也開始有更多抽象、推理的成分,學生也開始要舉一反三,發揮創造力解決問題。

機構與工程

從2,3歲開始,孩子就能理解物體的恆存性,大一點以後更能理解到不同材質的特征,舉例來說,當孩子想把卡在樹上的球給戳下來時,會選擇棍子而非繩子。但是,懂得物質的特性,以及基本的力學,理解到「輪子會滾」、「齒輪會帶動彼此」,算是了解機械工程嗎?我想沒人會這麼說。工程師往往需要依據不同元件特性、進行嵌合,構築出可維持、解決問題的機具。也就是說,機械工程是奠基於基本物理,更高層次的思維及行動。

包含,但不等於

在剛剛的兩個例子中,我們不難發現:「數學包含算術,但不等於算術」、「工程包含機構,但不等於機構」。運算思維也是類似的概念,在 MIT 提出的 computational thinking 框架中,最低層次的知識,叫做「computational concepts」,也就是對軟體世界的基本認知,如:資料、運算子、條件式等等。在基本概念之上,才能構築用程式解決問題的思維,也就是運算思維了。

試想,當一個孩子並不認識槓桿、齒輪、滑輪,他怎能利用這些元件構築出一個精巧的裝置?又或者,當一個學生並不具有任何的詞彙以及文法,他要怎麼跟別人進行辯論?運算思維也是一樣,當孩子不具備對程式的基本認識,就不可能利用他來創造軟體、解決問題,反之,當孩子能做到這點,我們便能說他具備了運算思維的基礎。

從這個例子,我們可以理解到:運算思維的前提是具有程式基本概念;但了解程式語言及概念,還不能算是掌握了運算思維。

運算思維的意義

運算思維,是一種用電腦、程式能夠執行的方式,來解決問題、進行產出的思維。例如:用一連串的點來模擬曲線、用點陣圖儲存現實生活中的景色、用遞迴的方式逐漸逼近平方根。
( 關於運算思維的意涵,可參考這篇文章:https://bit.ly/2SDXDU8 )

正因為類比世界的資訊量太大、也不容易被自動化處理,因此,為了借重電腦強大的運算能力,我們必須學會程式的基本概念,並學會如何在概念之上進行更高層次的模擬、自動化、迭代。這個高層次的思考模式,才是運算「思維」,而非如語法、指令等記憶性的「知識」。

Reference

--

--

Kevin Shu / 束凱文
橘子蘋果兒童程式學苑 官方部落格

Coder / Teacher / Student for life. Love analyzing and solving problems. Running the leading coding school in Taiwan for children and teenagers.