1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        80 歲還嗖嗖改代碼,他是 Unix 命名人,發(fā)明“Hello World”!

        共 5763字,需瀏覽 12分鐘

         ·

        2022-09-08 11:49

        星標(biāo)/置頂? 公眾號(hào) ?? ,硬核文章第一時(shí)間送達(dá)!

        ?

        ?來(lái)源丨 量子位

        今天,“Linux三劍客”中一個(gè)非常古老的工具突然登上了GitHub今日熱榜

        fc4b462448500175ada96662aac437a3.webp

        ——這竟是因?yàn)?strong style="font-weight:bold;color:rgb(0,153,127);">80歲的原作者更新了。

        是的你沒(méi)聽(tīng)錯(cuò),有人都80歲了還在改代碼!

        這位大神,就是加拿大計(jì)算機(jī)科學(xué)家——布萊恩·柯林漢?(Brian Kernighan)

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

        不管你學(xué)的什么語(yǔ)言,第一個(gè)程序就是學(xué)會(huì)輸出它。

        printf(“Hello World!\n”);
        cout << “Hello World!\n”;
        print “Hello World!”
        ……

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

        561bd91bde3fabac80b98a21936597fe.webp

        如今老爺子已經(jīng)滿頭白發(fā),還活躍在“一線”——

        今年5月,AWK的GitHub倉(cāng)庫(kù)中,老爺子提交了新的pull request,給AWK添加了一直沒(méi)法做到的Unicode支持。

        對(duì)此,網(wǎng)友的態(tài)度是這樣的:

        67a580c5f5598cc8ca2265e30b6d893c.webp

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

        免試進(jìn)入貝爾實(shí)驗(yàn)室

        事情還得從柯林漢的大學(xué)時(shí)代說(shuō)起。

        柯林漢于1942年出生于加拿大,本科就讀于多倫多大學(xué)工程物理學(xué)。

        他形容這是一個(gè)給那些自己也不知道想學(xué)什么的人準(zhǔn)備的“大雜燴”專業(yè),但很幸運(yùn),剛上大一他就對(duì)編程開始感興趣,學(xué)起了Fortran語(yǔ)言。

        當(dāng)時(shí),計(jì)算機(jī)的發(fā)展還處于初期。他直到大三才見(jiàn)到全校唯一的一臺(tái)晶體管計(jì)算機(jī):IBM 7094。

        由于太貴(時(shí)值300萬(wàn)美元),學(xué)生們并沒(méi)有機(jī)會(huì)碰到它。

        296550f0857de12f35ea8751f968e30f.webp

        由此可見(jiàn)彼時(shí)工具的稀缺,所以正在學(xué)編程的柯林漢也就只是拜讀了丹尼爾·麥克拉肯的大作,獲得了“頗豐”的理論知識(shí),實(shí)際并沒(méi)有真正上手寫過(guò)一行代碼。

        大一暑假,不知道他如何在一家石油公司找了個(gè)實(shí)習(xí),任務(wù)是用COBOL語(yǔ)言給精煉廠開發(fā)優(yōu)化軟件。

        鑒于這個(gè)語(yǔ)言他不熟,也沒(méi)有編程經(jīng)驗(yàn),所以最后也沒(méi)寫出個(gè)像樣的程序來(lái)。

        雖然受了一點(diǎn)小挫折,但他對(duì)編程的熱情并沒(méi)有退卻,回到學(xué)校繼續(xù)研究。

        大四畢業(yè)后,柯林漢決定繼續(xù)深造,并拿到了MIT和普林斯頓大學(xué)的offer。

        由于去MIT要7年才能完成博士學(xué)業(yè),且每周需做30小時(shí)的研究助理工作,而普林斯頓只要3年且提供全額獎(jiǎng)學(xué)金,再加上柯林漢的好友就在普林斯頓,他毫不猶豫地選了后者。

        在普林斯頓大學(xué),柯林漢讀的是電子工程專業(yè),因?yàn)楫?dāng)時(shí)同樣還沒(méi)有專門的計(jì)算機(jī)系。

        這完全沒(méi)妨礙他前進(jìn)。

        讀博期間,他先是得到了MIT的實(shí)習(xí)機(jī)會(huì),有幸在后來(lái)的圖靈獎(jiǎng)得主費(fèi)爾南多·科巴托(Fernando Corbató)門下干活,給一種叫作Multics的分時(shí)操作系統(tǒng)項(xiàng)目寫代碼。

        轉(zhuǎn)年夏天,他又得到了貝爾實(shí)驗(yàn)室的實(shí)習(xí)機(jī)會(huì),在那里寫匯編語(yǔ)言。

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

        轉(zhuǎn)眼到了博士畢業(yè),柯林漢被直接留校任教,并在沒(méi)有進(jìn)行面試和研究成果展示的情況下,成為了貝爾實(shí)驗(yàn)室的正式成員,足以見(jiàn)其優(yōu)秀。

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

        Unix命名人

        我們現(xiàn)在的大部分服務(wù)器、手機(jī)系統(tǒng)和物聯(lián)網(wǎng)系統(tǒng)的底層基本都是基于Unix。

        而三大系統(tǒng)之一的Linux也是一種類Unix系統(tǒng),可以說(shuō),Unix是現(xiàn)代操作系統(tǒng)的源頭之一。

        9d89837c57f5aed5f8304d149405537c.webp

        說(shuō)起來(lái)比較意外,這么一個(gè)重要的操作系統(tǒng),其初代版本被后來(lái)的圖靈獎(jiǎng)得主Ken Thompson僅花3周的時(shí)間就搞定了。

        當(dāng)時(shí)的Unix還叫UNICS?(Uniplexed Information and Computing System),后來(lái)被柯林漢改成了現(xiàn)在的名字。

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

        AWK作為一種文本處理語(yǔ)言,只做過(guò)濾和轉(zhuǎn)換文本行這一件事,卻成為Unix/Linux平臺(tái)上現(xiàn)有功能最強(qiáng)大的數(shù)據(jù)處理引擎之一。

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

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

        除了AWK,柯林漢還發(fā)明了AMPL,一種描述并求解大規(guī)模復(fù)雜數(shù)學(xué)問(wèn)題的建模語(yǔ)言,支持世界上大部分的求解器。

        還有編譯器Ratfor、文檔編制預(yù)處理器Pic、Grap和數(shù)學(xué)排版語(yǔ)言Eqn等這些重要研究成果背后都有他的身影。

        除了寫代碼,柯林漢還很愛(ài)寫書,且誕生了不少經(jīng)典之作。

        比如你想了解Unix的歷史,就可以看《Unix傳奇》,作為參與者和見(jiàn)證人之一,他寫的這本書可以讓沒(méi)有足夠?qū)I(yè)技術(shù)背景的人也能欣賞Unix的思想。

        fa8e33499033a103762c662f01ecefdd.webp

        《Unix傳奇》

        而文章開頭所說(shuō)的“Hello World”范式,則是出自于他與C語(yǔ)言之父丹尼斯·里奇(Dennis Ritchie)合寫的開山之作《C程序設(shè)計(jì)語(yǔ)言》。

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

        調(diào)試一段代碼的難度是編寫它們的兩倍。按照這個(gè)定義,如果你的代碼寫得非常巧妙,那你可能沒(méi)有足夠的能力來(lái)調(diào)試它。

        (相比于復(fù)雜代碼,簡(jiǎn)單的代碼更可取。因?yàn)檎{(diào)試復(fù)雜代碼的過(guò)程中,任何問(wèn)題都會(huì)十分棘手,甚至無(wú)法解決。)

        解決問(wèn)題靠拖延?

        那么,柯林漢本身是個(gè)什么性格的人呢?

        2021年他接受《程序員》采訪時(shí),曾被問(wèn)了這么一個(gè)問(wèn)題:

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

        (以上兩人都是他在貝爾實(shí)驗(yàn)室的同事)

        對(duì)此,柯林漢連連擺手:

        他們是“別人家的程序員”,我可從沒(méi)這么高效過(guò)!

        老爺子說(shuō)了,遇到新問(wèn)題,他的解決方案通常簡(jiǎn)單粗暴,那就是盡可能地拖延,以及祈禱問(wèn)題消失,或者祈禱問(wèn)題自己解決自己。

        1b9ffdb66a168517dae74871b65f0a5e.webp

        這個(gè)玄學(xué)辦法本身是不能解決問(wèn)題的,但這樣做,柯林漢有足夠時(shí)間消化問(wèn)題,然后想出對(duì)策。

        而且,他其實(shí)會(huì)選擇直接動(dòng)手搞定問(wèn)題。

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

        上個(gè)月,油管頻道Computerphile對(duì)他進(jìn)行了采訪,大伙兒才知道,老爺子還在改代碼!

        柯林漢說(shuō),沒(méi)有任何一種計(jì)算機(jī)語(yǔ)言或工具是萬(wàn)能的,AWK也不例外。

        此前,AWK只適用于ASCII或8位輸入,不能處理Unicode(統(tǒng)一碼)

        98395e55b3bf0c8a5c8c2eccf3bb0425.webp

        圖源Youtube頻道Computerphile視頻

        幾個(gè)月前,柯林漢花了點(diǎn)時(shí)間,折騰了一下AWK——他稱它是“一個(gè)非常古老的程序”——現(xiàn)在AWK可以處理UTF-8輸入和輸出了。

        現(xiàn)在,用戶已經(jīng)能用正則表達(dá)式提取日語(yǔ)字符以及類似的東西。

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

        a3fec4f925039642687b4faa6c0fd205.webp

        圖源Youtube頻道Computerphile視頻

        整個(gè)采訪過(guò)程,老爺子依然健談,精神面貌也不賴。

        話說(shuō)回來(lái),精力充沛的他,對(duì)幾十歲的“古老程序”改改改,還有啥原因呢?

        柯林漢的回答是這樣的:

        今天的計(jì)算環(huán)境,和三、四十年前非常不同,內(nèi)存量也大大擴(kuò)充了,“這會(huì)改變你對(duì)AWK的思考方式,尤其是AWK運(yùn)行不起來(lái)的部分”。

        所以,老爺子一直偷偷在后臺(tái)玩兒新版本的AWK,目的是盡可能做拓展,讓AWK更容易實(shí)踐和使用

        d8f0fcdc9b7c403c1335c53aa3630542.webp

        這其實(shí)是柯林漢一以貫之的行事準(zhǔn)則,此前,他就在播客CoRecursive中表示過(guò):

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

        有意思的是,世界上沒(méi)有萬(wàn)能工具,也沒(méi)有萬(wàn)能通才。老爺子自己就承認(rèn)說(shuō),他的bug是還沒(méi)完全搞懂Git怎么用。

        所以他只能通過(guò)電子郵件,把更改發(fā)送給當(dāng)前的維護(hù)人員。

        8a0d5c1d5ccc65f975713e2e4c9f4b41.webp

        圖源柯林漢的郵件

        網(wǎng)友:Hacker永不退休

        80歲高齡還要修改幾十年前寫下的代碼,這位程序員屆卷王的故事再次引起了網(wǎng)友關(guān)注。

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

        57c6ab72b2e31ea8d1770c8a8a1070cd.webp
        7f6e0456baf902a9db3be74de85720c8.webp

        有的網(wǎng)友表示了對(duì)老爺子的感激。

        caa354f647b2f9df2b4c2ef624100c10.webp

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

        e0076c8dcf873875d1fb1a0560a4f7e3.webp

        當(dāng)然少不了玩梗的人。

        Hacker永不退休!

        ff225fda3ac997efc52d16c576d6c996.webp

        One More Thing

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

        這句“萬(wàn)物開頭”其實(shí)最早是在柯林漢1974年撰寫的《Programming in C: A Tutorial》中首次出現(xiàn),后來(lái)才被合寫進(jìn)那本經(jīng)典之作。

        441dd401b758a0e6eb0602276026b25f.webp

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

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

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

        在接受福布斯雜志訪談時(shí),他模模糊糊回憶:

        可能是因?yàn)榭戳藗€(gè)動(dòng)畫片,里面有一個(gè)雞蛋和一只小雞,小雞說(shuō)了句:Hello,World!

        af62d733297177cfdeb5bdc5229ce22c.webp

        參考鏈接:
        [1]
        https://www.youtube.com/watch?v=GNyQxXw_oMQ
        [2] https://arstechnica.com/gadgets/2022/08/unix-legend-who-owes-us-nothing-keeps-fixing-foundational-awk-code/?comments=1
        [3] https://www.theregister.com/2022/08/23/universal_unix_tool_awk_gets/
        [4] https://www.cs.princeton.edu/~bwk/
        [5] https://corecursive.com/brian-kernighan-unix-bell-labs1/
        [6] https://baijiahao.baidu.com/s?id=1696979082867013424&wfr=spider&for=pc
        [7] https://github.com/onetrueawk/awk/commit/9ebe940cf3c652b0e373634d2aa4a00b8395b636


        3b7cf7eaa506cf989e08c27b1fd3c6ce.webp?END?3b7cf7eaa506cf989e08c27b1fd3c6ce.webp

        2T ?程序員大禮包大放送,包括 C/C++、Linux、Python、Java、PHP、人工智能、單片機(jī)、樹莓派等。

        關(guān)注公眾號(hào) ??,后臺(tái)回復(fù) 1024 」, 即可免費(fèi)獲??!

        瀏覽 74
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亲吻呻吟打开双腿做受视频 | 国产日韩欧美一区二区 | 午夜一区 | 欧美日韩一二三四 | 99久久99久久久国产精品青草 | 国产精品嫩草影院88av漫画 | 自拍偷拍成人网站 | 黄色污污网站 | 日本美女操逼的视频 | 做爱视频在线观看网站 |