-
1 # 北漂老趙
-
2 # PM宋先生
複雜的講不來,說點通俗的。先來問一下,你覺得你是怎麼讓你控制你的身體運動的呢?
比如說你的手觸控到碗,被燙了一下,然後你立即將手縮了回來。從這個流程來看,是不是得先有一個外界的輸入,也就是觸控的碗是很熱的;然後面板將這個“熱”翻譯成感覺訊號傳遞給大腦?大腦再做出相匹配的反應,然後輸出給手部的肌肉;肌肉接收到這個訊號,做出相對應的反應,把你的手縮回來。那麼我們其實說硬體就是手、大腦這些東西對吧?那麼軟體是什麼呢?是不是其實就是這一系列神經傳遞的東西啊?
實際上,從結果來看,是硬體控制硬體做出的反應,就像你伸手摸碗,最後縮回手臂,便面上改變的只是你的硬體狀態;而所謂的軟體,只不過是你身體內部神經之間的傳遞,你是摸不見看不著,但是卻真真實實感覺它們好像存在一樣。其實手機電腦也是一樣的。
我們使用者就是碗,鍵盤和滑鼠就是人手,處理器+快閃記憶體就是大腦,儲存著預先設定好的各種指令供大腦調配,螢幕、音響、攝像頭、喇叭這些東西就是最終要做出反應的硬體。都知道處理器計算速度越快,電腦執行起來就越快,這就像是腦子聰明的人和腦子笨的人同時做100道乘法,腦子聰明的人肯定能更快算完(不就是從記憶中匹配出相對應的乘法口訣表)。電腦處理器也是一樣,同時湧入1W條需要處理的指令,每條需要匹配到相對應的指令最終輸出給預定的硬體,運算差的處理器需要的時間就越長,使用者感覺電腦執行起來比較慢。
電腦的輸入,是鍵盤和滑鼠,每一個按鍵,都代表著一個特殊的訊號,你敲打鍵盤,內部的邏輯是給到一個相應的訊號,這個訊號屬於高階語言,計算機並不能直接讀懂,因此中間就需要編譯器轉化為硬體能夠讀懂的組合語言,也就是硬體的指令,這種指令其實已經被提前設定好(所謂的下載軟體是下載什麼東西呢?其實就是這樣的一套預先設定好的指令集),也就是輸入什麼指令,計算機就會從資料庫中匹配相應的指令輸出(這就是為什麼大腦給你傳遞的資訊是鬆手,你絕對不會握緊,因為這種指令是提前設定好的,鬆手的指令是鬆手,握緊的指令是握緊)。
所以說,我們平時所看見的所謂顯示屏上顯示的“系統”和“軟體”,其實本身只是硬體的不同形態而已,就像你此時看見這篇問答的時候,你看見的黑色字型,不過是螢幕畫素點調整到了不同亮度組合而成的罷了,哪兒有什麼所謂的軟體。軟體只不過是源源不斷在計算機內部傳遞的電訊號,告訴硬體應該以什麼樣的方式來展現給使用者,螢幕的幾百萬個畫素點該怎麼亮,喇叭應該怎麼震動而已。一切的一切,都只是硬體的不同形態。
回覆列表
如果將題目換成:“軟體怎樣讓硬體工作”可能更合適,站在人的視角可能被認為是軟體在做事情,實質是它在驅動硬體工作,軟體輸人的是人的行為,輸出硬體可以接收的機器指令,硬體接收到指令後,將其轉換為電訊號,繼而應用到具體的實體上,達到控制硬體的行為,核心就是人透過軟體控制硬體的行為,滿足人的需求。
我們可以進行深入討論,軟體是透過高階語言來表達人的行為,如java,python,.net等等,這些高階語言不會直接操縱硬體,它只是人要做的事情,編譯器將高階語言轉換為彙編或機器語言,透過二進位制的方式生成CPU可以識別的機器指令,這就進入到硬體可以識別的範圍了,硬體透過指令實現各種與非門或積體電路中二極體的通斷,應用在各種家電或電子產品上。
總之,如果用一場戰役來詮釋的話,軟體相當於是一個作戰計劃,而硬體就是根據這個計劃部署的各種軍事裝備以及實打實的戰爭現場。軟體指導和操縱硬體按照既定方案執行。