<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          C 語言的誕生,竟然是一個失敗的項目?

          共 5150字,需瀏覽 11分鐘

           ·

          2021-07-12 14:43

          整理 | Carol

          出品 | CSDN(ID:CSDNnews)

          很多人認為 ,C 語言是一門“古董”語言。也有不少人認為,它沒有 Python 簡潔,沒有 Java 安全,甚至有可能要退出歷史舞臺。而事實上,時至今日,C 語言憑借其在不同編譯環(huán)境的穩(wěn)定性、可移植性、快速的運行速度,仍在多個領(lǐng)域發(fā)揮著重要作用。
          首先,Unix 就是用 C 語言編寫的。雖然最初 Unix 采用的是匯編語言,但是 Unix 早在 1973 年就用 C 語言進行重寫,這使得 Unix 在不同的機器上更具可移植性,并有助于其變得流行。如果沒有重寫的 Unix,那么我們今天使用的所有操作系統(tǒng)——Linux,MacOS X,Android,iOS,Chrome OS 都可能不會存在。
          而除了操作系統(tǒng)以外,Oracle 數(shù)據(jù)庫、MySQL 等數(shù)據(jù)庫管理系統(tǒng)也都是由 C 語言編寫。雖然他們中的大多數(shù)數(shù)據(jù)庫后來又用 C++重寫,但這也代表它們都是 C 的直系后裔。
          即使你一直使用的是 Python, 那你也從未停止使用過 C 語言:如 CPython 。CPython 是特指 C 語言實現(xiàn)的 Python,也就是最原始版本的 Python。當我們從 Python 官方網(wǎng)站下載并安裝好 Python 后,直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用 C 語言開發(fā)的,所以叫 CPython。在命令行下運行 Python 就是啟動 CPython 解釋器。CPython 是使用最廣的 Python 解釋器。教程的所有代碼也都在 CPython 下執(zhí)行。
          之所以使用 CPython 這個詞,是因為 Python 語言從規(guī)范到解釋器都是開源的,任何人都可以通過編寫 Python 語言解釋器,比如 Jython,就是 Java 版的 Python,還有燒腦的 PyPy,則是使用 Python 把 Python 再實現(xiàn)了一遍。
          簡而言之,C 語言簡直是無處不在。但是被廣泛應(yīng)用的 C 語言的誕生,卻不是輕易就成功的。相反,它是一個長期失敗的產(chǎn)物。

          在業(yè)內(nèi),大家所熟悉的、被稱為“C 語言之父”的或許是這位:Dennis Ritchie。

          Dennis Ritchie(丹尼斯·里奇),同時也是 Unix 之父
          當然,Dennis Ritchie 的成就是不可磨滅的,他將 C 語言帶到世界面前,其影響力在今日依舊巨大。Dennis Ritchie 的合作伙伴 Brian Kernihan(布萊恩·克尼漢)曾這樣評價他:牛頓說他是站在巨人的肩膀上,如今,我們都站在 Ritchie 的肩膀上。
          但今天的主人公卻并不是 Ritchie。因為在 Ritchie 之前,曾有一位學校教師,如果非要追溯源頭,那么他應(yīng)該才算是創(chuàng)造 C 語言的第一人。
          可以這么說,如果這個世界上沒有這位喜歡在假期里編程的教師,可能世界上也就不會有 C 語言。
           

          一位和艾倫 · 圖靈是朋友的教師

           
          今天的主人公,就是 Christopher Stratchey(克里斯托弗·斯特拉奇),Strachey 于 1916 年出生于英格蘭一個家境比較顯赫的家庭,也曾在諾福克格雷沙姆學校和劍橋國王學院接受教育。
          1938 年 10 月,是他在劍橋國王學院學習的第四年,面臨畢業(yè)的 Strachey 卻似乎由于長期忽視學習,僅從及格分數(shù)線上低空飄過,驚險地獲得了畢業(yè)證。雖然順利畢業(yè)了,但這樣的結(jié)果也令他想要獲得研究獎學金的希望化為泡影。
          即使 Strachey 家庭條件還不錯,也還是要面臨來自現(xiàn)實的壓力。1939 年 8 月,為了養(yǎng)活自己,Stratchey 接受了 STC (Standard Telephones and Cables Limited) 的物理學家職位,拿著平均每周 4 英鎊的酬勞,開始在倫敦 STC 的開發(fā)實驗室工作。
          在 STC 期間,Strachey 大部分時間都在研究厘米雷達閥的理論設(shè)計,主要是推導出閥門參數(shù)的分析公式和它的實驗驗證。他的數(shù)學工作涉及微分方程的積分,其中一些特別棘手,因此,Strachey 與同事開始使用微分分析器獲得數(shù)值解。
          后來,Strachey 開始把這次使用計算機的經(jīng)歷看作是一個轉(zhuǎn)折點,他對計算機的興趣在這個時候才被激發(fā)起來。
          1944 年 7 月,在 STC 已經(jīng)工作了 5 年的 Strachey 突然被調(diào)往倫敦的 STC 無線電部門工作,這是一項與電氣和機械設(shè)計有關(guān)的工作。突如其來的調(diào)動讓 Strachey 很不適應(yīng),同時他也發(fā)現(xiàn),這活兒比理論工作更不合自己的口味,而且認為這種氛圍“相當狹隘和骯臟”。
          確定了內(nèi)心的想法后,Strachey 迅速從 STC 辭職。一年后,也就是 1945 年 10 月,他開始在英國圣埃德蒙進修"physics-cum-mathematics" 碩士學位。
          從圣埃德蒙畢業(yè)之后,通過多次申請,他終于在英國哈羅公學(Harrow School,英國歷史悠久的著名公立學校之一)獲得了一個教師職位,并于 1949 年春天離開了圣埃德蒙學院。
          Strachey 于 1949 年 9 月開始在哈羅學校任教,在校任職期間,Strachey 經(jīng)常與組織社團和俱樂部一起表演、搞活動,由于在圣埃德蒙時自學過巴松管,Strachey 還加入了學校的管弦樂隊。可以說,在這樣忙碌的“教學”氛圍中,Strachey 對計算的興趣在離開 STC 后基本上處于休眠狀態(tài)了。
          他第一次接觸存儲程序計算機是在 1951 年 1 月,當時一個共同的朋友向他介紹了國家物理實驗室 (NPL) 的邁克·伍德格( Mike Woodger ),由于這一場相識,讓之前沉迷于文藝表演的 Stratchey 在國家物理實驗室的 Pilot ACE 上度過了他的學校假期。值得一提的是,這是第一臺配備 Alan Turing 自動計算引擎的計算機。
          Stratchey 在這個特殊的假期里開始了他的研究,而他的目的是:希望教會計算機如何下棋。這在計算機主要用于快速求解方程的時代是一件匪夷所思的事。
          然而,由于 Pilot ACE 沒有完成這項工作所需的存儲容量,他的第一次嘗試沒有成功。第二年春天,Stratchey 學習了剛安裝在曼徹斯特大學的費蘭蒂 Mark I 計算機。這臺機器的存儲空間比 Pilot ACE 大得多,相應(yīng)地,Strachey 的編程范圍也更大。更巧的是,Alan Turing (艾倫·圖靈)當時正是曼徹斯特大學計算機實驗室的助理主任,并為這臺機器編寫了程序員手冊。
          而 Strachey 恰好是 Alan Turing 在國王學院的老朋友,順理成章地,Strachey 獲得了一份程序員手冊副本。
          1951 年 7 月,Strachey 第一次訪問了Manchester Mark I Computer(第一臺存儲程序數(shù)字計算機)。當 Strachey 解釋了他“希望教會計算機如何下棋”的想法時,Alan Turing 表示這個想法很有趣,并提出另一個可能:讓機器模擬自己,并以這種方式為劍橋大學的 EDSAC (電子延遲存儲自動計算器,Electronic Delay Storage Auto-matic Calculator)開發(fā)解釋性跟蹤例程。
          Manchester Mark I ,圖片來源:britannica.com
          Strachey 被這個想法吸引了,暫時將原本的計劃擱置一邊,先著手實現(xiàn) Alan Turing 提出的這個可能性。最終,Strachey 設(shè)計的跟蹤程序大約有 1,000 條指令,這是迄今為止為機器編寫的最長的程序。
          通過上面的敘述,相信大家對 Strachey 的計算機水平已經(jīng)有了一定的了解,那么 Strachey 的故事先介紹到這里,接下來向讀者介紹 3 個新的人物。
           

          三個 David 想要一種新語言

           
          60 年代,劍橋大學準備購入一臺新電腦。劍橋想為這臺全新的計算機設(shè)計一個新的操作系統(tǒng),而另外三位劍橋大學的研究員 David Hartley, David Wheeler 和 David Barron 則有更進一步的想法。三位 David 想要創(chuàng)造一門全新的編程語言,并由此來開發(fā)新的操作系統(tǒng)。
          開發(fā)一門新語言,這一聽就非常有趣!自信的大衛(wèi)們認為自己可以輕松創(chuàng)造出更好的語言,因此并沒有做好前期的需求調(diào)研工作。他們沒有向未來的用戶詢問舊語言的優(yōu)缺點,也沒有做好項目規(guī)劃,就這樣開工了。
          他們還為這門即將誕生的新語言起了一個響當當?shù)拿?CPL,Cambridge Programming Language 的縮寫。多年以后,Hartley 指出,試圖創(chuàng)造一種新語言是“一個愚蠢的想法”。
          如果決定開發(fā)一種新語言是一個愚蠢的想法,那么選擇讓 Strachey 來監(jiān)督這個項目更是“一個愚蠢的決定”。雖然他的計算能力不容置疑,但他似乎不是一個好的項目經(jīng)理,他對這個項目十分熱愛,以至于根本無法確定優(yōu)先級。因此,這個由 Strachey 帶領(lǐng)的開發(fā)團隊只關(guān)注開發(fā)過程中的小問題,有決定性價值的大問題卻無人問津。很快,CPL 就被戲稱為 Christopher 的編程語言。在 Stratchey 的堅持下,團隊專注于設(shè)計 CPL 的所有小細節(jié),導致 CPL 變得過于復雜,難以實現(xiàn)。甚至當他們想為這門語言編寫一個編譯器時,發(fā)現(xiàn)生成的機器代碼效率過于低下,導致他們不得不放棄。
          但這個故事還沒有結(jié)束。
           

          C語言成功了!

           
          1967 年,Martin Richards 加入了 CPL 團隊并開始著手簡化它。當然,那個時候他的目標是獲得一些能夠產(chǎn)生良好編譯器和高效機器代碼的東西。這就是 Richards 從 CPL 中開發(fā) BCPL — Basic CPL 的初衷,在某種程度上,這可以算得上是一種新語言——這也就意味著承認舊 CPL 慘遭失敗。
          與此同時,貝爾實驗室(AT&T Bell Laboratories)的研究員 Kenneth Lane Thompson 閑來無事,手癢難耐,想玩一個他自己編的,模擬在太陽系航行的電子游戲——Space Travel。他背著老板,找到了臺空閑的小型計算機——PDP-7。但這臺電腦沒有操作系統(tǒng),而游戲必須使用操作系統(tǒng)的一些功能,于是他著手為 PDP-7 開發(fā)操作系統(tǒng)。后來,這個操作系統(tǒng)被命名為——UNICS(Uniplexed Information and Computing Service)。
          1969 年,Thompson 以 BCPL 語言為基礎(chǔ),設(shè)計出很簡單且很接近硬件的 B 語言(取 BCPL 的首字母),并且用 B 語言寫了初版 UNIX 操作系統(tǒng)(叫 UNICS),兩年后,同樣酷愛 Space Travel 的 Richards 為了能早點兒玩上游戲,加入了湯普森的開發(fā)項目,合作開發(fā) UNIX。他的主要工作是改造 B 語言,使其更成熟。
          1972 年,Richards 在 B 語言的基礎(chǔ)上最終設(shè)計出了一種新的語言,他取了 BCPL 的第二個字母作為這種語言的名字,這就是 C 語言。
          C 語言終于誕生了!C 最終以這樣奇妙迂回的方式成功了。雖然前教師 Strachey 把很多事情復雜化了,從而開始了一連串的失敗。但是沒有這些,C 甚至可能還沒有被發(fā)明出來。




          ▊《C++服務(wù)器開發(fā)精髓

          張遠龍 著


          • 從操作系統(tǒng)原理角度講解C++服務(wù)器開發(fā)技術(shù)棧

          • 內(nèi)容詳盡細致、版本新

          • 重磅級C++服務(wù)器開發(fā)紅寶書


          本書詳細講解如何掌握C++服務(wù)器開發(fā)技術(shù),以及如何成為合格的C++開發(fā)者,秉承的思想是,通過掌握技術(shù)原理,可以輕松制造“輪子”,靈活設(shè)計出優(yōu)雅、魯棒的服務(wù),并快速學習新技術(shù)。

          無論是對于C/C++開發(fā)者、計算機專業(yè)的學生,還是對于想了解操作系統(tǒng)原理的讀者,本書都極具參考價值。


          (京東限時活動,快快掃碼搶購吧!)





          如果喜歡本文
          歡迎 在看留言分享至朋友圈 三連


           熱文推薦  





          ▼點擊閱讀原文,查看本書詳情~
          瀏覽 18
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青自拍视频 | 亚洲大乱婬交换 | 成人丁香大香蕉 | 精品国产日批 | 怡红院AV成人网 |