程序員是做什么的 漏洞為什么叫BUG?
漏洞為什么叫BUG?Bug是由美國海軍準(zhǔn)將、計(jì)算機(jī)科學(xué)家、世界上最早的程序員之一格雷斯·霍珀“命名”的。有一天,她在調(diào)試設(shè)備時(shí),壞了。打開繼電器后,她發(fā)現(xiàn)觸點(diǎn)中間有一只蛾子被壓扁,從而“擋住”了機(jī)器的
漏洞為什么叫BUG?
Bug是由美國海軍準(zhǔn)將、計(jì)算機(jī)科學(xué)家、世界上最早的程序員之一格雷斯·霍珀“命名”的。有一天,她在調(diào)試設(shè)備時(shí),壞了。打開繼電器后,她發(fā)現(xiàn)觸點(diǎn)中間有一只蛾子被壓扁,從而“擋住”了機(jī)器的運(yùn)轉(zhuǎn)。于是,霍波幽默地稱程序故障為“bug”,稱故障排除程序?yàn)椤癲ebug”,這個(gè)奇怪的“名字”成為后來計(jì)算機(jī)界的專業(yè)術(shù)語。
程序Bug是如何產(chǎn)生的?
好問題。作為一個(gè)程序員,看到這個(gè)問題,我忍不住想說點(diǎn)什么。就像我以前看到的一個(gè)問題:為什么會(huì)有程序錯(cuò)誤?程序員不能一次完成嗎?
首先,我們需要了解程序開發(fā)的整個(gè)過程。
1. 公司的商業(yè)大亨們希望通過調(diào)查或自己的想法來開發(fā)一個(gè)程序;或者他們希望在收到其他公司(即客戶)的想法后開發(fā)一個(gè)程序。
2. 公司產(chǎn)品負(fù)責(zé)人通過與方案提出人的溝通,確定具體細(xì)節(jié),做什么樣的方案,并形成文件,即所謂的需求調(diào)研。
3. 產(chǎn)品需求確定后,開發(fā)負(fù)責(zé)人將整理好的需求文件發(fā)給開發(fā)人員,開發(fā)人員參照這些文件進(jìn)行開發(fā)。
4. 測試boss,程序開發(fā)完成后,不會(huì)直接提供給客戶或拿出來使用。相反,它需要經(jīng)過公司測試才能完成程序測試,這樣才能確保在對(duì)外提供之前沒有問題。
總之,一個(gè)程序從最初的想法到最終的開發(fā)有一系列的步驟。從產(chǎn)品轉(zhuǎn)移到開發(fā),可能會(huì)發(fā)生巨大的變化。最終,客戶想要的是一種,什么樣的開發(fā),或者客戶在開發(fā)過程中有了新的想法,也就是所謂的需求變化,導(dǎo)致程序總是不能按照既定的路線開發(fā)。
當(dāng)然,上線后會(huì)有一些問題。有一個(gè)經(jīng)典的例子:為什么有人在使用壓力鍋時(shí)會(huì)爆炸?很明顯,廠家已經(jīng)按照說明書做了很多次檢測,但你沒想到的是,客戶不必按照說明書操作,所以
從職業(yè)道德的角度,你可以把這些漏洞告訴你的交接人或老板。有句俗話說你們可以在一起分手。也許很多人會(huì)覺得他們已經(jīng)離開了。你為什么還要做更多的事?離開與你無關(guān)。在工作場所混其實(shí)和做人是一樣的。當(dāng)人們背誦單詞時(shí),不應(yīng)該總是擋住自己的路,留下好印象。這對(duì)別人和自己都是一件非常愉快的事情。雖然世界看起來很大,但也有很多巧合的事情,可以看作是為自己積德的事情。
從代碼的角度,我意識(shí)到有問題,及時(shí)修正也是程序員的基本素質(zhì)。大多數(shù)老程序員都有這種感覺。當(dāng)我把以前寫的代碼拿出來再研究一遍時(shí),我發(fā)現(xiàn)會(huì)有新的知識(shí)點(diǎn)。當(dāng)我每隔一段時(shí)間看一次代碼時(shí),我?guī)缀趺看味加心撤N感覺。事實(shí)上,這是糟糕的編程水平,這是一種需要停止和改進(jìn)的性能。如果您在代碼中發(fā)現(xiàn)了一個(gè)漏洞,并證明您的理解達(dá)到了一個(gè)新的水平,這是一件非常好的事情。如果你告訴交接人這個(gè)漏洞,它也是你代碼的完美歸宿。
作為一個(gè)寫了十多年代碼的老程序員,他總結(jié)了以下四種解決方案:1。在模塊設(shè)計(jì)之初,就要明確整個(gè)過程,在數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)上要留有足夠的時(shí)間。2在編寫代碼之前,我們應(yīng)該把大腦中可能存在的漏洞過濾掉,以避免低級(jí)錯(cuò)誤。
3. 必須在編寫的代碼模塊中加入單元測試來測試代碼的穩(wěn)定性
4。最好找一個(gè)可比較級(jí)別的代碼來幫你復(fù)習(xí),看看有沒有明顯的漏洞
基于以上四點(diǎn),寫沒有漏洞的代碼是不現(xiàn)實(shí)的事情,所以代碼漏洞的主要影響因素是:一是基本技能,二是框架思想。設(shè)計(jì)的模塊容易暴露漏洞。因此,經(jīng)驗(yàn)豐富的老程序員的代碼質(zhì)量會(huì)更高。熟能生巧。關(guān)鍵是多看多練。
我希望我能幫助你。
在軟件外包公司干了一年,離職的時(shí)候發(fā)現(xiàn)自己的代碼有漏洞,怎么辦?
代碼中出現(xiàn)錯(cuò)誤是正常的。我們可以最大限度地避免錯(cuò)誤,正如偏差必然存在,可以無限接近正確性一樣,但是錯(cuò)誤可以通過良好的工作方法、編碼規(guī)范和工作習(xí)慣來避免和消除。無論是整個(gè)項(xiàng)目的開發(fā)還是部分代碼的擴(kuò)展,程序員開始的編碼工作都必須從實(shí)際需求出發(fā):
首先要弄清需求的來龍去脈,然后確認(rèn)對(duì)需求的清晰理解。確認(rèn)需求是否被理解的最佳實(shí)踐是編寫需求描述、概要設(shè)計(jì),然后與干系人/負(fù)責(zé)人確認(rèn),而不是口頭說他們理解,甚至不理解重復(fù)確認(rèn)。
第二步是驗(yàn)證概要設(shè)計(jì)中的技術(shù)要點(diǎn),細(xì)化設(shè)計(jì),在細(xì)化設(shè)計(jì)過程中設(shè)計(jì)項(xiàng)目名稱、類名、代碼調(diào)用框架、方法名稱、成員變量和關(guān)鍵變量名稱,然后與利益相關(guān)者和負(fù)責(zé)人確認(rèn)。
第三步,良好的編碼習(xí)慣、編碼規(guī)范非常重要,也直接體現(xiàn)了程序員的基本素質(zhì),思路清晰,良好的編程習(xí)慣是高質(zhì)量代碼的重要保證。
最后一步是代碼測試。程序員交付的代碼必須保證單元測試能夠通過閉環(huán)測試,然后開發(fā)人員進(jìn)行交叉測試。然后交給QA測試部進(jìn)行測試,因?yàn)榇嬖谝恍肮庀潞凇钡膯栴},程序員很難發(fā)現(xiàn);對(duì)于大的代碼調(diào)整,還需要進(jìn)行回歸測試,測試所有的功能和各種環(huán)境,回歸測試的工作量通常很大。
優(yōu)秀的軟件產(chǎn)品是在項(xiàng)目實(shí)戰(zhàn)中設(shè)計(jì)、開發(fā)和使用的。它們不斷改進(jìn)、測試、交付和迭代使用。它們不可能一蹴而就。工作方法、代碼規(guī)范、編碼習(xí)慣和測試控制是保證代碼質(zhì)量的關(guān)鍵。編寫需求、設(shè)計(jì)和測試文檔不是教條主義,更不是浪費(fèi)時(shí)間,與智力無關(guān)。然而,許多程序員并沒有對(duì)它給予足夠的重視,他們從內(nèi)心到行動(dòng)都在抵制它。然后讓現(xiàn)實(shí)一次又一次地打耳光,慢慢地成長,我們應(yīng)該開始重視它,深刻認(rèn)識(shí)到“只做一次正確的事”是最省時(shí)的。然后,我們可以用自己的血淚史或規(guī)章制度來教導(dǎo)和約束新程序員。
程序員為什么要一直改bug,不能一次性寫好嗎?
程序出現(xiàn)bug是必然出現(xiàn)的情況,還是程序員水平有限?
謝謝。Bug在英語中有“defect”的意思,后來程序員用它來描述超出計(jì)劃運(yùn)行程序的結(jié)果。比如FPS游戲,你打了敵人,它應(yīng)該倒下,但如果它死掉了,它就屬于蟲子。一般來說,bug是你在玩游戲時(shí)遇到的結(jié)果不正常的情況。至于“藍(lán)洞”,則與黑洞無關(guān)。這是一家韓國游戲公司的名字,該公司是《絕地生存》的出版商。因?yàn)槌噪u肉很熱,所以很多人都在談?wù)摚瑑H此而已。
游戲里什么是bug?什么是“藍(lán)洞”?
英文單詞的原意是bug、defect、damage、poverty、bug、bug等。現(xiàn)在人們將在計(jì)算機(jī)系統(tǒng)或程序中,一些隱藏的缺陷或問題統(tǒng)稱為bug(漏洞)。由于社會(huì)的發(fā)展,bug還有一個(gè)擴(kuò)展的含義。它被用來描述超乎想象的事物。我希望你能接受它