程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 計算機思維方式

計算機思維方式

編輯:C++入門知識

對於計算機專業的人來說,電腦無疑是非常傻的。沒有智能,不會思考,他只會執行有限的簡單的指令。它的優點是不會感到累。我們程序員的職責就是用計算機能懂得語言告訴他做一些事兒。 盡管計算機做的事如此簡單,但是在紛繁的應用中,他還是表現了他解決問題的一些特征,如果程序員能很好的理解這些特征,那麼我們的工作將會事半功倍。 一. 人腦的智慧VS電腦的不知疲倦+快速 對面坐了5個學生,有一籃蘋果,其中一些事壞的。任務是將好的蘋果盡可能平均的分配給這五個學生。 人:大概估計籃子的大小,蘋果量的規模,分別往每個人面前放大概1/5規模多的蘋果,最後進行調整使其平均化。 電腦: [cpp]      [cpp]   i = 0;   while (hasApple()) {       apple = getApple();       if (apple is bad) {           continue;       } else {           give this apple to people[i++ % 5];       }   }   分析:很明顯,人腦是非常智慧的:一心多用,預估,動態調整等。每一項都讓電腦很難辦到。相反電腦的做法非常簡單,每個瞬間注意力只集中到一件事上,一個一個往外拿,壞的就扔,好的就挨個分。但是借助於電腦對每一動作的超高速執行,整個分配工作瞬間就可以完工。 如果讓人按照電腦的思維方式工作,分完這籃蘋果得好久。如果讓電腦按照人的思維方式工作,得寫多少代碼,人工智能都得搬出來。 因此,人腦和電腦的思維方式工作特點非常不同。而作為給電腦發號施令的程序員,能夠掌握電腦的思維方式顯得尤為重要。 二.胸有成竹 你用英語都寫不出來的東西就別指望寫代碼了。   ——Peter Haopern. 有了思路才能寫出可工作的代碼,在問題未清晰定義,思路尚模糊,只能有感覺,應該,大概這樣的詞來形容自己的思路的時候,就開始寫代碼的話,寫到一半往往發現思路完全不對。當然有人可能感覺,寫著寫著思路就出來了,那是因為寫的過程就是在梳理思路。那麼為什麼不在寫代碼之前就用更加嚴謹,規整的方式梳理好呢? 三. 人腦與問題規模 人腦對問題規模的判斷往往是線性的:1個,2個,3個……。 而計算機對規模的判斷往往是指數級的:log , 線性,平方,立方……。 要習慣計算機領域用數量級來衡量問題,比如空間性能,時間性能。 人腦經常處理的是某個數量級的問題,不擅長同時處理跨越多個數量級的問題。比如很難關注同時關注整個項目框架進度方案實施和某個小函數的小算法實現。所以我們需要模塊化,分解開不同數量級的問題,到每個人身上只關注本書良機的問題。 三.量化分析問題 盡量數據話,量化的分析問題,不要總憑感覺。合理的量化分析後往往有優良的解決方案。例如: A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to calculate the value of f(n). 數據規模n非常大的話,怎麼處理?認真分析一下,其實兩個連續數字只有7*7=49中組合,那麼序列中必然出現循環。這樣的話,問題就簡單多了。 四.等價類劃分 程序運行就是設計好的指令的執行。那麼對於這些指令來說,什麼樣的數據他認為執行的路徑是一樣的。就沒有必要重復測試。所以,測試的時候,盡量劃分好等價類。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved