Image

上一篇聊到:不同的程式語言、不同的工具都代表了不同的資訊選擇,也就是抽象化。那麼,我們在解決問題、學習新技能和知識的時候,是不是也有相似的概念呢?

今天想和大家分享 Huli 大大的這篇:
當我們在學程式時,要學的到底是什麼? - Huli

我很喜歡 Huli 大大文章的一個特色:有趣而且貼切的故事。前面小明的故事真的是看了都會哭,很多人應該也能得到共鳴 => 這種的 :0hah: 共鳴

其中有一個問題,當時打中了我:

你是在鍛鍊記憶力還是解題能力?

當我們看見題目、思考方案、動手解決問題的時候。如果我們能夠整理並歸納出背後的邏輯,那麼這些題目也許就是同一個精神延伸的變化題;但如果我們只是死背硬記,那麼每個題目和場景,就會變成獨立且無窮無盡的背誦題。

這中間的差別就在於「抽象化」,或是文內提到的:計算思維

計算思維中最重要的概念之一,是能夠將計算「抽象化」與「具體化」的能力

回到主軸上面來。那麼當我們學習寫程式的時候,或是學習解決某個問題、應用某種工具的時候,要做什麼才能夠漸漸學會找到背後的抽象呢?我們可以從 Huli 大大整理出來的,學習一項新技術該做的事情中看出一些端倪:

所以如果我想學程式,到底要學什麼才好? 就照著你原本的計畫來學就好,但要記住兩個重點:

  1. 計算思維
  2. 前因後果

前因後果指的是當你在學習一項新的技術時,可以問自己以下五個問題:

  1. 這個技術出現以前是什麼樣子?
  2. 那時候碰到什麼樣的問題?
  3. 這個技術的出現如何解決問題?
  4. 所以這項技術應該如何使用?
  5. 跟以前的解法比起來,差別在哪裡?有什麼優缺點?

當我們去思考、進一步把脈絡整理出來,我們就能還原出更多相關的資訊,也就能從中觀察到相似的、關聯的部份。知道為什麼要這樣做、為什麼不那樣做、其他人怎麼解決問題的,還有這些問題和解法之間可能有什麼關聯。有了這些思考之後,那些分開的資訊才能串聯成知識(可參考 1/5 的「知識是如何形成的」)

這部份就先聊到這邊,謝謝這些大大當初無私的分享。也希望大家都能擁有文中提到的能力(我也仍在努力中 QQ):

  • 具有找資料的能力,能夠知道如何找到相關資訊
  • 具有分析問題的能力,能夠快速定位問題
  • 知道如何解決問題,包括但不限於拆解問題、簡化問題、轉化問題
  • 解決問題後能夠重新歸納並整理

今天的轉貼就先到這邊,明天見 ><