對話Linus:Linux 25歲啦

作為芬蘭Helsinki大學計算機科學系的學生,Linus Torvalds在1991年編寫了Linux操作系統的原始內核。很快,Linux就發展成為了一個全特征的操作系統,并開始運行在智能手機、服務器和各種設備中。在本次通過e-mail進行的訪談中,Torvalds回顧了過去25年的歷程,并展望了未來25年可能的發展。\

Stephen Cass(以下簡稱S.C.):相比于25年前,現在你已經是一個經驗非常豐富的程序員了。哪件事情是你現在知道,且最想讓年輕時的自己盡早學習到的呢?\

\

Linus Torvalds(以下簡稱L.T.):實際上,我一直在說一個事實:我當時并不知道我所做的工作會引起以后Linux的很多成功。如果我當時就一直知道了我現在所知道的事情,我可能沒有勇氣去編寫我自己的操作系統了:我需要一定的“天真”才會認為自己能完成這項工作。我真的認為,這份“天真”是啟動該項目并取得成功所必須的東西。不理解這個項目最終的形態以及在對其前景沒有很多預期的時候著手去做其實是幫了很大的忙的。\

我不知道該項目最終的結果形態意味著,我會比知道其最終形態抱有更加開放的心態,能夠接受被人的建議或影響。我認為,這種開放的心態使得其他人加入該項目更加容易,也更加有趣。人們不用一定要采用別人的版本,他們可以自己的需要進行修改。我認為這激勵了很多人的參與。

\

S.C.:有沒有一個在Linux發展早起所做的技術決策是你現在覺得最好當時選擇另外一個方向的呢?\

\

L.T.:有關錯誤的技術決策的事,好處的你總是可以回退。當然,錯誤的決策會讓人覺得泄氣,而且很多時間和努力都白費了。但同時,它最終也不是完全浪費了:肯定有一個原因導致你做了錯誤的決定,而意識到該錯誤就教會了你一些東西。我并不是說,錯誤的決策是一件好事——但我并不會在做決策時特別擔心。我寧可選擇一個在以后證明為錯誤的決策,也不愿意在可能的選擇中徘徊很久。\

在2001年左右,我們在Linux虛擬內存子系統方面就遇到了一個非常有名的壞情況。當時,大家對于采用那種方法起了很大的爭執,而且我們在某些內存配置方面存在很大的問題。系統的主要組件在大家認為的“穩定”時期的時候被清除。人們非常不開心。\

但是,現在回頭去看,虛擬內存子系統最終工作很好。當時,它給人們帶來了非常大的痛苦。如果能夠不再中期的時候再進行逆轉,那就最好了。但是,它并不是災難性的。

\

S.C.:隨著Linux的快速發展,從一個開發到多人參與的情況的轉變是什么呢?\

\

L.T.:對于我而言,的確存在兩個明顯的轉變。一個發生在大概1992年,我當時開始采用別的開發人員的補丁,而不再自己重寫。另外一個則比較晚,當時我自己親自應用所有的補丁已經非常痛苦,我不得不學會信任其他的維護者。\

第一步要相對容易很多——由于Linux內核編程的大約頭六個月都是我一個人完成的,當人們開始把補丁發給我的時候,我并不習慣采用這些補丁。所以,我會親自查看該補丁,確認編程人員的目的,然后我會重寫編寫代碼——有時,代碼類似;有時,我會采用完全不同的方法進行實現。\

這種情況很快就難以持續了。在我們開始足夠信任別人以致我不再重寫根據其想法編寫自己的代碼后不久,我就開始直接應用他們的補丁。但是,我仍然會經常對補丁進行修改。這么多年過去,我已經非常擅長閱讀并修改補丁,以至于我能夠一直修改直至睡著。而且這種模式在很多年內都工作的非常好。\

但是,正是因為“采用別人的補丁”這種模式多年來工作正常,我一直都非常適應這種模式。對我而言,改變這種模式非常痛苦。在2000年左右,我們在內核發展方面有了很大的進展(此時,Linux開始被商業玩家所注意)。人們開始抱怨我的工作流成為了系統發展的障礙,并提出“Linus不與時俱進”。但是,我們并沒有好的工具來進行源代碼的管理。\

這最終導致了我們將BitKeeper引入近來,作為源代碼的維護工具。盡管人們是在若干年以后因為brouhaha的版權問題而記住BitKeeper的,它的確是完成我們的工作的最合適的工具。而且,它教會了我源碼控制是如何工作的以及我們如何能夠根據一個更加分布式的開發模型進行合作。\

當然,關于分布式源碼管理的東西都是在2005年從Git學習到的。Git已經明顯成為了了源碼控制方面最成功的項目之一,而且它讓更多人學習到了分布式控制的優勢。我們在2000年左右內核方面所經歷的痛苦最終成為了一個很大的教訓,但是這中間的過程不可置疑是痛苦的。

\

S.C.:還存在像分布式源碼控制這樣的其他項目,使得你想自己去從頭開始完成的嗎?\

\

L.T.:沒有。而且我也真的希望不會有。我的所有大項目都來源于“天哪,沒有人替我完成這種工作!”的時候。當別人能夠替我完成工作時,我肯定會比較開心我可以不必花費時間來自己完成。相比于自己解決問題,我肯定會選擇躺在沙灘的大型遮陽傘下喝喝冰鎮飲料。\

好吧,其實我在撒謊。過一段時間,我肯定會開始厭煩這種生活。我非常開心能夠Linux項目的陪伴——它非常有趣,而且充滿了刺激。但同時,開始新的項目肯定是需要艱辛努力的。

\

S.C.:你為什么認為Linux絕對不會成為主流桌面電腦的主要操作系統?\

\

L.T.:好吧,我還努力在推進這項工作。我認為,即使Chromebooks只是一個非常有限的桌面環境而非傳統的全Linux工作站模型,它的表現越來越好。\

關于Linux為什么不能成為桌面電腦的主流操作系統,原因有很多方面。其中一個最大的原因就是用戶的惰性。在計算的世界中,桌面電腦是一個非常獨特的存在:它既非常個性化(如果你需要使用計算機進行工作,你基本上每天都會和它進行交互),又非常復雜化(很多其他的計算環境不會在這些方面不會如此復雜)。\

以智能手機為例。這是計算技術的直接應用場景,而且深入人們的日常生活(多虧Android系統,Linux在智能手機上工作的非常好)。桌面電腦由于很多歷史原因要復雜很多。它是一個非常難以進入的市場。與手機更加不同的是,人們有很多自己已經習慣的應用程序和工作流,這就導致很多人非常不愿意切換到別的操作系統。選擇將預裝的操作系統替換為其他操作系統的人數非常低。\

同時,即使整個通用桌面電腦的市場都在一定程度上存在凋零,在很多任務的更加專業化也更加簡單的平臺仍然是一個非常重要的市場。例如,智能手機、平板電腦和Chromebooks就是例子,它們都是非完全的通用環境。

\

S.C.:Linux的哪些應用場景最讓你覺得吃驚?\

\

L.T.:最近嗎?只從我認為Linux已經基本成為新的硬件或服務建模的默認環境后,就沒有那么多了。如果你有一些古怪的、特殊的設備,或者你正在設計一些新的互聯網框架,這些東西沒有采用Linux作為操作系統會真的讓我覺得吃驚。\

但是,當我將Linux視為工作站或服務器的操作系統時,這些設備的應用領域的確曾讓我非常吃驚。在一些早期的Linux會議中,人們會演示運行Linux的氣泵或冰箱。當時,我感覺非常意外。當第一個TiVo面世的時候,它運行Linux的事實就像“你可以將現場直播回退”一樣有趣。

\

S.C.:Linux現在面對的最大挑戰是什么?\

\

L.T.:內核現在實際上工作的非常好。人們開始擔心事情可能變得太復雜以至于超出人類理解和修復漏洞的能力。這是一個非常好理解的擔憂。但同時,我們有很多聰明的編程人員參與其中。系統已經發展的如此巨大和復雜以及很多人都依賴Linux的事實使得我們提前開始準備很多事情。讓系統變得功能豐富并做出很大的、能接受的改變是非常覺有挑戰性的。因此,我不會將其稱為令人感覺快樂的工作。但是,我認為,內核的發展目前十分正常。很多其他擁有這些資源的的開源項目可能已經都失敗了。\

這就意味著,我們在內核方面的一個持續性的挑戰就是硬件種類很多。我們支持很多不同的硬件——基本上肯定比其他任何操作系統都要多。但是,基本上每天都會有新的硬件面世。尤其是在嵌入式領域,硬件平臺的開發周期通常要短很多(在中國,你可以在1-2月內創建一個新的手機平臺)。在這種情況下,硬件和系統的整合就要艱難很多。好消息是很多硬件廠商也都在努力。過去,這些都不可能。

\

S.C.:你現在感興趣的技術趨勢是什么?有什么讓你氣餒的嗎?\

\

L.T.:我一直對新的硬件,尤其是CPU,非常感興趣。這就是我為什么一開始研究自己的操作系統,并看到新的平臺后非常開心。當然,新的平臺很多時候都是現有硬件的簡單修改版本(而且,我也相信這就是技術發展應該走的路線)。但是,這就是我努力去追蹤的東西。\

從更高的層次來看,但并非局限于我所參與的領域,觀察AI最終如何發生的是非常有趣的。以前,AI的技術都停留在20年前。但它也一直超前20年。而且,我對于人們過去做的基于規則的模型不感興趣。\

現在,神經網絡終于開啟了人工智能的新篇章。我發現,神經網絡非常有趣。這不是一個我正在參與或將來會參與的領域,但它的確讓人覺得非常有趣。與瘋狂的LISP和Prolog語言方法不同,我們所知的神經網絡都是從自然界而來。而且,我覺得,AI或許會像很多人所想的那樣,最終會出現。一點也不覺得意外!

\

S.C.:你認為Linux在其50年慶的時候仍然會處于活躍開發階段嗎?你認為Linux系統在25年后應該怎樣呢?\

\

L.T.:我不是一個非常有遠見的人。我是一個非常枯燥的宅男工程師,而且我一直努力將精力放在具體事務上。我會讓其他人在預測5年、10或2年后Linux的未來——我認為,只要我們盡力做好每天的工作,未來也一定會非常美好。\

如果25年后的社會經過了大的變革或變得與現在非常不同,肯定會非常有趣。但是,有很多基本的問題,無論是在Linux之前、真正的操作系統剛剛出現的19世紀60年代,還是在25年后的未來,肯定和現在一樣。我懷疑,我們在過去50年已經看到了很多發生在計算中的出乎意料的變化將來不會再發生。和軟件工程師一樣,硬件工程師已經學會了什么可以工作、什么不可以工作。\

當然,神經網絡等將改變整個世界,但你不會來對其進行“編程”。人工智能可以學習。他們是模糊的。我可以非常肯定的保證,他們不會替換傳統的計算模型。人們希望比機器聰明,但又希望機器能夠按照要求完成應該完成的工作。因此,我們老的計算模式不會消失,它將會得到增強。

\

對原文感興趣的讀者請點擊繼續閱讀

\\\

感謝魏星對本文的審校。

\

給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號:InfoQChina)關注我們。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284758.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284758.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284758.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

路由器與交換機區別

路由器與交換機區別 近日,在回答知道網友提問的時候,發現很多朋友不知道路由器與交換機的不同,常常問一些看起來有點可笑的問題。比如路由器同時登陸兩個賬號,所以今天寫下這篇經驗,科普一下路由器的功能和交換機的功能…

【QGIS入門實戰精品教程】1.2:QGIS與ArcGIS的區別和聯系

「劉一哥GIS」系列專欄《QGIS入門實戰精品教程(配套案例數據)》目錄 以下是GISGeography官方給出的兩者之間的27點比較(譯): 官方網址:https://gisgeography.com/qgis-arcgis-differences/ 1.QGIS容納更多的數據格式 ArcGIS沒有支持所有的數據格式,毫無疑問,QGIS在處…

mysql中的增刪改查

顯示數據庫中有的表格 SHOW TABLES增 新建表格 CREATE TABLE urls( id int, url varchar(100), description varchar(100) ) 插入值 INSERT INTO chflvghu_test.user (user, password) VALUES (小紅, qwerty); 插入多條數據 INSERT INTO chflvghu_test.user (user, password) V…

押注.NET 是件好事

作者 | Bryan Costanich譯者 | 明知山策劃 | 褚杏娟作為一個在.NET 上構建了不止一個流行平臺的人,我經常被問到它的相關性,以及它是不是一個值得投入的生態系統。這個問題在舊金山灣區的技術世界里尤為流行,這里的技術潮流就像四季一樣變更交…

8-12 canvas專題-階段練習一(上)

8-12 canvas專題-階段練習一&#xff08;上&#xff09; 1 <!DOCTYPE html>2 <html lang"zh-cn">3 <head>4 <meta charset"UTF-8">5 <title>8-12 課堂演示</title>6 </head>7 <style type"text…

【QGIS入門實戰精品教程】2.2:QGIS軟件的下載與安裝(Windows)

文章目錄 一、QGIS下載二、QGIS安裝?一、QGIS下載 QGIS軟件官網下載地址:https://www.qgis.org/en/site/ 進入官網之后,點擊【Download Now】進入下載頁面: 選擇對應的版本進行下載: 開始下載:

UVa 10061 How many zero's and how many digits?

方法&#xff1a; factorial mod&#xff0c; logarithm 求trailing zeros&#xff0c;其實就是factorial mod 的應用&#xff0c; 求長度&#xff0c;利用log 函數。需要注意的是&#xff0c;答案為int(log(n!)/log(b)) 1, 比如 a 2, b 2, 長度為2. code: #include <cst…

Linux sudo找不到命令:修改sudo的PATH路徑

為什么80%的碼農都做不了架構師&#xff1f;>>> sudo有時候會出現找不到命令&#xff0c;而明明PATH路徑下包含該命令&#xff0c;讓人疑惑。其實出現這種情況的原因&#xff0c;主要是因為當 sudo以管理權限執行命令的時候&#xff0c;linux將PATH環境變量進行了重…

Javscript 實現字符數串比對排序(包含數字及中文數字)

主要代碼&#xff1a; /** *description: 比較兩個字符串大小 *author: JackieZheng *date: 2020-12-03 19:59:39 */ function compare(a, b) {if (a b) {return 0;} else {let lsta a.toString().replace(/[一二三四五六七八九十百千萬億]/g, ChineseToNumber).split(/(\d…

【QGIS入門實戰精品教程】4.2:QGIS矢量數據采集(地圖數字化)案例教程

本文基于上一個實驗柵格數據地理配準,講述在QGIS中創建shp格式矢量數據(點、線、面)并進行矢量數據的采集與編輯。 文章目錄 一、實驗數據及任務二、創建Shapefile圖層三、數字化超詳細步驟一、實驗數據及任務 1. 實驗數據:為了保證實驗的連貫性,本次實驗采用的數據為上一…

快速判斷站點是否存活的 3 種編程實現

前言如何知道外部站點是否正在運行&#xff1f;如果使用瀏覽器&#xff0c;直接訪問對應站點即可。那么&#xff0c;使用 C# 以編程方式&#xff0c;如何實現呢&#xff1f;GET 請求首先想到的&#xff0c;就是使用 HttpClient 向該站點發送 HTTP 請求&#xff0c;并檢查返回狀…

jQuery.ajax實現根據不同的Content-Type做出不同的響應

使用H5ASP.NET General Handler開發項目&#xff0c;使用ajax進行前后端的通訊。有一個場景需求是根據服務器返回的不同數據類型&#xff0c;前端進行不同的響應&#xff0c;這里記錄下如何使用$.ajax實現該需求。 $.ajax({‘url‘: ‘GetWatermarkInfo.ashx‘,‘type‘:‘post…

論文的寫作要求、流程與寫作技巧

論文的寫作要求、流程與寫作技巧 廣義來說&#xff0c;凡屬論述科學技術內容的作品&#xff0c;都稱作科學著述&#xff0c;如原始論著&#xff08;論文&#xff09;、簡報、綜合報告、進展報告、文獻綜述、述評、專著、匯編、教科書和科普讀物等。但其中只有原始論著及其簡報是…

【數據結構與算法】拓撲排序問題C語言實現

拓撲排序是有向無環圖的一種應用,在實際生活中用的很多。 比如GIS專業的課程設計,許多課程需要前置課程要求,也就是說沒上過A課程、則不可能直接去學B課程,畫個圖表就是: 同理,我們教材中的范例:穿衣服的過程也是一個拓撲排序問題,如下表: 有關這個拓撲排序的模型構造…

[轉]2020年排名前20的基于SpringBoot搭建的開源項目,幫你快速進行項目搭建!

△Hollis, 一個對Coding有著獨特追求的人△ 這是Hollis的第 287 篇原創分享 作者 l Hollis 來源 l Hollis&#xff08;ID&#xff1a;hollischuang&#xff09; SpringBoot一直是開發者比較青睞的一款輕量級框架&#xff0c;他不僅繼承了Spring框架原有的優秀特性&#xff0c;而…

操作系統基礎知識

操作系統的主要特性: 并發,共享,異步,虛擬性 分類 批處理系統 用戶將一批作業提交給操作系統后就不再干預&#xff0c;由操作系統控制它們自動運行 批處理操作系統的特點是&#xff1a;多道和成批處理。分時實時可以通過命令接口和程序接口方式把它的服務和功能提供給用戶 程序…

C# 搭建一個基于.NET5的WPF入門項目

概述.NET5 發布已經有一陣子了&#xff0c;今天抽空體驗一哈&#xff0c;搭建一個WPF項目實例&#xff0c;看看和傳統的.NET Framework有什么區別&#xff01;開發環境&#xff1a;VS2019 WPF框架&#xff1a;Caliburn.Micro 版本4.0.173.NET版本&#xff1a;.NET5.0項目創建步…

五個最佳案例帶你解讀 Node.js 的前后之道

Node.js 是什么&#xff1f; Node.js 采用 C語言編寫而成&#xff0c;瀏覽器內核 V8 做為執行引擎&#xff1b; Node 不是 JS 應用、而是一個 Javascript 的運行環境。 Node 保留了前端瀏覽器 js 的接口&#xff0c;沒有改寫語言本身的任何特性&#xff0c;依舊基于作用域和原型…

【ArcGIS風暴】根據海拔范圍分級統計GIMMS 3g NDVI平均值案例教程——以甘肅省為例

在論文寫作時,通常要根據區域進行統計柵格數據。本文以甘肅省dem、NDVI數據為例,講解根據海拔范圍分級統計NDVI平均值、最大值、最小值和面積等。 1. 海拔分類 dem是本案例的最基本數據,打開ArcMap,加載dem數據,如下圖所示: 首先要對dem進行分級,所使用的到的工具是重分…

【轉】知道這20個正則表達式,能讓你少寫1,000行代碼

正則表達式&#xff0c;一個十分古老而又強大的文本處理工具&#xff0c;僅僅用一段非常簡短的表達式語句&#xff0c;便能夠快速實現一個非常復雜的業務邏輯。熟練地掌握正則表達式的話&#xff0c;能夠使你的開發效率得到極大的提升。下面是技匠整理的&#xff0c;在前端開發…