碰到問題時,曾試圖站在機器的角度去處理,可是卻感覺無從下手,請問如何用計算機思維來解決問題?
正確的理解計算機思維,可以回答該問題。計算機思維是在學(xué)習(xí)和應(yīng)用計算機學(xué)科理論和技能的過程中,所體驗和獲得的思想方法和做事方法。它分為三個層次:
首先是宏觀層面,包括對“可計算”這個思想的理解,也就是如何使用計算機這個工具,將虛擬世界處理問題的方法變成解決現(xiàn)實生活中的各種實際問題的方法。換句話說,計算機思維需要你針對現(xiàn)實生活中的問題找到計算機的解決策略。
無論是 Google 讓計算機下圍棋,還是實現(xiàn)計算機開車,都首先要將現(xiàn)實生活中的問題和虛擬世界的問題對應(yīng)。
接下來是“中觀”層面。要理解中觀,一個很好的例子就是計算機的操作系統(tǒng)。任何操作系統(tǒng)都要求按照各項任務(wù)的優(yōu)先級和可使用的資源,設(shè)計出調(diào)配資源、讓計算機各部分協(xié)同工作的方法,并且對于各種任務(wù)進行整體優(yōu)化。一個好的操作系統(tǒng),不是做某一件事特別好,而是在資源有限的情況下整體上讓人感覺特別流暢,比如蘋果的操作系統(tǒng)就是如此。
接下來,一個比較學(xué)術(shù)化的例子,就是計算機科學(xué)中的遞歸原理。它將大事分解、從小事做起,步步干凈利落、自頂向下設(shè)計,再自下而上回歸,非常具有美感。
為了便于你理解遞歸,我不妨舉這樣一個例子。如果想管理好一個公司該怎么做?這家公司的 CEO 只要管理好手下幾個副總裁就可以了。那么副總裁該怎么做?只要用同樣的方法管理好自己事業(yè)部下面幾個總監(jiān)就可以了,類似地,總監(jiān)管理好經(jīng)理,經(jīng)理管理好一線員工。CEO 不必操心怎樣管每一個員工。我個人也覺得,遞歸是計算機科學(xué)的精髓所在。
第三個層面是微觀。這才涉及到具體技能,但還不是簡單的編程等技能,而是這樣幾個方面:
1、設(shè)計出計算機內(nèi)部整理和查找信息的技能(addressing)。計算機內(nèi)外的各種資源都要合理地編號存儲,然后根據(jù)編號來訪問,要有合理的編號方案,以及與其配合的高效率訪問算法,這是實現(xiàn)計算機各種應(yīng)用好壞的關(guān)鍵。在生活中,它等同于我們處理各種事情的條理性。
2、緩存。凡事要留有余量,很多時候要預(yù)先準備好數(shù)據(jù)和程序,這就是緩存。這樣當大事當前時,能有所準備,有空間回旋。
所以,如何用計算機思維解決問題?用計算機思維的觀點總結(jié)一下:
1、宏觀:找到現(xiàn)實世界和虛擬世界的對應(yīng);
2、中觀:在有限資源的情況下做到全局最優(yōu);
3、微觀:合理組織和利用資源,凡事留有余地。
節(jié)選至《吳軍的谷歌方法論》