-
1 # 雷水初六
-
2 # 知擎物聯o青楓o創業中
作為一名從業十二年的老程式設計師可以告訴你,任何專案,BUG是少不了的,專案複雜度越高,參與的人越多,用的技術棧越廣,BUG就越多,何況是WINDOWS這種作業系統級別的,光測試人員就得以萬計了。
-
3 # 未來架構
簡單來講,因為它有太多的原始碼。 每個應用程式都有bugs,bug的數量傾向於與應用程式中原始碼的行數成正比。在程式設計的歷史上, 每行程式碼的bug的數量幾乎沒有變化過,所以程式越大,bug也越多。
我們目前無法訪問微軟的Windows內部bug倉庫,但如果僅檢視Linux核心的bug的倉庫,就會發現它有大約7000個未解決的bug。 對於經常使用核心,包括Windows / CE,各種Unix核心和NetBSD,這樣的bug數量非常正常的。
-
4 # 自由史話
我有靠譜回答為什麼windows系統做不到完全沒有bug? 在這裡我就不用多麼繁瑣的技術層面來分析給你看了,就說一點現實層面的問題。
說道bug,就不得不說我高中時候的一件事情,那時候我們班級的男生都喜歡玩qq飛車,我對遊戲沒有半點興趣,但有時候也陪著他們去。
我們班裡的一個遊戲大神,有一次指著飛車裡面一次轉彎,按了鍵車子就不是不轉彎,他說有b u g,他是三個字母一個一個說的,我那時候還不懂b u g是怎麼意思。直到一次無意中說給我們的計算機老師聽,把他氣得夠嗆,說:“什麼比有季,那個念bug!!”。
我這是第一次對面電腦bug有直觀的印象,畢竟讓計算機老師好一頓批評了,還說我們上課沒有有仔細聽,我們那時候課業重,也沒把計算機老師當回事。現在想來怪對不起他的。
曾經有一次對待電腦的漏洞,更加令我深刻,我和大學班級裡面的一位大神談到這個問題,他當時一席話,就讓我徹底明白了為什麼會這樣,我初問他時,他很不屑一顧,之後被我弄煩了,就說:“電腦手機是人造的,人有時候腦子都不清醒,你指望著手機電腦一輩子不出事,這不是痴心妄想嘛”
他這樣一說我就懂了,大家想一想,電腦硬體是不是和人一樣,有很多組成,cpu、主機板、記憶體等等,這裡面每一個部件裡面又有很多東西,cpu裡面多少電晶體就不說了,主機板裡面的電容、晶片也不是一個小數目,就和人一樣,人吃五穀雜糧,電腦吃電線裡面的電,人很多器官,怎麼就能指望不出問題呢?
Bug一詞的原意是“臭蟲”或“蟲子”。從電腦誕生之日起,就有了電腦BUG。第一個有記載的bug是美國海軍的程式設計員,編譯器的發明者格蕾斯·哈珀(GraceHopper)發現的。哈珀後來成了美國海軍的一個將軍,領導了著名計算機語言Cobol的開發。1945年9月9日,下午三點。哈珀中尉正領著她的小組構造一個稱為“馬克二型”的計算機。這還不是一個完全的電子計算機,它使用了大量的繼電器,一種電子機械裝置。第二次世界大戰還沒有結束。哈珀的小組日以繼夜地工作。機房是一間第一次世界大戰時建造的老建築。那是一個炎熱的夏天,房間沒有空調,所有窗戶都敞開散熱。突然,馬克二型宕機了。技術人員試了很多辦法,最後定位到第70號繼電器出錯。哈珀觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她小心地用攝子將蛾子夾出來,用透明膠布帖到“事件記錄本”中,並註明“第一個發現蟲子的例項”。從此以後,人們將計算機錯誤戲稱為蟲子(bug),而把找尋錯誤的工作稱為(debug)。程式中隱藏的功能缺陷或錯誤。由於現在的軟體複雜程度早已超出了一般人能控制的範圍,如Win95、Win98這樣的較成熟的作業系統也會不定期地公佈其中的Bug。如何減少以至消滅程式中的Bug,一直是程式設計師所極為重視的課題。作業系統和應用軟體更是如此,每一個軟體都有屬於它自己的程式語言書寫,有的軟體還是好幾種語言寫就的,那些作業系統,就以你說的windows為例,裡面至少好幾種語言,幾千萬行程式碼還有好多資原始檔,怎麼實現的功能就能一直不出衝突呢?
就連業界最知名的unix也是這樣,unix可是很多系統的老祖宗了,不過系統再好也是程式設計師寫的,還是很多不同的程式設計師,你指望他們的合作始終一帆風順,還對合作者的思想了解甚深,通力合作寫出來一個沒有bug的程式碼?這又怎麼可能!
在硬體和軟體方面根本就沒有辦法根除bug,就像我們和甲方合作一樣,他要五彩斑斕的黑色,我們怎麼給他們。
就像電腦執行慢一點,有的人也把電腦卡頓的原因怪給bug,那樣對bug定義都互有不同理解,那又怎麼可能徹底解決呢?
所以對於優秀的程式設計師來說,最好是能發現的了bug,也能解決的了bug,而並不是天方夜譚的想寫出來一個沒有bug的專案。 -
5 # 裝機帝
我認為所有人造的東西都不可能100%的完美,不管軟體還是硬體!我的觀點你同意嗎?同意的話就算我的回答,不同意的話當我沒來!哈哈哈
-
6 # 鮮事狗gogogo
不是我噴你 能問出這個個問題的 絕對是小白一個
就好比沒有十全十美的人,程式也一樣,有bug是難免的。只能是發現bug去修補,讓程式日驅完善。
回覆列表
任何一個大型系統都不可能沒有bug。一方面大型系統必然是分組劃分模組開發,最終進行合成,相互配合,結構會存在疏漏;另一方面大型系統,規模大,其中的邏輯流程,判斷執行,必可避免會出現問題。bug不是說錯誤,而是有時候程式碼執行一切正常,執行100遍都正常,但執行到101次的時候就會和另外一個流程發生衝突或者不執行某行程式碼,通常bug都是執行邏輯上的問題,說是漏洞,其實不是真的有一個窟窿,而是能繞過某個判斷,或者對陣列,堆疊的處理不仔細,當一些特定操作發生時,就會出現區域性失靈但整體絲毫無損。
因此,一行程式碼在單獨執行時毫無問題,當把它放到一個大規模系統中以後,就會出現單行程式碼或小型程式碼不會出現的問題。bug不僅僅是錯誤,更多的是邏輯漏洞或者在特定執行情況下出現錯誤、不應有的操作,所以簡單的錯誤可以避免消除,但其他的bug不會被完全清楚,甚至有人編段子說微軟為了修復10個漏洞釋出了一個補丁程式,結果10個漏洞修復了8個,新程式又產生了10個新的漏洞。