80歲還嗖嗖改代碼:他是Unix命名人,說解決問題全靠拖


今天,“Linux三劍客”中一個非常古老的工具突然登上GitHub今日熱榜:——這竟是因為80歲的原作者更新。是的你沒聽錯,有人都80歲還在改代碼!這位大神,就是加拿大計算機科學傢——佈萊恩·柯林漢(BrianKernighan)。

80歲還嗖嗖改代碼!他是Unix命名人,說解決問題全靠拖

豐色 衡宇 發自 凹非寺

與比爾蓋茨、Java之父、Python之父等大佬齊名的他,開創的“Hello World”范式讓每一位學編程的同學刻煙吸肺:

不管你學的什麼語言,第一個程序就是學會輸出它。

printf(“Hello World!\n”);

cout << “Hello World!\n”;

print “Hello World!”

……

此外,C語言的第一本編程著作,作者之一有他;Unix系統的早期開發人員、AWK (Linux及Unix中的文本數據處理工具)的共同創造者名單中,他也赫然在列。

如今老爺子已經滿頭白發,還活躍在“一線”——

今年5月,AWK的GitHub倉庫中,老爺子提交新的pull request,給AWK添加一直沒法做到的Unicode支持。

對此,網友的態度是這樣的:

是什麼讓這位大佬常年保持編程熱情的呢?

免試進入貝爾實驗室

事情還得從柯林漢的大學時代說起。

柯林漢於1942年出生於加拿大,本科就讀於多倫多大學工程物理學。

他形容這是一個給那些自己也不知道想學什麼的人準備的“大雜燴”專業,但很幸運,剛上大一他就對編程開始感興趣,學起Fortran語言。

當時,計算機的發展還處於初期。他直到大三才見到全校唯一的一臺晶體管計算機:IBM 7094。

由於太貴 (時值300萬美元),學生們並沒有機會碰到它。

由此可見彼時工具的稀缺,所以正在學編程的柯林漢也就隻是拜讀丹尼爾·麥克拉肯的大作,獲得“頗豐”的理論知識, 實際並沒有真正上手寫過一行代碼

大一暑假,不知道他如何在一傢石油公司找個實習,任務是用COBOL語言給精煉廠開發優化軟件。

鑒於這個語言他不熟,也沒有編程經驗,所以最後也沒寫出個像樣的程序來。

雖然受一點小挫折,但他對編程的熱情並沒有退卻,回到學校繼續研究。

大四畢業後,柯林漢決定繼續深造,並拿到MIT和普林斯頓大學的offer。

由於去MIT要7年才能完成博士學業,且每周需做30小時的研究助理工作,而普林斯頓隻要3年且提供全額獎學金,再加上柯林漢的好友就在普林斯頓,他毫不猶豫地選後者。

在普林斯頓大學,柯林漢讀的是電子工程專業,因為當時同樣還沒有專門的計算機系。

這完全沒妨礙他前進。

讀博期間,他先是得到MIT的實習機會,有幸在後來的圖靈獎得主費爾南多·科巴托 (Fernando Corbató)門下幹活,給一種叫作Multics的分時操作系統項目寫代碼。

轉年夏天,他又得到 貝爾實驗室的實習機會,在那裡寫匯編語言。

為方便在Fortran程序中做列表處理,他還寫出一套函數庫,他形容這份工作“十分過癮”。

轉眼到博士畢業,柯林漢被直接留校任教,並在沒有進行面試和研究成果展示的情況下,成為貝爾實驗室的正式成員,足以見其優秀。

而他和Unix的淵源也就此展開。

Unix命名人

我們現在的大部分服務器、手機系統和物聯網系統的底層基本都是基於Unix。

而三大系統之一的Linux也是一種類Unix系統,可以說,Unix是現代操作系統的源頭之一。

說起來比較意外,這麼一個重要的操作系統,其初代版本被後來的圖靈獎得主Ken Thompson僅花3周的時間就搞定。

當時的Unix還叫UNICS (Uniplexed Information and Computing System),後來被柯林漢改成現在的名字。

Unix中有一個核心工具,叫做AWK,柯林漢就是其發明者之一(名稱中的“K”正是代表他)。

AWK作為一種文本處理語言,隻做過濾和轉換文本行這一件事,卻成為Unix/Linux平臺上現有功能最強大的數據處理引擎之一。

在Linux系統中,它和grep、sed命令並稱為“三劍客”,並占據“老大”席位,掌握它,處理日常操作可以6到飛起。

如今,AWK已經分化出三個版本,依然受到人們的歡迎,誕生45年仍未“退休”。

除AWK,柯林漢還發明AMPL,一種描述並求解大規模復雜數學問題的建模語言,支持世界上大部分的求解器。

還有編譯器Ratfor、文檔編制預處理器Pic、Grap和數學排版語言Eqn等這些重要研究成果背後都有他的身影。

除寫代碼,柯林漢還很愛寫書,且誕生不少經典之作。

比如你想解Unix的歷史,就可以看《Unix傳奇》,作為參與者和見證人之一,他寫的這本書可以讓沒有足夠專業技術背景的人也能欣賞Unix的思想。

而文章開頭所說的“Hello World”范式,則是出自於他與C語言之父丹尼斯·裡奇 (Dennis Ritchie)合寫的開山之作《C程序設計語言》。

再比如柯林漢的第一本著作《The Elements of Programming Style》 (《編程格調》),則留下一個以他名字命名的定律—— 柯林漢定律,即:

調試一段代碼的難度是編寫它們的兩倍。按照這個定義,如果你的代碼寫得非常巧妙,那你可能沒有足夠的能力來調試它。

(相比於復雜代碼,簡單的代碼更可取。因為調試復雜代碼的過程中,任何問題都會十分棘手,甚至無法解決。)

解決問題靠拖延?

那麼,柯林漢本身是個什麼性格的人呢?

2021年他接受《程序員》采訪時,曾被問這麼一個問題:

肯(Ken)用3周創造Unix,道格 (Doug)在幾天內就提出“管道 (pipe)”的想法,你們工作效率這麼高,有什麼訣竅嗎?

(以上兩人都是他在貝爾實驗室的同事)

對此,柯林漢連連擺手:

他們是“別人傢的程序員”,我可從沒這麼高效過!

老爺子說,遇到新問題,他的解決方案通常簡單粗暴,那就是 盡可能地拖延,以及祈禱問題消失,或者祈禱問題自己解決自己

這個玄學辦法本身是不能解決問題的,但這樣做,柯林漢有足夠時間消化問題,然後想出對策。

而且,他其實會選擇直接動手搞定問題。

今年1月1日,柯林漢剛好過80歲生日。

上個月,油管頻道Computerphile對他進行采訪,大夥兒才知道,老爺子 還在改代碼

柯林漢說,沒有任何一種計算機語言或工具是萬能的,AWK也不例外。

此前,AWK隻適用於ASCII或8位輸入,不能處理Unicode (統一碼)。

幾個月前,柯林漢花點時間,折騰一下AWK——他稱它是“一個非常古老的程序”——現在AWK可以 處理UTF-8輸入和輸出

現在,用戶已經能用正則表達式提取日語字符以及類似的東西。

視頻中柯林漢還順口提一嘴,他修補一些“又快又臟”的東西,讓AWK可以處理CSV文件。

整個采訪過程,老爺子依然健談,精神面貌也不賴。

話說回來,精力充沛的他,對幾十歲的“古老程序”改改改,還有啥原因呢?

柯林漢的回答是這樣的:

今天的計算環境,和三、四十年前非常不同,內存量也大大擴充,“這會改變你對AWK的思考方式,尤其是AWK運行不起來的部分”。

所以,老爺子一直偷偷在後臺玩兒新版本的AWK,目的是盡可能做拓展,讓AWK 更容易實踐和使用

這其實是柯林漢一以貫之的行事準則,此前,他就在播客CoRecursive中表示過:

如果做些能對自己有幫助,又對他人工作有所改善的事,何樂而不為呢?

有意思的是,世界上沒有萬能工具,也沒有萬能通才。老爺子自己就承認說,他的bug是 還沒完全搞懂Git怎麼用

所以他隻能通過電子郵件,把更改發送給當前的維護人員。

△圖源柯林漢的郵件

網友:Hacker永不退休

80歲高齡還要修改幾十年前寫下的代碼,這位程序員屆卷王的故事再次引起網友關註。

自面世起,AWK就廣受歡迎。看到AWK在今天依然能得到完善,變得更強,不少人對老爺子的敲代碼熱情表示respect。

有的網友表示對老爺子的感激。

還有人覺得,為改善程序員寫代碼的環境不斷付出,是一件很鼓舞人心的事情。

當然少不玩梗的人。

Hacker永不退休!

One More Thing

最後,讓我們回到“Hello, world”。

這句“萬物開頭”其實最早是在柯林漢1974年撰寫的《Programming in C: A Tutorial》中首次出現,後來才被合寫進那本經典之作。

該書中兩位作者形成的寫代碼風格,也被稱為 K&R風格(K&R即指柯林漢Kernighan和裡奇Ritchie)。

有意思的是,柯林漢表示這本書是自己強行拉著丹尼斯寫的。

至於為什麼選擇用“Hello, world”而不是別的,柯林漢自己都記不清。

在接受福佈斯雜志訪談時,他模模糊糊回憶:

可能是因為看個動畫片,裡面有一個雞蛋和一隻小雞,小雞說句:Hello,World!


相關推薦

2023-03-07

“馬斯克氣瘋”!就在今天,Twitter又雙叒崩潰,圖片和任何鏈接都打不開。據馬斯克自己的說法,原因隻是“API的一個小改動”。但後果很嚴重,起碼在網友們看來,Twitter的現場是醬嬸的:而吃瓜群眾們的心情,則是:並非網

2024-04-22

GitHub是全球最大的代碼托管平臺,全球各地的科技公司和開發者們在上面托管項目或源代碼,項目維護者也可以開啟評論功能讓其他開發者提交建議或反饋問題。不過目前GitHub被發現一個嚴重的設計問題,有攻擊者利用項目評論

2023-01-29

解決剎車故障,宋先生前往購車時的銷售門店,對方告訴他是電子真空泵壞掉,他們已把車送到廠傢專門的維修點。宋先生表示願意讓廠傢維修,可是自己傢住得遠,來回前往市區和平時出行都不方便,希望廠傢提供代步車。對

2022-10-24

。”陶建輝表示。據他介紹,在美國,超過35歲乃至於50歲還在編代碼的程序員多如牛毛,但在國內卻很少。而究其原因,還是由於中國的程序員一開始的時候很少。但如今,這一切正在變得好起來。據陶建輝對《財》介紹,目

2023-10-31

;是我一個人,在49歲的年齡,兩個月就能寫下近1.8萬行C代碼,開發出TDengine的原型的根本原因;也是我從不懼怕來自對手的產品競爭的原因,因為隻要產品有不足,我陶建輝一定能把它解決。對個人而言,長期的專註產生的價

2024-03-23

美國散戶“閉眼瘋炒”的股票已然浮現——有望以“DJT”代碼登陸美股市場的特朗普媒體科技集團(TMTG)。由於特朗普走的是反向並購上市路線,所以未來承載“特朗普”大名的股票其實一直都在市場上交易。特朗普麾下的媒

2023-04-10

為“遊走總裁”在各個部門“攪局”,80%時間親自下場寫代碼。OpenAI CEO薩姆·阿爾特曼(Sam Altman)及其他董事會成員都稱他是ChatGPT產品化的第一推手、“在科技界是罕見的”、“Google沒有這樣的人”。盡管如此,他也造成OpenAI

2024-04-23

狠扣分;而Claude 3即使識別出小錯誤也會寬大處理。對於代碼問題,Claude 3傾向於提供簡單結構、不依賴外部代碼庫,能幫助人類學習編程的答案;而GPT-4-Turbo更傾向最實用的答案,不管其教育價值如何。另外即使設置溫度為0,GP

2023-01-09

聯網大廠,ChatGPT也遭到封殺。很多已經習慣向ChatGPT咨詢代碼問題的碼農們,原地爆哭……大廠封殺ChatGPT,碼農哭近日,一位碼農在網上發帖稱,在自己所在的大廠,辦公室wifi禁用ChatGPT。這直接把他整崩潰。博主表示,自己一

2023-12-07

午發佈AlphaCode2,它是GoogleDeepMind實驗室大約一年前推出的代碼生成AlphaCode的改進版。AlphaCode2實際上是由雙子座模型(Gemini)驅動的,或者至少是它的某個變種(GeminiPro)在編程競賽數據的基礎上進行微調。Google表示,至少在一

2023-11-29

道他能做到。我從未見過像他這樣的人。他什麼都能造。他是一位天生的工程師和能夠快速解決問題的生產負責人,這是很重要的一點。他是各種天賦的集合體,這非常有用。他解決自己在電動汽車、電機、加速、制動等方面的

2023-11-27

他2017年的回憶錄《Hit Refresh》,自從他十幾歲時寫第一行代碼以來,他就開始對計算機和軟件著迷。然而,他並不打算離開印度,至少不是特別想離開。事實上,在申請美國研究生院時,納德拉希望他們會拒絕他。然而,他最終

2023-11-09

模型發佈的 24 小時內,就有研究者在 Aider 上進行 AI 生成代碼的能力測試。在 gpt-4-1106-preview 模型上,僅使用 diff 編輯方法對 GPT-4 模型進行基準測試得出的結論是:新的 gpt-4-1106-preview 模型似乎比早期的 GPT-4 模型快得多;第一次

2023-12-07

,並且吸收任何類型的輸入和輸出——無論是文字,還是代碼、音頻、圖像、視頻。Gemini猜對紙團在最左邊的杯子裡Google DeepMind首席執行官兼聯合創始人Demis Hassabis表示,Google一直對非常通用的系統感興趣。而這裡最關鍵的,就