Linus談?wù){(diào)試器和內(nèi)核如何發(fā)展
譯者序:關(guān)于LINUX內(nèi)核的開(kāi)發(fā),我覺(jué)得這些觀點(diǎn)都是正確的,因?yàn)橛^點(diǎn)都表達(dá)了不同的使用者的喜好。這些喜好都是需求。對(duì)于不同的使用者他們會(huì)更具自己的喜好,去使用不同的環(huán)境。這些都體現(xiàn)了LINUX的靈活性和可開(kāi)發(fā)改造性,這些特點(diǎn)是別的系統(tǒng)所沒(méi)有的。這就是我喜歡LINUX的一個(gè)原因。
關(guān)于不同的開(kāi)發(fā)環(huán)境,個(gè)人有自己的喜愛(ài)和偏好,而各種環(huán)境都有自己的特點(diǎn)。我想這樣的爭(zhēng)論應(yīng)該保持下去,因?yàn)檫@樣的爭(zhēng)論會(huì)促進(jìn)LINUX的發(fā)展。能開(kāi)發(fā)出各種各樣優(yōu)秀的工具。而這些工具的生存不在于一兩個(gè)人,而是廣大的LINUX 的用戶去決定的。
我想不同的觀點(diǎn)將出現(xiàn)不同的風(fēng)格。但是我不想LINUX的各種版本變的非常的大,而且他們相互都不互相融合。我認(rèn)為L(zhǎng)inus的觀點(diǎn)是完全正確的,保證LINUX的內(nèi)核的統(tǒng)一性和完整性。這樣就保證了各種不同版本的LINUX一起發(fā)展。
我不喜歡調(diào)試器,從來(lái)不,大概永遠(yuǎn)不會(huì)喜歡。我只使用GDB,而且我總是并不把它作為調(diào)試器來(lái)使用,只是將其作為一個(gè)可以用來(lái)分析程序的分解器來(lái)使用。
任何關(guān)于內(nèi)核調(diào)試器的意見(jiàn)、爭(zhēng)論都沒(méi)有觸動(dòng)我,哪怕是絲毫。相信我,這么多年來(lái)我收到很多這方面的建議,到最后,他們都只能歸結(jié)為很基礎(chǔ)的(東西):—— 開(kāi)發(fā)應(yīng)該變得更容易,我們能夠更快的加入許多新的東西。
坦白地說(shuō),我并不在意(這個(gè)問(wèn)題)。我認(rèn)為對(duì)內(nèi)核的開(kāi)發(fā)不會(huì)是很容易的事。我不贊成那種通過(guò)一個(gè)個(gè)代碼逐步去尋找錯(cuò)誤的做法。我認(rèn)為系統(tǒng)的額外可見(jiàn)度并不是一件必要的好事。
很明顯,如果你在沒(méi)有使用一個(gè)內(nèi)核調(diào)試器的情況下就附和這種觀點(diǎn):
—— 你會(huì)遇到一系列的問(wèn)題:一旦出錯(cuò),系統(tǒng)就會(huì)崩潰,你會(huì)失敗;
—— Linux 內(nèi)核編程太難太費(fèi)時(shí),人們會(huì)對(duì)其失去信心;
—— 創(chuàng)出新的特色需要一段很長(zhǎng)的時(shí)間。
沒(méi)有一個(gè)人能向我解釋這些問(wèn)題。對(duì)我來(lái)說(shuō),這不是一個(gè)問(wèn)題,這是它的特點(diǎn)。這不僅是已經(jīng)有證明文件證明的,而且這是好事。因此很明顯這不是一個(gè)問(wèn)題。
“創(chuàng)出新的特色需要一段很長(zhǎng)的時(shí)間”——這一點(diǎn)在調(diào)試器方面尤為不是一個(gè)強(qiáng)有力的論據(jù)。對(duì)Linux來(lái)說(shuō),缺少特色或新代碼不是一個(gè)問(wèn)題,事實(shí)上,這對(duì)整個(gè)軟件產(chǎn)業(yè)來(lái)說(shuō)都是如此。相反,我的主要工作就是對(duì)那些新的特色/特征說(shuō)“不”,而不是去尋找它們。
的確,當(dāng)(系統(tǒng))崩潰,你甚至不能獲得一絲線索,只有失敗,那么只能得到兩種結(jié)果:你要么小心翼翼的重新開(kāi)始;要么開(kāi)始對(duì)內(nèi)核調(diào)試器不斷抱怨。
坦白的說(shuō),如果(工程進(jìn)程中)出現(xiàn)粗心大意的情況,我寧愿擯棄那些在開(kāi)始時(shí)就沒(méi)有小心謹(jǐn)慎的人。這聽(tīng)上去很無(wú)情,就算是上帝聽(tīng)上去也會(huì)感覺(jué)無(wú)情。但這并不是人們所認(rèn)為的那種“如果你不能承受壓力,那就干脆離開(kāi)”的情況。這里(所包含的意義)要更深一些。我寧可不和那些粗心大意的人一起工作。這就是軟件發(fā)展的進(jìn)化論。
這樣把人分成兩種是一個(gè)冷酷、無(wú)情的觀點(diǎn)。我寧愿選擇第一種人,忍受他們。
我是一個(gè)比較自私的人。我完全不知道人們?yōu)槭裁匆獜牟煌矫孢M(jìn)行考慮,但是他們確實(shí)是(那么做的)。人們認(rèn)為我是個(gè)好人,但事實(shí)上我是個(gè)詭計(jì)多端的自私鬼,只要最終能得到我所認(rèn)為的更好的系統(tǒng),那么我對(duì)任何感情的傷害或工作時(shí)間的損失都不在乎。
我并不只是(在口頭上)說(shuō)說(shuō)而已,我真的不是一個(gè)很好的人。我能面無(wú)表情地說(shuō)“我不在乎”,而且我確實(shí)不在乎。
我相信不使用內(nèi)核調(diào)試器會(huì)迫使人們?cè)谝粋€(gè)不同的層次上考慮問(wèn)題。我認(rèn)為如果你不使用調(diào)試器,你就不能得知他如何運(yùn)轉(zhuǎn)以及你如何處理,你就試圖從別的角度去考慮問(wèn)題。你會(huì)想在不同的層次上理解事情。
在一定程度上更多的是“源代碼對(duì)二進(jìn)制”(的問(wèn)題)。你不必不得不去查看源代碼(當(dāng)然你可以去查看,任何優(yōu)良的調(diào)試器使其輕而易舉)。你必須在源代碼之上的層次進(jìn)行查看。就是說(shuō),不使用內(nèi)核調(diào)試器的話,你將不得不去理解程序在做什么,而不僅僅是特定的(代碼)行。
坦白的說(shuō),對(duì)于許多實(shí)際問(wèn)題(這和錯(cuò)誤截然不同的,那些愚蠢的錯(cuò)誤是那么多)來(lái)說(shuō),調(diào)試器并沒(méi)有多大的作用。這些實(shí)際問(wèn)題正是我所擔(dān)心的。剩下的就是一些細(xì)節(jié)了,他們最終都會(huì)被確定下來(lái)。
我能理解那些與我不一致的意見(jiàn)。我不是你們的母親,如果你愿意的話你可以使用內(nèi)核調(diào)試器,我不會(huì)因?yàn)槟阕约旱摹皻ёu(yù)”而輕視你。但是我不會(huì)去協(xié)助你使用他,我真誠(chéng)希望人們不要高頻率地使用內(nèi)核調(diào)試器。因此我不會(huì)將其作為評(píng)定的標(biāo)準(zhǔn),如果現(xiàn)有的調(diào)試器沒(méi)有被人們很好的了解,我不會(huì)去(刻意)糟蹋貶低他。因?yàn)槲沂且粋€(gè)比較自私的人,但是我以此為榮!
評(píng)論