計算思維的本質是抽象(Abstract)和自動化(Automation)。它反映了計算的根本問題,即什么能被有效的自動進行。計算是抽象的自動執行,自動化需要某種計算機去解釋抽象。
1. 計算思維的定義
計算思維是運用計算機科學的基礎概念進行問題求解、系統設計、以及人類行為理解 等涵蓋計算機科學之廣度的一系列思維活動。
2. 計算思維的本質
從操作層面上講,計算就是如何尋找一台計算機去求解問題,隱含地說就是要確定合適的抽象,選擇合適的計算機去解釋執行該抽象,后者就是自動化。
計算思維中的抽象完全超越物理的時空觀,可以完全用符號來表示,其中,數字抽象只是一類特例。與數學相比,計算思維中的抽象顯得更為豐富,也更為復雜。數學抽象 的特點是拋開現實事物的物理、化學和生物等特性,僅保留其量的關系和空間的形式,而計算思維中的抽象卻不僅僅如此。堆棧是計算學科中常見的一種抽象數據類型,這種數據類型就不可能像數學中的整數那樣進行簡單的相“加”。算法也是一種抽象,也不能將兩個算法簡單地放在一起實現一種並行算法。
抽象層次是計算思維中的一個重要概念,它使人們可以根據不同的抽象層次,進而有選擇的忽視某些細節,最終控制系統的復雜性。在分析問題時,計算思維要求將注意力集中在感興趣的抽象層次或其上下層,還應當了解各抽象層次之間的關系。
計算思維中的抽象最終是要能夠機械的一步一步自動執行。為了確保機械的自動化,就需要在抽象過程中進行精確和嚴格的符號標記和建模,同時也要求計算機系統或軟件系統生產廠家能夠向公眾提供各種不同抽象層次之間的翻譯工具。
計算思維建立在計算過程的能力和限制之上,由人由機器執行。計算方法和模型使我們敢於去處理那些原本無法由個人獨立完成的問題求解和系統設計。
3.計算思維的關鍵內容
當我們必須求解一個特定的問題時,首先會問:
解決這個問題有多么困難?怎樣才是最佳的解決方法?當我們以計算機解決問題的視角來看待這個問題,我們需要根據計算機科學堅實的理論基礎來准確地回答這些問題。同時,我們還要考慮工具的基本能力,考慮機器的指令系統、資源約束和操作環境等問題。
為了有效地求解一個問題,我們可能要進一步問:
一個近似解是否就夠了,是否有更簡便的方法,是否允許誤報和漏報?計算思維就是通過約簡、嵌入、轉化和仿真等方法,把一個看來困難的問題重新闡釋成一個我們知道怎樣解決的問題。
計算思維是一種
遞歸思維,是一種
並行處理。它可以把代碼譯成數據又把數據譯成代碼。它是由廣義量綱分析進行的類型檢查。例如,對於別名或賦予人與物多個名字的做法,它既知道其益處又了解其害處;對於間接尋址和程序調用的方法,它既知道其威力又了解其代價;它評價一個程序時,不僅僅根據其准確性和效率,還有美學的考量,而對於系統的設計,還考慮簡潔和優雅。計算思維是一種多維分析推廣的類型檢查方法。
計算思維采用了
抽象和
分解來迎接龐雜的任務或者設計巨大復雜的系統,它是一種基於關注點分離的方法(Separation of Concerns,簡稱SOC方法)。例如,它選擇合適的方式去陳述一個問題,或者選擇合適的方式對一個問題的相關方面建模使其易於處理;它是利用不變量簡明扼要且表述性地刻畫系統的行為;它是我們在不必理解每一個細節的情況下就能夠安全地使用、調整和影響一個大型復雜系統的信息;它就是為預期的未來應用而進行數據的預取和緩存的設計。
計算思維是按照預防、保護及通過冗余、容錯、糾錯的方式,並從最壞情況進行系統恢復的一種思維。例如,對於“死鎖”,計算思維就是學習探討在同步相互會合時如何避免“競爭條件”的情形。
計算思維利用啟發式的推理來尋求解答,它可以在不確定的情況下規划、學習和調度。例如,它采用各種搜索策略來解決實際問題。計算思維利用海量數據來加快計算,在時間和空間之間,在處理能力和存儲容量之間進行權衡。例如,它在內存和外存的使用上進行了巧妙的設計;它在數據壓縮與解壓縮過程中平衡時間和空間的開銷。
計算思維與生活密切相關:
當你早晨上學時,把當天所需要的東西放進背包,這就是“預置和緩存”;當有人丟失自己的物品,你建議他沿着走過的路線去尋找,這就叫“回推”;在對自己租房還是買房做出決策時,這就是“在線算法”;在超市付費時,決定排哪個隊,這就是“多服務器系統”的性能模型;為什么停電時你的電話還可以使用,這就是“失敗無關性”和“設計冗余性”。由此可見,計算思維與人們的工作與生活密切相關,計算思維應當成為人類不可或缺的一種生存能力。
計算機科學是計算的學問,它研究什么是可計算的,怎樣去計算。計算機科學不是計算機編程,像計算機科學家那樣去思維意味着遠不止能為計算機編程,還要求能夠在抽象的多個層次上思維。
4. 計算思維的期望
計算思維是每個人的基本技能,不僅僅屬於計算機科學家。我們應當使每個孩子在培養解析能力時不僅掌握閱讀、寫作和算術(Reading, wRiting, and aRithmetic--3R),還要學會計算思維。