軟體能完全用硬體來實現嗎?
下面記錄一個問題,和相應的回答。
問題:請問所有軟體是否均可用硬體來實現?如果不計成本和開發難度。
因為一臺機器最底層的是硬體,其上有韌體(硬化的軟體),再向上是軟體。而軟體的概念來自於硬體,目的應該是對硬體的功能進行充分利用,軟體無非就是硬體執行的邏輯,硬體應該可以本身就可以實現這種邏輯。但是全部用硬體來實現的話,硬體就會非常複雜,開發難度很大,成本也非常高。 我的觀點正確嗎?請各抒己見。
我覺得很好的回答:
僅從理論而言,所有的軟體都能通過模擬(數字)電路來實現,相當於把程式固化到硬體上。好處是速度會快得多;缺陷是升級較困難。 有很多這樣的例子,比如DVD播放機,就是把視訊解碼程式固化到硬體中實現的。 但是,有些很複雜的軟體系統,如果用硬體實現,基本不現實,也沒有意義,因為硬體成本太高了。而且大系統經常需要變動,這就不是硬體系統所能承受的了。 所以說,你的觀點正確!
下面說說我的看法。我認為,理論上硬體電路是可以實現所有軟體的,既然電路可以實現簡單的計算邏輯,當然也可以實現複雜的計算邏輯,而軟體就是對一個計算邏輯的描述嘛,所以說可以完全沒有軟體的什麼事!但是,這樣對於極其複雜的計算邏輯(也就是大型軟體系統)來說,實現這個邏輯的電路會非常非常複雜,開發難度很大,成本非常高,因此是不現實的行為!
還有,我覺得在儲存程式計算機以前,人類發明的計算工具都是完全用硬體來實現全部計算邏輯的,注意這裡的硬體可不只是電路了,還有各種機械齒輪等東西,這種計算工具也可以稱為固定程式計算機,固定在於全部計算邏輯實現在硬體中,無法更改,是完全沒有軟體的概念的。
後來,圖靈提出了通用圖靈機這個抽象的計算模型,終於有了軟體的思想。我們可以實現一個通用的簡單的硬體,進而把硬體支援的功能抽象成指令集,通過簡單計算的組合來完成複雜的計算,通過軟體來描述計算邏輯,這樣我們就可以把計算邏輯從硬體中抽離出來,把計算邏輯變成資訊(講真,我覺得演算法本身就是資訊,就是怎麼去處理一個問題),存放在軟體當中,從而可以實現單純用硬體難以實現的複雜計算過程。最終,馮諾依曼提出儲存程式計算機的架構,把這種想法變成了現實。從此,我們有了通用的計算工具。我們想讓計算機完成不同的任務不用再造一臺新的計算機,而只需方便的更改軟體中的計算邏輯即可讓相同的計算機完成這個不同的任務。