1. 程式人生 > >與朋友聊計算機的本質

與朋友聊計算機的本質

昨天和卞整序討論計算機的發展方向問題,發現我們如果不理解計算機到底是什麼,討論計算機的發展就是沒有意義的,於是發信給幾個朋友,一起討論一下。

郵件主題:你覺得計算機的本質是什麼?

以下是各個朋友的討論:

huangzhenglin:     。。。。。。

工具吧。。
huangyanhua:    工具
yanzhihui:  數字運算
wangpeng: 這個問題好大啊 先說說你的看法把
weishun:   數位電子(不太清楚)
wangke:   我認為是硬體和軟體的組合。
husiyi:   計算機的本質我個人認為就是一套數字邏輯電路,一切的操作都是0和1的變化。
我(libo):   計算機從物理上來說,是硬體和軟體的組合。軟體應該是和硬體等價的,能用軟體實現的事情,用硬體都可以實現,反之則未必。而歷史上出現的所有工具(可以認為都是硬體),都是人類思維的儲存器。因為它們都是人類解決某一問題方法的抽象。這就是我的認為,計算機是人類思維的儲存器。
bianzhengxu: 歷史上出現的工具可以認為是硬體,我同意.計算機本身是硬體和軟體的結合.軟體和硬體是等價的,那麼從根本上說軟體和硬體應該可以相互實現.這就好比是我在問你先有硬體的出現還是先有軟體的出現.
計算機先有理論模型,這種模型先於硬體存在,它可以工作與人腦中,相當於是一個純粹軟體的東西. 
不過如果沒有硬體,計算機的速度恐怕就真沒人腦快了哈.電子計算機只是計算機模型的電子層次的實現,他有自己的速度上限.在思維中工作的計算機模型也有自己的速度上限.以前經常流行的光子計算機說法也有它的速度上限.
所以說,計算機是人類思維的產物,但它不僅僅是人類思維儲存器的角色.計算機的發展過程是人類通過另外的途徑模擬,複製自身的過程.

husiyi:  如果說飛機是人的翼的增幅,車是人的腿的增幅,那麼計算機就是人腦的增幅。硬體相當於裝置,軟體相當於操作,即使是機器碼,亦甚至是電壓表的輸出值,我也認為這是軟體輸出的內容。換言之,如果有一個人能夠直接用自身感受到電壓並說出電壓值,那麼這個人就相當於一個軟體。

我(libo): 

     說到這裡,我們應該關注一下軟體與硬體的關係。
    “甚至是電壓表的輸出值,我也認為這是軟體輸出的內容。”我認為這句話沒有搞清楚軟體和硬體的關係,當然,軟體和硬體的關係相當曖昧,所有人都在誤解。
     先說說人們對軟硬體的感性認識。
     從辯證的觀點來看,沒有硬體的概念,也就沒有軟體的概念。兩者是相依而生的。兩個的區別在於,一個看得見摸得著;另一個看不見也摸不著,但是可以從執行結果感受得到。所以人們就給有前一個特性的東西起名叫“硬體”,給具有後一個特性的東西起名叫“軟體”。久而久之人們便開始簡化對“軟體”的認識:看起來只能從執行結果感受到的東西。(注意這裡的‘看起來’)
     先定義一下“純硬體”:自然存在的物質。
     讓我們再從微觀的角度來看一看軟體在執行過程中都發生了些什麼:電子不斷地進出CPU的暫存器和記憶體,重複上千萬次。最後結果出來了,人們的感覺就是,這裡面都是“軟體”在起作用,我們看得明白的人知道,人們這時候所謂的“軟體”實際上是“人類的思維+底層純硬體”,只不過人類的思維是在執行的過程中體現出來的。
     再來看看硬體吧,我們對硬體的理解也很淺薄,不過和對軟體的理解不一樣,大多數人認為硬體就是硬邦邦的一塊東西,再深一層的理解是它能實現一些功能。到這一層,我們還沒有理解硬體,讓我們想一想硬體如果實現不了我們想要的功能,它還是硬體嗎?再想一想它是如何實現它的功能的?我們就要發現比較有趣的事情了。硬體之所以能實現我們想要的功能,是因為它們有特定的結構,比如飛機有機翼所以可以飛上天空,自行車兩個輪子而且有一定的向前的速度,所以才不會倒向兩側。這個結構的本質是什麼,是人類思維的固化。即人類的思維以一種結構的形式存在下來。所以,硬體的本質應該是“人類的思維+底層純硬體”。只不過為類的思維是任何時候都可以看得出來的結構。
     這麼看起來軟體和硬體應該是一樣的了,沒錯。我想是這樣的。不過它們一定也有一些不同的地方,正是這些不同的地方,將它們區分開來。那麼什麼是不同的地方呢?
     我分析認為,它們的不同就在於前面兩段話的最後一句,一個是與純硬體的晚繫結(軟體),另一個是與純硬體的早繫結(硬體)。這也就是說,我們所謂的硬體是人類思維和純硬體的緊耦合,而軟體則是人類思維和純硬體的鬆耦合。從這個角度看,軟體和硬體的優勢和劣勢也就一目瞭然了。軟體的耦合性較低,所以靈活,但是卻犧牲了效率;硬體的耦合性較高,所以速度高專用性強,但是損失的是靈活性。

weishun:   

“從物理的角度看,計算機是硬體與軟體的結合”,我以為從物理角度看就是一堆廢鐵呢。“計算機是人類思維的儲存器”,歷史上出現的很多東西都是人類思維的產物,是人類智慧的結晶。
     我不覺得幾個人辯論一番就能給計算機的本質下一個定義,要真正理解計算機,首先要對它的發展史有一個認識,而且不是一般的認識。這類問題在論壇上一般容易引起口水仗,大多數會以各個陣營的憤憤不平收尾,誰也說服不了誰。很多我們看似很明白的概念,其實是因為我們沒有真正理解。程式語言之爭在各論壇上不時出現,我看到國內業界那些頂尖高手們對某些看似簡單問題的看法也幾乎沒有一致的,不同的經歷常常導致人們對事物有不同的看法。做硬體的,對硬體的理解可能並不夠;做軟體的,對軟體的理解也可能還很狹隘。那怎樣才能讓我們的理解更接近所謂的真理呢?個人認為只有不斷地學習,不斷開放我們的視野才能辦到。怎樣開闊視野呢?課餘時間多收集資料,讀讀那些大師們的paper,看看相應領域裡面那些顛峰人物都在做些什麼。久而久之,就能培養一個正確的觀念,畢竟,“正確的觀念重於一切(候捷語)”。