对话Linus:Linux 25岁啦
作為芬蘭Helsinki大學(xué)計(jì)算機(jī)科學(xué)系的學(xué)生,Linus Torvalds在1991年編寫(xiě)了Linux操作系統(tǒng)的原始內(nèi)核。很快,Linux就發(fā)展成為了一個(gè)全特征的操作系統(tǒng),并開(kāi)始運(yùn)行在智能手機(jī)、服務(wù)器和各種設(shè)備中。在本次通過(guò)e-mail進(jìn)行的訪談中,Torvalds回顧了過(guò)去25年的歷程,并展望了未來(lái)25年可能的發(fā)展。\
Stephen Cass(以下簡(jiǎn)稱(chēng)S.C.):相比于25年前,現(xiàn)在你已經(jīng)是一個(gè)經(jīng)驗(yàn)非常豐富的程序員了。哪件事情是你現(xiàn)在知道,且最想讓年輕時(shí)的自己盡早學(xué)習(xí)到的呢?\
\Linus Torvalds(以下簡(jiǎn)稱(chēng)L.T.):實(shí)際上,我一直在說(shuō)一個(gè)事實(shí):我當(dāng)時(shí)并不知道我所做的工作會(huì)引起以后Linux的很多成功。如果我當(dāng)時(shí)就一直知道了我現(xiàn)在所知道的事情,我可能沒(méi)有勇氣去編寫(xiě)我自己的操作系統(tǒng)了:我需要一定的“天真”才會(huì)認(rèn)為自己能完成這項(xiàng)工作。我真的認(rèn)為,這份“天真”是啟動(dòng)該項(xiàng)目并取得成功所必須的東西。不理解這個(gè)項(xiàng)目最終的形態(tài)以及在對(duì)其前景沒(méi)有很多預(yù)期的時(shí)候著手去做其實(shí)是幫了很大的忙的。\
我不知道該項(xiàng)目最終的結(jié)果形態(tài)意味著,我會(huì)比知道其最終形態(tài)抱有更加開(kāi)放的心態(tài),能夠接受被人的建議或影響。我認(rèn)為,這種開(kāi)放的心態(tài)使得其他人加入該項(xiàng)目更加容易,也更加有趣。人們不用一定要采用別人的版本,他們可以自己的需要進(jìn)行修改。我認(rèn)為這激勵(lì)了很多人的參與。
\S.C.:有沒(méi)有一個(gè)在Linux發(fā)展早起所做的技術(shù)決策是你現(xiàn)在覺(jué)得最好當(dāng)時(shí)選擇另外一個(gè)方向的呢?\
\L.T.:有關(guān)錯(cuò)誤的技術(shù)決策的事,好處的你總是可以回退。當(dāng)然,錯(cuò)誤的決策會(huì)讓人覺(jué)得泄氣,而且很多時(shí)間和努力都白費(fèi)了。但同時(shí),它最終也不是完全浪費(fèi)了:肯定有一個(gè)原因?qū)е履阕隽隋e(cuò)誤的決定,而意識(shí)到該錯(cuò)誤就教會(huì)了你一些東西。我并不是說(shuō),錯(cuò)誤的決策是一件好事——但我并不會(huì)在做決策時(shí)特別擔(dān)心。我寧可選擇一個(gè)在以后證明為錯(cuò)誤的決策,也不愿意在可能的選擇中徘徊很久。\
在2001年左右,我們?cè)贚inux虛擬內(nèi)存子系統(tǒng)方面就遇到了一個(gè)非常有名的壞情況。當(dāng)時(shí),大家對(duì)于采用那種方法起了很大的爭(zhēng)執(zhí),而且我們?cè)谀承﹥?nèi)存配置方面存在很大的問(wèn)題。系統(tǒng)的主要組件在大家認(rèn)為的“穩(wěn)定”時(shí)期的時(shí)候被清除。人們非常不開(kāi)心。\
但是,現(xiàn)在回頭去看,虛擬內(nèi)存子系統(tǒng)最終工作很好。當(dāng)時(shí),它給人們帶來(lái)了非常大的痛苦。如果能夠不再中期的時(shí)候再進(jìn)行逆轉(zhuǎn),那就最好了。但是,它并不是災(zāi)難性的。
\S.C.:隨著Linux的快速發(fā)展,從一個(gè)開(kāi)發(fā)到多人參與的情況的轉(zhuǎn)變是什么呢?\
\L.T.:對(duì)于我而言,的確存在兩個(gè)明顯的轉(zhuǎn)變。一個(gè)發(fā)生在大概1992年,我當(dāng)時(shí)開(kāi)始采用別的開(kāi)發(fā)人員的補(bǔ)丁,而不再自己重寫(xiě)。另外一個(gè)則比較晚,當(dāng)時(shí)我自己親自應(yīng)用所有的補(bǔ)丁已經(jīng)非常痛苦,我不得不學(xué)會(huì)信任其他的維護(hù)者。\
第一步要相對(duì)容易很多——由于Linux內(nèi)核編程的大約頭六個(gè)月都是我一個(gè)人完成的,當(dāng)人們開(kāi)始把補(bǔ)丁發(fā)給我的時(shí)候,我并不習(xí)慣采用這些補(bǔ)丁。所以,我會(huì)親自查看該補(bǔ)丁,確認(rèn)編程人員的目的,然后我會(huì)重寫(xiě)編寫(xiě)代碼——有時(shí),代碼類(lèi)似;有時(shí),我會(huì)采用完全不同的方法進(jìn)行實(shí)現(xiàn)。\
這種情況很快就難以持續(xù)了。在我們開(kāi)始足夠信任別人以致我不再重寫(xiě)根據(jù)其想法編寫(xiě)自己的代碼后不久,我就開(kāi)始直接應(yīng)用他們的補(bǔ)丁。但是,我仍然會(huì)經(jīng)常對(duì)補(bǔ)丁進(jìn)行修改。這么多年過(guò)去,我已經(jīng)非常擅長(zhǎng)閱讀并修改補(bǔ)丁,以至于我能夠一直修改直至睡著。而且這種模式在很多年內(nèi)都工作的非常好。\
但是,正是因?yàn)椤安捎脛e人的補(bǔ)丁”這種模式多年來(lái)工作正常,我一直都非常適應(yīng)這種模式。對(duì)我而言,改變這種模式非常痛苦。在2000年左右,我們?cè)趦?nèi)核發(fā)展方面有了很大的進(jìn)展(此時(shí),Linux開(kāi)始被商業(yè)玩家所注意)。人們開(kāi)始抱怨我的工作流成為了系統(tǒng)發(fā)展的障礙,并提出“Linus不與時(shí)俱進(jìn)”。但是,我們并沒(méi)有好的工具來(lái)進(jìn)行源代碼的管理。\
這最終導(dǎo)致了我們將BitKeeper引入近來(lái),作為源代碼的維護(hù)工具。盡管人們是在若干年以后因?yàn)閎rouhaha的版權(quán)問(wèn)題而記住BitKeeper的,它的確是完成我們的工作的最合適的工具。而且,它教會(huì)了我源碼控制是如何工作的以及我們?nèi)绾文軌蚋鶕?jù)一個(gè)更加分布式的開(kāi)發(fā)模型進(jìn)行合作。\
當(dāng)然,關(guān)于分布式源碼管理的東西都是在2005年從Git學(xué)習(xí)到的。Git已經(jīng)明顯成為了了源碼控制方面最成功的項(xiàng)目之一,而且它讓更多人學(xué)習(xí)到了分布式控制的優(yōu)勢(shì)。我們?cè)?000年左右內(nèi)核方面所經(jīng)歷的痛苦最終成為了一個(gè)很大的教訓(xùn),但是這中間的過(guò)程不可置疑是痛苦的。
\S.C.:還存在像分布式源碼控制這樣的其他項(xiàng)目,使得你想自己去從頭開(kāi)始完成的嗎?\
\L.T.:沒(méi)有。而且我也真的希望不會(huì)有。我的所有大項(xiàng)目都來(lái)源于“天哪,沒(méi)有人替我完成這種工作!”的時(shí)候。當(dāng)別人能夠替我完成工作時(shí),我肯定會(huì)比較開(kāi)心我可以不必花費(fèi)時(shí)間來(lái)自己完成。相比于自己解決問(wèn)題,我肯定會(huì)選擇躺在沙灘的大型遮陽(yáng)傘下喝喝冰鎮(zhèn)飲料。\
好吧,其實(shí)我在撒謊。過(guò)一段時(shí)間,我肯定會(huì)開(kāi)始厭煩這種生活。我非常開(kāi)心能夠Linux項(xiàng)目的陪伴——它非常有趣,而且充滿(mǎn)了刺激。但同時(shí),開(kāi)始新的項(xiàng)目肯定是需要艱辛努力的。
\S.C.:你為什么認(rèn)為L(zhǎng)inux絕對(duì)不會(huì)成為主流桌面電腦的主要操作系統(tǒng)?\
\L.T.:好吧,我還努力在推進(jìn)這項(xiàng)工作。我認(rèn)為,即使Chromebooks只是一個(gè)非常有限的桌面環(huán)境而非傳統(tǒng)的全Linux工作站模型,它的表現(xiàn)越來(lái)越好。\
關(guān)于Linux為什么不能成為桌面電腦的主流操作系統(tǒng),原因有很多方面。其中一個(gè)最大的原因就是用戶(hù)的惰性。在計(jì)算的世界中,桌面電腦是一個(gè)非常獨(dú)特的存在:它既非常個(gè)性化(如果你需要使用計(jì)算機(jī)進(jìn)行工作,你基本上每天都會(huì)和它進(jìn)行交互),又非常復(fù)雜化(很多其他的計(jì)算環(huán)境不會(huì)在這些方面不會(huì)如此復(fù)雜)。\
以智能手機(jī)為例。這是計(jì)算技術(shù)的直接應(yīng)用場(chǎng)景,而且深入人們的日常生活(多虧Android系統(tǒng),Linux在智能手機(jī)上工作的非常好)。桌面電腦由于很多歷史原因要復(fù)雜很多。它是一個(gè)非常難以進(jìn)入的市場(chǎng)。與手機(jī)更加不同的是,人們有很多自己已經(jīng)習(xí)慣的應(yīng)用程序和工作流,這就導(dǎo)致很多人非常不愿意切換到別的操作系統(tǒng)。選擇將預(yù)裝的操作系統(tǒng)替換為其他操作系統(tǒng)的人數(shù)非常低。\
同時(shí),即使整個(gè)通用桌面電腦的市場(chǎng)都在一定程度上存在凋零,在很多任務(wù)的更加專(zhuān)業(yè)化也更加簡(jiǎn)單的平臺(tái)仍然是一個(gè)非常重要的市場(chǎng)。例如,智能手機(jī)、平板電腦和Chromebooks就是例子,它們都是非完全的通用環(huán)境。
\S.C.:Linux的哪些應(yīng)用場(chǎng)景最讓你覺(jué)得吃驚?\
\L.T.:最近嗎?只從我認(rèn)為L(zhǎng)inux已經(jīng)基本成為新的硬件或服務(wù)建模的默認(rèn)環(huán)境后,就沒(méi)有那么多了。如果你有一些古怪的、特殊的設(shè)備,或者你正在設(shè)計(jì)一些新的互聯(lián)網(wǎng)框架,這些東西沒(méi)有采用Linux作為操作系統(tǒng)會(huì)真的讓我覺(jué)得吃驚。\
但是,當(dāng)我將Linux視為工作站或服務(wù)器的操作系統(tǒng)時(shí),這些設(shè)備的應(yīng)用領(lǐng)域的確曾讓我非常吃驚。在一些早期的Linux會(huì)議中,人們會(huì)演示運(yùn)行Linux的氣泵或冰箱。當(dāng)時(shí),我感覺(jué)非常意外。當(dāng)?shù)谝粋€(gè)TiVo面世的時(shí)候,它運(yùn)行Linux的事實(shí)就像“你可以將現(xiàn)場(chǎng)直播回退”一樣有趣。
\S.C.:Linux現(xiàn)在面對(duì)的最大挑戰(zhàn)是什么?\
\L.T.:內(nèi)核現(xiàn)在實(shí)際上工作的非常好。人們開(kāi)始擔(dān)心事情可能變得太復(fù)雜以至于超出人類(lèi)理解和修復(fù)漏洞的能力。這是一個(gè)非常好理解的擔(dān)憂(yōu)。但同時(shí),我們有很多聰明的編程人員參與其中。系統(tǒng)已經(jīng)發(fā)展的如此巨大和復(fù)雜以及很多人都依賴(lài)Linux的事實(shí)使得我們提前開(kāi)始準(zhǔn)備很多事情。讓系統(tǒng)變得功能豐富并做出很大的、能接受的改變是非常覺(jué)有挑戰(zhàn)性的。因此,我不會(huì)將其稱(chēng)為令人感覺(jué)快樂(lè)的工作。但是,我認(rèn)為,內(nèi)核的發(fā)展目前十分正常。很多其他擁有這些資源的的開(kāi)源項(xiàng)目可能已經(jīng)都失敗了。\
這就意味著,我們?cè)趦?nèi)核方面的一個(gè)持續(xù)性的挑戰(zhàn)就是硬件種類(lèi)很多。我們支持很多不同的硬件——基本上肯定比其他任何操作系統(tǒng)都要多。但是,基本上每天都會(huì)有新的硬件面世。尤其是在嵌入式領(lǐng)域,硬件平臺(tái)的開(kāi)發(fā)周期通常要短很多(在中國(guó),你可以在1-2月內(nèi)創(chuàng)建一個(gè)新的手機(jī)平臺(tái))。在這種情況下,硬件和系統(tǒng)的整合就要艱難很多。好消息是很多硬件廠商也都在努力。過(guò)去,這些都不可能。
\S.C.:你現(xiàn)在感興趣的技術(shù)趨勢(shì)是什么?有什么讓你氣餒的嗎?\
\L.T.:我一直對(duì)新的硬件,尤其是CPU,非常感興趣。這就是我為什么一開(kāi)始研究自己的操作系統(tǒng),并看到新的平臺(tái)后非常開(kāi)心。當(dāng)然,新的平臺(tái)很多時(shí)候都是現(xiàn)有硬件的簡(jiǎn)單修改版本(而且,我也相信這就是技術(shù)發(fā)展應(yīng)該走的路線)。但是,這就是我努力去追蹤的東西。\
從更高的層次來(lái)看,但并非局限于我所參與的領(lǐng)域,觀察AI最終如何發(fā)生的是非常有趣的。以前,AI的技術(shù)都停留在20年前。但它也一直超前20年。而且,我對(duì)于人們過(guò)去做的基于規(guī)則的模型不感興趣。\
現(xiàn)在,神經(jīng)網(wǎng)絡(luò)終于開(kāi)啟了人工智能的新篇章。我發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)非常有趣。這不是一個(gè)我正在參與或?qū)?lái)會(huì)參與的領(lǐng)域,但它的確讓人覺(jué)得非常有趣。與瘋狂的LISP和Prolog語(yǔ)言方法不同,我們所知的神經(jīng)網(wǎng)絡(luò)都是從自然界而來(lái)。而且,我覺(jué)得,AI或許會(huì)像很多人所想的那樣,最終會(huì)出現(xiàn)。一點(diǎn)也不覺(jué)得意外!
\S.C.:你認(rèn)為L(zhǎng)inux在其50年慶的時(shí)候仍然會(huì)處于活躍開(kāi)發(fā)階段嗎?你認(rèn)為L(zhǎng)inux系統(tǒng)在25年后應(yīng)該怎樣呢?\
\L.T.:我不是一個(gè)非常有遠(yuǎn)見(jiàn)的人。我是一個(gè)非常枯燥的宅男工程師,而且我一直努力將精力放在具體事務(wù)上。我會(huì)讓其他人在預(yù)測(cè)5年、10或2年后Linux的未來(lái)——我認(rèn)為,只要我們盡力做好每天的工作,未來(lái)也一定會(huì)非常美好。\
如果25年后的社會(huì)經(jīng)過(guò)了大的變革或變得與現(xiàn)在非常不同,肯定會(huì)非常有趣。但是,有很多基本的問(wèn)題,無(wú)論是在Linux之前、真正的操作系統(tǒng)剛剛出現(xiàn)的19世紀(jì)60年代,還是在25年后的未來(lái),肯定和現(xiàn)在一樣。我懷疑,我們?cè)谶^(guò)去50年已經(jīng)看到了很多發(fā)生在計(jì)算中的出乎意料的變化將來(lái)不會(huì)再發(fā)生。和軟件工程師一樣,硬件工程師已經(jīng)學(xué)會(huì)了什么可以工作、什么不可以工作。\
當(dāng)然,神經(jīng)網(wǎng)絡(luò)等將改變整個(gè)世界,但你不會(huì)來(lái)對(duì)其進(jìn)行“編程”。人工智能可以學(xué)習(xí)。他們是模糊的。我可以非常肯定的保證,他們不會(huì)替換傳統(tǒng)的計(jì)算模型。人們希望比機(jī)器聰明,但又希望機(jī)器能夠按照要求完成應(yīng)該完成的工作。因此,我們老的計(jì)算模式不會(huì)消失,它將會(huì)得到增強(qiáng)。
\對(duì)原文感興趣的讀者請(qǐng)點(diǎn)擊繼續(xù)閱讀
\\\感謝魏星對(duì)本文的審校。
\給InfoQ中文站投稿或者參與內(nèi)容翻譯工作,請(qǐng)郵件至editors@cn.infoq.com。也歡迎大家通過(guò)新浪微博(@InfoQ,@丁曉昀),微信(微信號(hào):InfoQChina)關(guān)注我們。
總結(jié)
以上是生活随笔為你收集整理的对话Linus:Linux 25岁啦的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 面向边缘计算的资源优化技术研究进展
- 下一篇: Linux sudo找不到命令:修改s