1. 程式人生 > >C語言、程式語言發展史

C語言、程式語言發展史

以銅為鑑,可正衣冠;以古為鑑,可知興替;以人為鑑,可明得失。

前言

瞭解和學習一門語言、一個系統乃至方方面面的任何東西時,如果不知道其歷史和現狀而只是一上來就一味地悶頭苦學,你就很容易“一葉障目不見泰山”。

如此這般火急火燎的就上手苦幹,私以為大錯特錯,所謂“學而不思則罔”。當然,上手苦幹也是之後的很重要的部分。

想要了解C語言的歷史,請慢慢品味如下這long long ago 的故事,這涉及到了很多公司和人物,且聽我一一道來。

1. at&t(美國電話電報公司)

  1. 為什麼要介紹at&t 呢?

    這是因為,C語言和Unix起源於貝爾實驗室,而要了解貝爾實驗室,我們得先從其所屬所屬公司at&t

    開始……

  2. 由其名字(美國電話電報公司)就可以看出來at&t 主要致力於通訊領域,它起源於遙遠的1877年,距今已經有100多年的的歷史了(我想到了馬雲說要做101年的企業,願你成功!)。

    到今天,單就這一個at&t 獨立公司來說,它目前是主營電信業務,是美國第二大移動運營商。

    這裡寫圖片描述

  3. 然而,要說at&t 就不得不從他的創始人Bell - 貝爾 開始說起…

2. 貝爾和他的貝爾系統

請注意,這不是貝爾·格里爾斯(Bear Grylls),儘管這guy很酷~

我們的主角叫亞歷山大·格拉漢姆·貝爾(Alexander Graham Bell,1847-1922),他是美籍加拿大著名發明家和企業家,他獲得了世界上第一臺可用電話機的專利權,是“電話之父”。它以電話專利權起家建立了貝爾電話公司

,這家公司和之後的大量衍生公司最終被稱為貝爾系統 。此外,他還發明瞭載人巨型風箏、水翼船、改良了留聲機等。

這裡寫圖片描述

2.1 Bell的黑歷史…

2002年6月15日,美國國會通過一項決議,判定義大利人安東尼奧·梅烏奇(Antonio Meucci)為電話的發明者。換言之他才是“電話之父”!

那麼歷史到底是怎樣的呢?根據可以網上可以查到的資料顯示:

  1. 義大利人梅烏奇在1849年的一天在他研究電生理學的過程中發現了“電話的原理”並開始研究他稱之為“會說話的電報機”的裝置。此時,亞歷山大·貝爾才兩歲…

  2. 在移居美國之後,因為不會英語的關係他始終融入不進主流社會,得不到應有的認可,甚至他連申請專利的錢都不夠。更加讓人心寒的是,1876年和梅烏奇共用一個實驗室的貝爾向美國專利局提出申請電話的專利權!

  3. 當然,梅烏奇憤而提起上訴,當時最高法院已經同意以欺詐罪指控貝爾,但就在勝利曙光要顯現時,年近80窮困潦倒、病魔纏身的梅烏奇卻於1889年帶著遺憾離開了人世。

歷史就是如此具有魔力,成王敗寇,從來如此。貝爾獲得了電話的專利權,成為“電話之父”,名聲大噪,建立了貝爾電話公司(at&t前身)。自此,歷史的車輪一直走到了今天。當然,我們不能因為一點而完全否認一個人,貝爾還是為社會、科技的發展作出了卓越的貢獻!

後人只能從當時留下的不知真假的隻言片語中猜測當時發生了什麼。如果以上是真實的歷史,那麼我相信隨著美國國會的一紙決議,梅烏奇終於可以稍感欣慰了。

2.2 貝爾系統歷史

貝爾建立的貝爾系統,也可以用at&t 代稱,在其100多年的歷史中,經歷了多次的拆分和重組(由於自身發展或是政府反壟斷)。

貝爾系統包括母公司at&t 和數量龐大的子公司和研究所,曾長期壟斷了80%-90%的美國市話和長途業務。而到今天,現在的at&t 已經是被拆分了幾次之後的結果了。貝爾系統 的歷史如下:

  1. 1877年,貝爾 成立了一家叫做美國貝爾電話公司 的公司。

  2. 1895年,貝爾 又成立了一個公司來負責其正在開發的美國全國範圍的長途業務,這就是美國電報電話公司 - at&t

  3. 1899年,at&t 整合了貝爾電話公司的業務,成為了貝爾系統(貝爾的一系列公司)的母公司。

  4. 1984年,美國司法部根據《反托拉斯法》拆分了at&t ,將其分為8個公司,1個公司繼承了母公司名字at&t (專營長途話務)、7個本地電話公司(貝爾七兄弟)。

  5. 1995年,at&t 再次被分離為3個公司,除了1個at&t 外,分出了2個從事裝置開發製造的朗訊科技NCR 。至此at&t 只保留了通訊服務業務。

  6. 2005年,原貝爾七兄弟之一的西南貝爾 ,以160億收購了at&t ,合併後的企業保留了at&t 名字。

    題外話,今天美國NBA中馬刺隊(San Antonio Spurs)的主場就叫at&t Center

    這裡寫圖片描述

說了以上那麼多,其實和我們關係最大的是at&t 的一個部門:貝爾實驗室

3. Bell Labs - 貝爾實驗室

貝爾實驗室如雷貫耳,自1925年以來,實驗室共獲得了兩萬五千多項專利(請自行與國內大部分扯淡專利區分開來),8項諾貝爾獎。

在20世紀二三十年代,貝爾實驗室的研究人員推出了遠距離電視傳輸、數字計算機,領導了有聲電影的開發;兩項資訊時代的重要發明 - 電晶體和資訊理論都是貝爾實驗室在40年代研究出來的。在50、60年代,貝爾實驗室發明了太陽能電池、鐳射的理論和通訊衛星。

這裡寫圖片描述

貝爾實驗室的歷史如下:

  1. 1925年,at&t 收購了西方電子公司的研究部門,成立了一個叫做“貝爾電話實驗室公司”的獨立實體,後來改稱為:貝爾實驗室

  2. 1995年,從at&t 分離出了獨立公司朗訊科技(Lucent Technologies),貝爾實驗室一併歸入朗訊科技 麾下。

    這裡寫圖片描述

  3. 2006年,法國阿爾卡特(Alcatel)公司 收購了朗訊,在合併後的新公司中,朗訊只佔40%,其合併後的規模僅次於美國思科,新公司稱為:阿爾卡特-朗訊(Alcatel - Lucent),貝爾實驗室目前屬於阿朗

    這裡寫圖片描述

  4. 2008年,由於阿郎 長期虧損,不得不出售了已經有46年曆史的貝爾實驗室大樓(上圖),值得欣慰的是,購得大樓的地產開發商並沒有完全抹掉大樓的計劃。

  5. 2015年,諾基亞 宣佈將以156億歐元收購阿郎 ,預計2016年上半年完成。我想,如果貝爾實驗室部門還存在,應該要歸入諾基亞了。

    根據現有資料,貝爾實驗室 的規模和人員已經大不如前,不知道未來在諾基亞中貝爾實驗室 是否還會繼續存在……但是,其輝煌燦爛的歷史已經彪炳史冊,值得我們永遠崇敬了!

4. 貝爾實驗室與軟體行業

我覺得上面這段歷史很有趣,無數的因果、偶然造就了今天五彩繽紛的世界……好吧,終於到了C語言部分了……好漫長,那麼我們開始吧。

由上可知,貝爾實驗室其實是專注於通訊領域的,但其對計算機軟體領域的影響卻也是無與倫比的!

4.1 B語言與UNIX

20世紀60年代,貝爾實驗室的研究員Ken Thompson(肯·湯普森)發明了B語言,並使用B編了個遊戲 - Space Travel,他想玩自己這個遊戲,所以他揹著老闆找到了臺空閒的機器 - PDP-7,但是這臺機器沒有作業系統,於是Thompson著手為PDP-7開發作業系統,後來這個OS被命名為 - UNIX


Thompson(肯·湯普森)發明了UNIX

4.2 C語言

1971年,Ken Thompson的同事D.M.Ritchie(DM裡奇),也很想玩Space Travel,所以加入了Ken Thompson,合作開發UNIX,他的主要工作是改進Thompson的B語言。

最終,在1972年這個新語言被稱為C,取BCPL的第二個字母,也是B的下一個字母。

這裡寫圖片描述
D.M.Ritchie(DM裡奇)發明了C語言

4.3 C與UNIX

1973年,C主體完成。Ken Thompson和D.M.Ritchie迫不及待的開始用C語言完全重寫了UNIX。此時程式設計的樂趣已經使他們完全忘記了那個“Space Travel”,一門心思的投入到了UNIX和C語言的開發中。自此,C語言和UNIX相輔相成的發展至今。

這裡寫圖片描述
Ken Thompson(left)和D.M.Ritchie(right)

貝爾實驗室太過偉大,甚至關於程式語言如此重要的發展歷史部分,在實驗室整體歷史中都顯得那麼”微不足道”。

5. 類C語言起源、歷史

C語言、C語言的起源以及類似C語言的程式語言的歷史簡直不要太漫長,我簡單總結列表如下:

  1. CPL(Combined Programming Language) - 1963
    CPL是1963年劍橋大學發明的

  2. BCPL(Base Combined Programming Language) - 1967
    劍橋的Matin Richards 對CPL做了簡化,推出了BCPL

  3. B(B Programming Language) - 1969
    貝爾實驗室的Ken Thompson(肯·湯普森) 對BCPL又做了改進,設計出了簡單的且接近硬體的B語言,並用B語言寫了第一個UNIX OS

  4. C(C Programming Language) - 1972
    貝爾實驗室的另外一個人Dennis MacAlistair Ritchie(D.M.Ritchie - DM裡奇)在B的基礎上設計出了C語言。C 保持了B的優點(精煉、接近硬體),又克服了他的缺點(過於簡單,資料無型別)

  5. C++(C plus plus Programming Language) - 1983
    還是貝爾實驗室的人,Bjarne Stroustrup(本賈尼·斯特勞斯特盧普) 在C語言的基礎上推出了C++,它擴充和完善了C語言,特別是在面向物件程式設計方面。一定程度上克服了C語言編寫大型程式時的不足。

  6. Java(Java Programming Language) - 1995
    Sun公司的Patrick Naughton的工作小組研發了Java語言,主要成員是James Gosling(詹姆斯·高斯林)

  7. C#(C Sharp Programming Language) - 2000
    Microsoft公司的Anders Hejlsberg(安德斯·海爾斯伯格)發明了C#,他也是Delphi語言之父。

總結

隨著時代和社會的發展的需要,程式語言也跟著發生了很大的改變,舊有的語言不斷的完善、增加了新的特性;同時,也有很多優秀的新程式語言出現。

但站在巨人肩膀上的我們,應該記得那些似乎要消散在歷史中的瞬間。

一個個字元,隨著敲擊鍵盤的噠噠聲,經由或是懵懂或是老練的程式設計師指尖的躍動,最終呈現為顯示器上一行行的程式碼。它們就這樣,一行接一行隨著回車與換行不停的跳動。那,是眼前這個人悅動的靈魂,它一點一點、一行行慢慢的實現著螢幕前這個程式設計師的夢想,也一點點,一步步推動著時代的發展,社會的變遷。

 Hello World!