程序員在寫代碼的時候bug太多會給計算機造成損壞嗎?為什麼?

魏晉美人


本人從事服務端的軟件開發工作。bug不會引起電腦機械故障。只不過一些嚴重的bug會對計算機的運行處理性能造成一定影響,嚴重者會導致程序停止或崩潰。當程序bug修復後計算機運行指標又會恢復如初。

列舉幾個典型的嚴重bug對計算機性能的影響的例子。

1.cpu密集型(涉及大量的計算類)的死循環,會一直佔用更嚴重者會消耗光計算機CPU資源,導致其他運行程序(或軟件)卡頓甚至崩潰。

2.有些IO密集型任務(比如計算機之間大量的文件等資源傳輸)一直讀取,也會造成計算機卡頓,網絡傳輸擁堵,會影響其他程序的正常運行。

3.內存密集型的任務,比如一些耗費內存的緩存任務,如果佔用內存資源一直不釋放,就是所謂的內存洩露,時間久而久之會耗盡計算機的內存資源,進而導致程序運行越來越慢,最終程序崩潰或者機器宕機。

這種軟件類的程序bug一般不會對計算機硬件造成損害,重啟機器能短暫恢復如初。當然最徹底的解決辦法是修復程序bug後重新部署完才算釜底抽薪了。

總之,bug不會對計算機硬件造成破壞,對性能的影響是暫時的,修復bug後計算機性能完全可恢復的,這點請放心。


IT之眼


你好,一個具有八年嵌入式底層驅動程序設計經驗的工程師回答你提出的問題,程序員在寫代碼的時候Bug太多會給計算機造成損壞嗎?為什麼?答案是大部分情況下不會造成計算機的損壞,極端情況下可能,分析如下:

一、程序設計的分類

隨著現代社會的不斷髮展,我們的軟件分類越來越多,傳統的軟件一般分為底層驅動啟動代碼操作系統中間件和應用軟件等。可以說每個層次的軟件地位劃分不同,一般啟動代碼和驅動程序更加接近硬件設備,而操作系統和應用軟件一般上可認為是純軟的設計,它們距離硬件系統稍遠一些。

二、不同類型程序的訪問特點

像Linux或者Windows這樣的操作系統,對於內部的進程存儲空間是有保護的,也就是說,如果你在桌面系統上編寫一個應用軟件,由於操作系統的保護,最多也就是訪問越界,造成操作系統進入異常處理,終止你的應用進程。所以,如果只是在桌面系統上開發應用軟件,那麼基本不可能造成硬件的損壞。如果是驅動程序或者我們說的Boot軟件,它們啟動時具有硬件芯片最高的訪問權限,一般都會涉及一些最接近芯片內核的代碼,還有各種外設接口的硬件訪問控制,也就是說整個芯片都隨便由其處置,那麼Bug程序如果產生在這樣的軟件之中,極端情況下,就有可能損傷硬件的。


三、列舉一個硬件可能損壞的情況

我舉一個嵌入式系統的例子,假如我們的Bug程序會不斷的擦寫我們的非易失性存儲器,比如NorFlash或者NandFlash,又或者EEPROM,每次上電或者異常都要不停的擦寫,假如擦寫了上百萬次(當然這只是一個假設,Bug也不會存在那麼久),那麼NorFlash可能就會壞掉,Nand產生N多個壞塊,基本上也會報廢。所以從程序的訪問特點來看,驅動程序更接近硬件,Bug可能會造成硬件損壞。

總結以上分析得出,如果只是在計算機桌面系統中開發應用軟件,由於系統的保護,基本不會出現損傷硬件的情況,如果是底層驅動的代碼有Bug,極端情況下,會有損傷壞硬件的可能。


以上是我的觀點,希望可以幫到你,喜歡的話歡迎點贊和關注哦!


瓶凡科技營


原則上程序員寫代碼調試對於計算機的衝擊是有限的,但編程來講不是什麼都是絕對的,如果是windows編程寫的代碼對於cpu或者硬盤有非常大的衝擊,也會造成計算機損害但這種概率還是非常低的,所以對於軟件開發來講可以進行無數次的試錯,而且成本代價很低,這是軟件開發相比硬件要好的地方。硬件的開發試錯成本就會提升很多,硬件的試錯需要具體的器件,如果運行不成功很可能導致器件的損壞。

要說軟件的操作對於具體器件沒有損害,這種話是不對的因為在具體實施過程中,通過軟件來控制硬件的,特別是一些衝擊力比較大的硬件如果軟件控制的時序不對,也會造成硬件的損傷,所以硬件和軟件整體來講是不分家的,硬件不會具體脫離軟件而去運行,軟件的控制硬件的時序不當也會造成期間受到巨大損失。

程序員在具體寫代碼的過程中經常出現bug是非常常見的事情,特別是對於一些新手由於對規則講述不清晰也會造成問題的出現,新手在寫代碼的時候更加容易出現一些異常的錯誤,因為新手在具體實施過程中可能基本的代碼邏輯都會存在問題,更不要說是設計邏輯上的問題。即使非常成熟的程序員寫的代碼也會有bug的存在,因為代碼的細節還是非常繁多,而且只要是軟件產品就會有bug的存在,即使是已經運行多年的產品,如同只要是上網的設備都可能存在被攻擊的可能性。

如何避免寫的代碼出現bug,根本問題在於多做不要怕寫代碼同樣的問題出現多了,自然就會想辦法去規避問題,所以越是經驗豐富的程序員越是對代碼的把握能力強,而且老程序員在對待出現的問題還能推演出不對的問題所在,所以經歷項目多的程序員在處理緊急問題時候表現的更加沉穩。

好的程序代碼在運行過程中不但損耗少,而且還非常的穩定,如果寫的代碼對於硬件資源佔據的比例非常大,長時間運行系統就容易變得不穩定,同樣是一直在運行的程序但是用的時間長就能看出好壞了,bug是程序開發過程中必不可少的因子,也是程序員成長過程中必然要經歷的事,解決的bug越多經驗顯得越豐富,涉及到嵌入式的軟件開發對於硬件的控制就要加倍小心了,因為硬件需要在合適的工作環境下工作,像強電的操作如果軟件控制的時序不對,就會造成器件的損壞,用軟件控制硬件的場景使用的就非常多,關鍵器件的工作是需要合適的條件的,硬件在非常規下運行的時間長了,自然就會縮短壽命了,希望能幫到你。


分享到:


相關文章: