很多人認為計算機嘛,顧名思義主要是計算的機器,於是有一種錯覺,既然是計算,那自然聯想到小學初中學的數學加減乘除運算.困惑自然而然的產生,通過加減乘除這麼簡單的不能再簡單的數**算計算機能實現如此之複雜的功能?真是活見鬼了啊.另外你寫看下你寫的**中有多少**是要求幾個整數的加減乘除的啊?
實際上說計算機主要是計算這點確實是沒錯的,但是不是我們習慣思維所認為的普通數學中的那種加減乘.而是有另外更深刻的含義的.我後面會討論到.計算之所以有如此強大的功能與如此廣泛的應用.主要利益於計算機理論最重要的兩個部分:資訊和邏輯.下面我來簡單的介紹下.
我們知道電腦最強大的功能之一就是能儲存海量的資訊.乙個個小小的硬碟可以把乙個大大的圖書館裡的全部書的內容都儲存進去.各種文字,聲音,影象資訊都可以編碼成二進位制然後儲存到電腦中.可以說就算電腦沒有其它任何功能,光只有儲存資訊,然後能讓我們檢索資訊,以適當的方式顯示資訊給我們看,那它也必然會在各行各業普及了.
實際上我們很多時候用電腦主要就用到它的資訊處理功能.
資料就是資訊的載體啊.我們程式設計時用到的int ,long ,float, char,string這樣的簡單的資料型別之所以能實現這麼強大的功能就是因為它們不僅僅是枯燥的資料,而是因為他們能代表一些資訊,能儲存資訊,處理資訊,傳遞資訊.
而電腦儲存資訊的理論基礎就是資訊理論了,對資訊理論做出突出貢獻的代表人物就是夏農(shannon).可以說在計算機界,他的地位可以與大名鼎鼎的圖靈相媲美.資訊理論涉及到很多非常複雜理論和看得讓人暈乎的術語.不過反正它的主要作用就是研究把世間萬物中蘊含的資訊編碼成數字或符號,然後怎麼傳遞這些資料,怎麼保證資料傳遞的準確性,安全性等等一些問題.
另外我們知道資訊可以表示成任何數字或字母等符號.實際上我們使用的漢語,英語等日常語言也可以看成是把現實中的很多資訊編碼成字元.不過在計算機中主要是把資訊編碼成二進位制數字.而恰好通過計算機的物理元件,電晶體,閘電路這些玩藝可以非常美妙的表示二進位制.乙個電晶體開關的開與關就可以表示成1和0.而只要有了01這兩數字.計算機就足以用來編碼表示任何資訊了.所看起來簡單的不能再簡單的事物可以組合出複雜的嚇人的事物來.我們人身上的dna就是一些簡單的鹼基對,這和二進位制也蠻類似.
二進位制的威力如此之大,那發明二進位制的人自然絕對是位牛人,偉人啊.一般普遍認為是德國的萊布尼茲發明了二進位制的,不過有很多中國人認為我們古代的太極八卦圖裡面就蘊含二進位制的思想,萊布尼茲也是因此受到啟發而發明二進位制.至於具體情況咋樣沒人知道啊.
剛說到是二進位制是被發明.實際上關於數字原理與規則到底是大自然中本身就存在,我們人類只是發現這些原理,而是本來不存在而是我們創造出各種數學原理的.這是一直有爭論的.作為有宗教信仰的科學家來說毫無疑問,數學原理是被發現的,本來就有的.甚至有人認為,上帝就是乙個數學家,上帝運用各種數學原理建立出這個世界.所以數學也能神奇的運用到各行各業中.而無神論的科學家可能更傾向於認為數學原理是被發明的,自然界中本來不存在的.
這就是計算機的邏輯處理能力發揮的強大功能.那邏輯又是個啥東東啊,而且計算機本身只識別01這樣的資料.它怎麼實現邏輯功能的啊?
這就要把數學和邏輯是怎麼結合到一起的.邏輯是啥的,舉些簡單的例子,比如我是對的,你是錯的. 因為你長的矮挫窮,而女的喜歡高帥富,所以你這會還在打著光棍. 裡面出現的對與錯,因為,所以這些詞就是表示的一種邏輯概念.像狄仁傑,包黑炭,福爾摩斯這幾位老兄查案進做的推理也都是邏輯推理.一般都是因為啥啥啥,所以啥啥的,最後就認為你是**.
那我們知道計算機只識別數字,也就是說計算機中只能用到數學知識.所以要實現邏輯就必須把數學與邏輯兩個不同的學科結合起來.
先來說點題外話,看數學是怎麼發展的.數學可以簡單的劃分為幾何和代數兩大塊.
在古希臘的時候幾何是非常發達的,歐幾里得的《幾何原本》在今天仍然是被奉為經典.而且在某個範圍上來說是完全正確的.畢達哥拉斯雖然對數有研究,並且說啥萬物皆數,但他眼中的數也主要是來為幾何服務的.他最具代表的理論也是幾何中的理論,就是直角三角形邊的關係.只有到了近代數學才慢慢受到重視.以迪卡爾為起點,他首先提出了把代數與幾何結合起來,形成了著名的解析幾何,於是大家對代數重視起來了.在很多數學家的進一步發展下,代數變得完全可以與幾何媲美,甚至超越幾何的勢頭.
另外傳統的歐幾里得幾何也因非歐幾何的出現而受到一定的衝擊,以前大家都理所當然的認為,通過一點只有且僅有另外一條直線的唯一一條平行邊.三角形三內角各永遠是180度啊.這都被認為放之四海皆準的真理.但非歐幾何否定了這個觀點.假如空間的是曲面的,比如空間是像乙個球面,這樣三角形三內角和不一定是180度,過乙個點也未必存在過一點的另外一直線的平等線.主要這裡說的是空間是曲面的.跟我們說的地球是曲面的完全不是乙個概念.我們直觀經驗沒法想象到空間曲面.愛因斯坦的相對論就是基於非歐幾何的,愛因斯坦認為引力的作用會導致空間坍塌,空間就變成彎曲的了.此時兩點之間也不是直線最短了.
當數學在各行各業,特別是物理學中取得巨大的成功時,人們認為數學是不是可以應用到任何地方.比如說人類思維的研究中 ? 於是嘗試把數學與邏輯結合起來.而其中最有出名的代表任何時布林,他創立的布林代數.看起來簡單的不能再簡單的.就是二進位制01的加減乘除運算運算,1+0 = 1; 1*1 = 1; 1*0=0; 說到這就可以嚥到開頭我討論的乙個話題了,我們認為計算機做計算是普通數學中的加減乘除,實際上計算機的計算是01這樣的二進位制的加減乘除.那有啥不一樣呢 ? 因為二進位制的算術運算還有邏輯的含義在裡面,1可以代表真,0代表假. 於是各種真假的組合及運算可以用來完成所有的邏輯推理.
馮.諾伊曼在研究電腦與人腦的聯絡時,就認為大腦能實現一些邏輯功能與人腦構造具有二進位制機制的神經元有關.比如我們處理各種資訊都要通過神經元傳遞.當乙個神經衝動傳遞到另外乙個時,就會通過判斷強弱來決定是繼續傳遞還是忽略掉,只有二選一的抉擇.這跟計算機硬體功能一樣,電晶體關閉電流通過,開啟電流不能通過.這跟神經衝動傳遞一樣.
有了資訊理論與邏輯處理這兩機制計算機就能發揮巨大功能了啊.我們寫的**中絕大部分也就是跟這兩者有關.各種資料型別自然是用來儲存資訊,然後各種if , else ,while, && ,||之類的的邏輯判斷與操作自然就跟邏輯處理有關.
組成計算機指令的兩部分是
計算機指令格式通常包含操作碼和運算元 位址碼 兩部分。計算機指令就是指揮機器工作的指示和命令,程式就是一系列按一定順序排列的指令,執行程式的過程就是計算機的工作過程。控制器靠指令指揮機器工作,人們用指令表達自己的意圖,並交給控制器執行。推薦學習 web前端 教程 原理控制器靠指令指揮機器工作,人們用...
計算機系統由兩部分組成它們分別是什麼
計算機系統由兩部分組成,它們分別是硬體系統和軟體系統。硬體系統是借助電 磁 光 機械等原理構成的各種物理部件的有機組合,是系統賴以工作的實體 軟體系統是各種程式和檔案,用於指揮全系統按指定的要求進行工作。本文操作環境 windows7系統,dell g3電腦。計算機系統由兩部分組成,它們分別是硬體系...
電腦科學中最重要的32個演算法
奧地利符號計算研究所 research institute for symbolic computation,簡稱risc 的christoph koutschan博士在自己的頁面上發布了一篇文章,提到他做了乙個調查,參與者大多數是計算機科學家,他請這些科學家投票選出最重要的演算法,以下是這次調查的...