運算思維:未來必備的思考能力

更新於 發佈於 閱讀時間約 13 分鐘
Computational Thinking will be a fundamental skill used by everyone in the world. To reading, writing, and arithmetic, let's add computational thinking to every child's analytical ability. 運算思維將成為世界上每個人都使用的一項基本技能,除了閱讀、寫作和算術,應該讓孩子都有運算思維的分析能力。

—引用知名電腦科學家周以真Jeannette M. Wing著作
  【Computational thinking and thinking about computing


運算思維是由許多不同的解決問題的技巧構成,核心為創造演算法,其他還包含運算模型科學方法捷徑思考邏輯模式比對表示法抽象化拆解評估檢驗
本文除了介紹運算思維是甚麼,還會說明各個問題解決技巧,希望讀者不只了解各個技巧,更學會以豐富且彼此連結的方式組合使用這些技巧

1.運算思維是甚麼?

Photo by Mark Fletcher-Brown on Unsplash

Photo by Mark Fletcher-Brown on Unsplash

運算思維的定義

  運算思維一詞最早由數學家Seymour Papett提出,他認為數學應該要以計算為基礎,使用截然不同的方式來教學;然而,電腦科學改變的不是只有數學,所有領域都因此改變。

  運算思維並不僅僅是指電腦思考的方式,儘管我們越來越頻繁地使用運算思維來寫電腦程式,所謂的運算思維,指的是人類解決問題的多元技能之集合,其根本是來自於對計算本質的研究。

  運算思維利用大部分科目發展出的創意、清楚解釋事物的能力、團隊合作等技巧,並帶入數學科學思考方式

  運算思維是非常特別的問題解決技巧,包括使用邏輯演算法進行思考、注意到每個出現的細節,以及設計方法解決問題。


運算思維的重要性

  我們創造出運算模型來試著呈現事物實際樣貌,不再只仰賴真實世界,若發現運算結果跟理論衝突,可透過思考哪裡出錯,找出方法來修正,進而理論與模型更貼近真實世界。

  演算法如今已出現在我們生活的所有面向,並大幅改變人類的生活方式,且持續深化中。這就是為什麼了解運算思維對於每個人都如此重要,就像要了解物質世界,就要學習物理;要了解生物世界就要學習生物學一樣。我們都需要學習一些電腦科學,才能了解這個正在無聲佔據我們人生的虛擬世界。


運算思維的應用

  如果找到可以解所有數獨遊戲演算法,那人類再也不需花時間解數獨遊戲;有了精準預測蚊子飛行軌跡演算法,那就可以在被牠吸血之前,將其殲滅;有了準確分析大氣層雲系變化演算法,那就可以預測天氣,再也不用擔心曬衣服的時候下大雨。

  現在許多銀行使用演算法判斷取代人工買賣股票NASA建立軌跡演算法算出如何在火星準確降落,進行太空探險Youtube利用演算法建立推薦系統自動判斷用戶觀看取向推送影片;飛機和汽車依導航演算法算出最佳路徑;Amazon用演算法預測用戶的消費習慣推送優惠消息


2.運算思維核心

Photo by Brett Ritchie on Unsplash

Photo by Brett Ritchie on Unsplash

演算法創造

  運算思維的核心在於創造演算法,找出一個問題的解決辦法不是只為了得到單一問題的答案,而是這個解法可以得到跟此問題相關的一系列問題的答案,而且只要盲目跟隨演算法指令就可以解決。

  簡單來說,光是能算出 20+22 = 42 這樣的算法還不夠好,我們想要的是演算法能得到任意兩個數字相加的結果。

  假使我們知道某個理論,它能解釋事物如何運作,那麼就可以創造依同樣方式運作的演算法,建立一個運算模型,利用該模型進行實驗,進一步研究真實世界,並做出預測。

  演算法是個極強大的工具,一旦被創造,就可以不經思考地被使用來完成任務。我們只需要跟隨一串指令,就可無限地遵循操作(一次次地進行導覽、完美地贏得每次比賽、成功的拯救每個病患),而不用再花時間精力來解決問題,也不用再重複思考。甚至要求其他人只要照著演算法操作,可以獲得同樣的成效。

  在電腦時代,演算法可以轉換為程式碼,而電腦可以替代人類執行程式碼。所以電腦科學家對演算法特別感興趣,這是因為演算法是程式基礎,但在電腦尚未發明之前,人類就已經在設計演算法了,儘管運算思維這個名詞是近年才出現,卻已經是個古老的技巧


3.運算思維的解決問題技巧

Photo by Olav Ahrens Røtne on Unsplash

Photo by Olav Ahrens Røtne on Unsplash

運算模型

  運算模型的概念是指,把現實生活中某見想要進一步了解的事物,如天氣,創造一個演算法,讓它在虛擬世界中進行同樣的事。模型能模擬這個事物,透過模擬結果,可以對事物預測未來的發展,譬如預測明天是否下雨。

  生物學家創造如心臟或是癌細胞的模型,可以減少活體動物實驗,改成虛擬動物實驗經濟學家創造財務模型評估政策會帶給國家災難或是繁榮,在真實世界運作前確認風險。而電腦遊戲,如魔獸世界,其實就是奇幻世界的模型,玩家則是可以改變這個虛擬世界的角色,讓人們實現在現實世界無法做到的夢想

  簡單來說,有了精準的運算模型,便可以在模型上進行實驗,比起在現實世界實驗,不但快速高效且大幅降低投入成本。除了運用在物理學生物學化學地理學考古學等等,無論哪個領域,它都能帶來新的運作方式,甚至創造出未來的產業。


科學方法

raw-image

  要支持運算模型的程序,需要理解科學是怎麼運作的。舉例來說,理解一個模型會出現甚麼結果是很重要的,若是結果與現實不相符,則必須透過新預測並進行測試,來確保現實世界的每個結果都有效。

  所謂科學方法就是觀察新現象得到新理論或修正舊理論的系統技術。因為所使用的方法必須具備科學精神,因此,須遵循以下步驟,形成迭代遞歸,直到所有的理論與實驗盡量符合,達成一致
1. 仔細觀察,發現現象
  過去以往的定義是利用感官去查知、覺察自然界的種種現象,但因為感官的主觀性,使得這項定義逐漸被揚棄。現在,大多改為經實驗操作而測量到某已知或未知的物理量,亦即物理量必須是可被測量的。
2. 形成理論解釋現象
  所有觀察的現象,都必須被既有的理論所解釋,如果既有的理論無法解釋,至少要提出假說或學說來解釋這種現象。
3. 推論
  根據以上形成的理論,詳加比較歸納演繹,進而得到新的現象預測
4. 反覆實驗驗證
  重新設計不同實驗,重複上述步驟,如果還不能使實驗結果與理論預測符合,則必須再重複,如果兩相符合,則可形成結論

捷徑思考

raw-image

  有幾種情況我們必須改用捷徑式演算法,有時候,我們無法創造最佳解的演算法,有可能是根本做不到,又或者是無法在許可時間內完成。這些情況只能把目標放在得出一個足夠好的答案,而不是最佳解,像是平常使用的導航,本質上就是這樣規畫路線的。


邏輯思考

raw-image

  邏輯思考指的是仔細且準確地看待細節,也就是說演算法當中的指令必須包含所有可能性

  舉例來說,在撰寫條件判斷式,除了判斷為TRUE的指令要執行,判斷為False的指令還有無法判斷TRUE or False的狀況也要設定,這樣才能保證電腦遇到每種狀況至少都可以進行下去,否則他可能會給出錯誤的答案,或是當機。

  在創造一個演算法的時候,必須非常有邏輯地思考它是如何運作的,至少在腦中有一套邏輯推論確保它能成功運作。我們絕不會希望因為少了某個細節,而使火星登陸機器人成功起飛並登陸火星後,立刻就當機。


模式比對

raw-image

  對於運算思維而言,要能觀察出兩個不同問題在本質上的相似度非常重要,想達到這個目的,必須對這兩個問題進行模式比對 

  當我們辨認出問題的模式,就可以不加思索地做出正確反應。這也是許多程式運作方式的核心,它們會比對規則與情況,而決定要遵循哪一套合適的指令。發展這類程式的程式設計師,得要列出程式所要比對的模式。機器學習也與模式比對有關,如今程式可以自己找出模式

  在解決問題時,模式比對可以讓人省去很多時間,因為每次遇到新問題不用從零開始。當新問題與之前解過的問題相似,就可以使用舊解法。例如在人臉辨識出現以前,就已經有了指紋辨識,所以在開發人臉辨識演算法時,可以思考是否可以沿用指紋辨識的設計,畢竟兩種辨識演算法都是在做圖像的辨認,應該有極高的相似度。


表示法

raw-image

  透過一個好的表示法,能讓問題更容易解決。它是一種組織資訊的方式。像是把影像點陣圖來表示,或是儲存許多形成格線的像素,或是儲存向量圖(線條與形狀),再透過濾鏡來呈現一種模式,創造演算法讓電腦能執行影像分析


抽象化

raw-image

  抽象化技巧是以某些方式把細節藏起來,讓問題在設計演算法與評估上更容易被處理。

  其中控制抽象化(control abstraction)是透過將指令集合起來,再進行更大步驟的指令,也就是說隱藏小步驟的細節。假設要做一道番茄炒蛋,其中細節需要準備食材與調味料、打蛋、番茄切塊、混和炒熟、加調味料等等,這些步驟集合起來便成了一個簡單的指令【製作番茄炒蛋】,同理可推論任何菜餚。

  假設未來要做的是一整桌菜,製作單一菜餚的步驟就不需要再考究,因為已經知道作法,要思考的就變成是安排每道菜的製作時間與流程。

  另一種抽象化為數據抽象化(data abstraction)是隱藏儲存數據的細節。舉例,數字會以二進位的方式儲存在電腦;在系統中,16這個數字會儲存成0001000,然而我們在思考時,會直接想成16這樣的十進位數字,要求使用程式的人輸入數字時,也會要求輸入十進位數字,而非二進位數字。

  不過最終電腦依舊是以二進位數字運作,無關乎是誰使用這個程式,都不需要知道數字實際上是這樣被儲存的,因為這個細節被隱藏了。

  在程式的評估檢驗也會用到此技巧。譬如評估同樣功能的演算法何者花費時間較短,我們並不需要直接去計算所花時間,而是隱藏時間這個細節,改而思考程式的工作量,即指令的數量,數量越少的花費時間就少。透過計算指令數量,我們就可以知道結果,讓評估演算法的效率變得更簡單。


拆解

raw-image

  拆解是將一個大問題分解成幾個較容易解決的小問題,透過個別解決小問題,達成解決大問題的目標。

  這是一個強大的解決問題技巧,它讓我們能寫出長達百萬個指令的複雜程式,若少了這個技巧,今天電腦無法擁有做到那麼多事情的程式。

  它與抽象化技巧息息相關,操作概念是將一個程式目標分成多個小任務,接著再針對小任務各別撰寫程式,每個小任務都非常容易解決,最後組合起來就可以解決程式目標。

  一旦完成這些個別元件,只需要思考它們能做甚麼,而不用想它們是如何完成任務的,為了讓這些步驟變得更容易理解,只要幫每個小程式命名,寫清楚各別的任務目標,不需要再思考這些煩人的細節,即可組合解決最終問題


評估檢驗

raw-image

  評估檢驗對演算法非常重要,我們需要知道它是否能成功運作,以及是否符合問題的特殊屬性要求

  為了確認解法是一個符合目的的優秀解,要評估的東西有很多。最基本的是運行正確(functional correctness),必須一直都是如此才行,無論發生甚麼狀況,都能做正確的事,給出正確的答案

  除了運行正確,可能還要評估執行速度,演算法能運行多快?有更快的方法嗎?有沒有特殊情況使速度減慢?情況是否常發生呢?這些得依問題的需求來思考,評估一個演算法是否適用於該情況。


4. 結論

  運算思維是由許多不同的問題解決技巧組成,重要的是,要理解這些技巧並非各個不同的活動,而是以多樣且相連的方式組合在一起使用。它對於問題以及系統會帶來不同的思考方式,把這些技巧作為基礎,用來創造電腦理解的解法。演算法改變我們的生活、工作、遊戲方式,未來也將持續。


參考網站
科學online 高瞻自然科學教學資源平台
Teaching London Computing

參考書籍
The Power of Computational Thinking思考的演算:跟著電腦學思考,你也可以成為計算思考大師
















留言
avatar-img
留言分享你的想法!
avatar-img
Benson老師教你程式學習技巧的沙龍
6會員
9內容數
2022/08/11
程式語言只是工具,更重要的是程式邏輯 【運算思維】 1.拆解: 將一個任務或問題拆解成數個步驟或部分。 2.找出規律: 預測問題的規律,並找出模式做測試。 3.歸納與抽象化: 找出最主要導致此模式的原則或因素。 4.設計演算法: 設計出能夠解決類似問題並且能夠被重複執行的指令流程。
Thumbnail
2022/08/11
程式語言只是工具,更重要的是程式邏輯 【運算思維】 1.拆解: 將一個任務或問題拆解成數個步驟或部分。 2.找出規律: 預測問題的規律,並找出模式做測試。 3.歸納與抽象化: 找出最主要導致此模式的原則或因素。 4.設計演算法: 設計出能夠解決類似問題並且能夠被重複執行的指令流程。
Thumbnail
2022/08/04
最近很多人私訊我他們自學遇到的瓶頸,有些人會覺得學不會程式,是自己太笨沒天分,或從小數理能力就差,才學不起來。但以我自己這些年自學程式並創業的經驗,我認為可能原因是自己操之過急了,因為想要快速達到像是轉職或是創業等等目標,所以覺得得學得越快越好。但這個領域需要的是長時間的磨練,慢慢一點點累積
Thumbnail
2022/08/04
最近很多人私訊我他們自學遇到的瓶頸,有些人會覺得學不會程式,是自己太笨沒天分,或從小數理能力就差,才學不起來。但以我自己這些年自學程式並創業的經驗,我認為可能原因是自己操之過急了,因為想要快速達到像是轉職或是創業等等目標,所以覺得得學得越快越好。但這個領域需要的是長時間的磨練,慢慢一點點累積
Thumbnail
2022/08/03
設定好你的目標,做好目標分解,接下來就是學習與實作,在過程中,肯定會遇到各種問題需要debug,這應該是剛入門自學程式的人最痛苦的部分,可能看到bug不知道google要下甚麼關鍵字,也可能搜出一堆文章看得頭昏腦脹,所以想跟大家分享我在自學製作封鎖電商黑名單chrome插件過程,是怎麼面對這種狀況的
Thumbnail
2022/08/03
設定好你的目標,做好目標分解,接下來就是學習與實作,在過程中,肯定會遇到各種問題需要debug,這應該是剛入門自學程式的人最痛苦的部分,可能看到bug不知道google要下甚麼關鍵字,也可能搜出一堆文章看得頭昏腦脹,所以想跟大家分享我在自學製作封鎖電商黑名單chrome插件過程,是怎麼面對這種狀況的
Thumbnail
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
如何養成主動又深入的思考? 首先是要能定義問題。 再來是架構問題,找出最核心最根本的邏輯與規則,一層層剝開事物表現,看到本質後,再一層一層往上架構,比如馬斯特研發電池與太空船,就是所謂回到最根本的物理法則重新思考,不在原本或許是錯誤的基礎上繼續發展。 第三是洞察與發現別人所未見
Thumbnail
如何養成主動又深入的思考? 首先是要能定義問題。 再來是架構問題,找出最核心最根本的邏輯與規則,一層層剝開事物表現,看到本質後,再一層一層往上架構,比如馬斯特研發電池與太空船,就是所謂回到最根本的物理法則重新思考,不在原本或許是錯誤的基礎上繼續發展。 第三是洞察與發現別人所未見
Thumbnail
平時常常在談運算思維,不斷強調運算思維是解決問題的方法,但是設計思考更是發現問題的關鍵。而設計思考的核心,就是站在使用者的立場去換位思考,從使用者的需求出發,來找到最好的解決方案。 那麼,什麼是設計思考呢?簡單來說,它是一種關注使用者體驗的方法。在設計思考的過程中,我們不僅僅要考慮技術和功能,更要關
Thumbnail
平時常常在談運算思維,不斷強調運算思維是解決問題的方法,但是設計思考更是發現問題的關鍵。而設計思考的核心,就是站在使用者的立場去換位思考,從使用者的需求出發,來找到最好的解決方案。 那麼,什麼是設計思考呢?簡單來說,它是一種關注使用者體驗的方法。在設計思考的過程中,我們不僅僅要考慮技術和功能,更要關
Thumbnail
面對大數據以及人工智慧的未來,透過運算思維,可以理解曾經不可能看到的模式和相關性。運算思維可以幫助我們做到這一點,讓我們能夠快速處理數據並建立連結,更快地解決問題,做出更好的決策,這就是為什麼它對於未來企業中如此重要的原因。運算思維不是只有工程師或是科學家該了解,企業中的每個人都應該熟悉它。
Thumbnail
面對大數據以及人工智慧的未來,透過運算思維,可以理解曾經不可能看到的模式和相關性。運算思維可以幫助我們做到這一點,讓我們能夠快速處理數據並建立連結,更快地解決問題,做出更好的決策,這就是為什麼它對於未來企業中如此重要的原因。運算思維不是只有工程師或是科學家該了解,企業中的每個人都應該熟悉它。
Thumbnail
幫孩子找到自信的成長型數學思維 Jo Boaler 2018 臉譜出版社 分類;論說--實用 ★★★★☆ 一句話:以成長型思維幫助孩子學習數學,從教學、思考、答題、評量著手,破解僵固型思維的數學迷思。
Thumbnail
幫孩子找到自信的成長型數學思維 Jo Boaler 2018 臉譜出版社 分類;論說--實用 ★★★★☆ 一句話:以成長型思維幫助孩子學習數學,從教學、思考、答題、評量著手,破解僵固型思維的數學迷思。
Thumbnail
學數學其實就像學一種新的語言,是一扇帶你進入未知世界的門。而這本數學書,就像一本實用的生活會話書,而非硬邦邦的文法課本,以輕鬆而深入淺出的筆法,讓我們體會數學的趣味與美──由最基本的算術、方程式、基本幾何、畢氏定理、機率等國高中數學,到大學的微積分,以及更進階的複數系統、群論,透過真實生活中的例子及
Thumbnail
學數學其實就像學一種新的語言,是一扇帶你進入未知世界的門。而這本數學書,就像一本實用的生活會話書,而非硬邦邦的文法課本,以輕鬆而深入淺出的筆法,讓我們體會數學的趣味與美──由最基本的算術、方程式、基本幾何、畢氏定理、機率等國高中數學,到大學的微積分,以及更進階的複數系統、群論,透過真實生活中的例子及
Thumbnail
運算思維是由許多不同的解決問題的技巧構成,核心為創造演算法,其他還包含運算模型、科學方法、捷徑思考、邏輯、模式比對、表示法、抽象化、拆解、評估檢驗。 本文除了介紹運算思維是甚麼,還會說明各個問題解決技巧,希望讀者不只了解各個技巧,更學會以豐富且彼此連結的方式組合使用這些技巧。
Thumbnail
運算思維是由許多不同的解決問題的技巧構成,核心為創造演算法,其他還包含運算模型、科學方法、捷徑思考、邏輯、模式比對、表示法、抽象化、拆解、評估檢驗。 本文除了介紹運算思維是甚麼,還會說明各個問題解決技巧,希望讀者不只了解各個技巧,更學會以豐富且彼此連結的方式組合使用這些技巧。
Thumbnail
★透過學習數學,就能讓孩子自然而然掌握「思考能力」,包括:邏輯思考能力、發現問題並解決的能力、整理分散資訊後思考的能力、確實掌握對方問題的能力等。
Thumbnail
★透過學習數學,就能讓孩子自然而然掌握「思考能力」,包括:邏輯思考能力、發現問題並解決的能力、整理分散資訊後思考的能力、確實掌握對方問題的能力等。
Thumbnail
所謂的計算思考,指的是人類解決問題的多元技能之集合,其根源來自對於計算本質的研究。 108課綱將程式設計納入國中課程,「運算思維」和閱讀、寫作一樣,變成一種不可或缺的能力。
Thumbnail
所謂的計算思考,指的是人類解決問題的多元技能之集合,其根源來自對於計算本質的研究。 108課綱將程式設計納入國中課程,「運算思維」和閱讀、寫作一樣,變成一種不可或缺的能力。
Thumbnail
你的孩子有學程式語言嗎?近年來全球掀起一股程式設計的教育浪潮,各國均將它納入課綱,台灣自然也不例外。但是,我們可曾認真想過為什麼要讓孩子學習程式設計嗎?程式設計終究只是教育的工具之一,「為何而教?」遠比如何教更加重要。整理出 3 個我為什麼教女兒程式設計的理由。
Thumbnail
你的孩子有學程式語言嗎?近年來全球掀起一股程式設計的教育浪潮,各國均將它納入課綱,台灣自然也不例外。但是,我們可曾認真想過為什麼要讓孩子學習程式設計嗎?程式設計終究只是教育的工具之一,「為何而教?」遠比如何教更加重要。整理出 3 個我為什麼教女兒程式設計的理由。
Thumbnail
不誆你,程式設計真的能學到「運算思維」、「創造力」、「邏輯思維」能力喔!
Thumbnail
不誆你,程式設計真的能學到「運算思維」、「創造力」、「邏輯思維」能力喔!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News