何謂計算機思維(轉載)

本文轉載自知乎:https://zhuanlan.zhihu.com/p/31799179
因爲覺得寫得特別好,自己收藏了,也想在這裏分享給大家,同時便於日後的學習,如果看到的朋友覺得也很棒的話,請打開原文鏈接給原作者點個贊。

容易被誤解的計算思維

2006年,卡內基·梅隆大學周以真教授首次系統性地定義了計算思維。這一年,她在美國計算機權威期刊《Communications of the ACM》上發表了題爲《Computational Thinking》的論文,由此開啓了計算思維大衆化的全新曆程。
在這裏插入圖片描述

在此之前,“計算思維”在非計算機領域的應用多集中在科研學術圈,如計算化學、計算生物學、計算決策學等。像我這樣的普羅大衆真正開始瞭解“計算思維”的價值是在《Computational Thinking》發表之後(的10年)。今天,計算思維成了世界公認的普適思維方式,和理論思維、實驗思維一樣,任何人在解決任何問題時都可以運用。

計算思維對每個人都意義重大,但卻非常容易被誤解。有人望文生義,以爲計算思維就是關於數學的學問;有人片面理解,以爲學了編程就懂了計算思維;有人非要攀高枝,連學個Word、Exel、PPT都要說培養了計算思維。

計算思維被誤解成這樣,小編決心爲它正名,帶大家好好認識下計算思維。

計算思維是什麼,不是什麼
計算思維是什麼呢?

在《Computational Thinking》這篇論文中,周以真教授用“硬科學”的術語描述了計算思維:計算思維是運用計算機科學的基本理念,進行問題求解,系統設計以及理解人類行爲。也就是說,計算思維是一種解決問題的思考方式,而不是具體的學科知識,這種思考方式要運用計算機科學的基本理念,而且用途挺廣的。
在這裏插入圖片描述

想要更快更好的理解計算思維,先來看看周以真教授對計算思維的幾個清晰論斷。

1 計算機思維是研究計算的。
2 是概念化,不是編程。
3 是基礎技能,不是死記硬背的技能。
4 是人的思考方式,不是計算機的思考方式。
5 是數學思維、工程思維的補充和結合。
6 是想法,不是人造產品。

理解了上面6句話,就能在很大程度上減少對計算思維的誤解了。

把編程當作計算思維是對計算思維的常見誤解之一,甚至一些學計算機專業出身的人也會有類似的觀點,其實不然。計算思維是一種概念化的思考方式,而編程則是一種行爲,雖然編程的過程中經常會用到計算思維,但計算思維絕不是編程。把信息素養當作計算思維也是對計算思維的常見誤解之一,其實計算思維和信息素養完全不同。信息素養注重的是培養人們對信息進行有效利用的方式方法,重點在於利用信息工具和信息,比如Excel、錄音機、傳感器、QQ的使用,從互聯網上找到自己想要的信息等。而計算思維則是研究計算的,研究一個問題中哪些可以計算,怎樣進行計算。

在這裏插入圖片描述
計算思維不是一門孤立的學問,也不是一門學科知識,它源於計算機科學,又和數學思維、工程思維有非常緊密的關係。說它和數學思維相關,是因爲用計算思維解決問題時,需要將問題抽象爲可計算的數學問題,例如比較羅馬帝國的崛起和蒙古人的擴張,需要選擇適當的數學模型來對國力進行量化計算。在運用計算思維設計大型複雜系統時,需要考慮效率、可靠性、自動化等問題,這些都是工程思維中非常重要的東西。

計算思維是每個人在日常生活中都可以運用的一種思考方式。沒錯,每個人都可以運用,而且可以用在幾乎任何地方。出行路線規劃、理財投資選擇、科學研究分析、天氣預報預測,不論你試圖解決什麼問題,運用計算思維都能幫你化繁爲簡,四兩撥千斤。

理解計算思維,首先要理解計算
理解計算思維的前提是理解計算,因爲計算思維本質上還是研究計算的,研究在解決問題過程中,哪些是可計算的,以及如何計算。

通常我們理解的計算是算術運算,如“1+1=2”,,但運算其實有很多種類,如集合運算、邏輯運算、條件運算等等。集合運算如 “ ∁U(A∩B)=(∁UA)∪(∁UB)”,這裏面就沒有具體的數值運算了,而是用代表集合的字母進行運算;又比如邏輯運算“1∧0=0”,這個運算裏有數值“0”和1,但意義完全不同,這裏的“1”代表的是“真”—即命題爲真,“0”代表的是“假”—即命題爲假,通過用數字“0”和“1”來代換命題的真假,用“∧”來代換邏輯語言裏的“並且”,邏輯判斷過程也能通過計算來實現。

在這裏插入圖片描述

在上面這三類運算中,“1和2”、“ A、B” “1和0”是計算對象,是用特定符號代表一定的含義(可能是數、集合、命題真假等等);“+”、“∁U、∩、U”和“∧”是運算符,也就是運算規則(可能是加減乘除、可能是求並/補集、可能是判斷並且/或者的複合命題)。如果把計算對象用特定的符號串表示,計算的實質就是將已知的特定的符號串,按照預定的規則,一步一步地改變符號串,經過有限步驟,最終得到一個滿足預定條件的符號串的過程。
在這裏插入圖片描述

當我們跳出算術運算的侷限,理解了計算的本質後,**就會發現原來好多看似不可計算的東西都能變得可計算,**也就很容易理解計算思維的普適性了。因爲經過一定的抽象,我們對很多問題的理解都能用特定的數學語言來描述,接下來,當我們用特定的數學語言去描述解決過程的時候,就是在用計算化的方式來求解了。

計算思維裏的人機分工

當我們把一個問題的求解操作變的可計算化後,我們是要靠人力去進行運算嗎?NO!運用計算思維就是爲了把人從大量的機械的運算中解脫出來,讓計算機去做這些事。

在這裏插入圖片描述
在用計算思維解決問題時,**人負責把實際問題轉化爲可計算問題,並設計算法讓計算機去執行,計算機負責具體的運算任務,**這就是計算思維裏的人機分工。

人機分工能大幅提高問題處理的效率,減少出錯率,特別是在處理情況複雜,運算量大的問題時。比如出行路線規劃,在沒有導航軟件的時候,我們想要規劃從A點到B點的最近的路線,可能要花費不少功夫,往往是我們根據經驗進行判斷,並不精確,很難有足夠的時間和精力去尋找最優解。

在這裏插入圖片描述
當我們用電子地圖來表示實際地理情況,用座標點來表示實際位置時,最短路線的問題就轉化爲比較地圖上A點到B點的各種線段組合的長度問題。從輸入起點和目的地到導航軟件給出導航路線不到半秒的時間裏,後臺服務器已經進行了高達千萬甚至上億次的運算,這種效率高出人類N個數量級。

計算思維裏的2A

Abstraction (抽象)和Automation(自動化)是計算思維的兩大核心特徵。

想要理解抽象和自動化之於計算思維的重要性,我們先來看下運用計算思維進行問題求解的關鍵路徑:

<1>把實際問題抽象爲數學問題,並建模
將人對問題的理解用數學語言描述出來
<2>進行映射,把數學模型中的變量等用特定的符號代替
用符號一一對應數學模型中的變量和規則等
<3>通過編程把解決問題的邏輯分析過程寫成算法
把解題思路變成計算機指令,也就是算法
<4>執行算法,進行求解
計算機根據算法,一步步完成相應指令,求出結果

建立數學模型的過程就是理解問題的過程,並且要把你對問題的理解用數學語言描述出來。這很關鍵,數學模型的好壞意味着你對問題的理解程度夠不夠深,而且數學模型還說明了在這個問題中,哪些東西可以計算以及如何進行計算,這可以說是計算思維裏最最核心的東西了。這個關鍵過程需要的核心能力就是抽象能力以及一定的數學基礎。
在這裏插入圖片描述

數學建模只是可計算化的第一步,爲了讓計算機幫我們去求解,我們還需要虛擬的符號來代替的數學模型裏的每個變量和運算規則,這個過程就是映射啦!

完成映射,我們就能把解題思路(注意,是解題思路,不是數學模型)用程序語言完整地告訴計算機啦,這個過程就是具體的編程寫算法的過程啦!這一步需要較強的編程能力,但編程能力的核心之一也是抽象思維能力。對於編程能力不夠強的人來說,映射還有編程的過程可以交給擅長編程的人來做。

在這裏插入圖片描述
關鍵路徑的前3步都是人來完成的,最後一步執行算法進行運算是機器自動完成的,體現了計算思維的自動化的特點。

在整個過程中,抽象是方法,是手段,貫穿整個過程的每個環節。自動化是最終目標,讓機器去做計算的工作,把人腦解放出來,中間目標是實現問題的可計算化,體現在成果上就是數學模型、映射、還有算法。

**本文轉載自知乎:https://zhuanlan.zhihu.com/p/31799179

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章