本文只梳理大致的脈絡(luò),不做詳盡的敘述。
一、計算機(jī)的發(fā)明
世上本無路,走的人多了,就有了路。世上本無計算機(jī),琢磨的人多了……沒有計算機(jī),一切無從談起。
三個人對計算機(jī)的發(fā)明功不可沒,居功至偉。阿蘭·圖靈(Alan Mathison Turing)、阿塔那索夫(John Vincent Atanasoff)、和馮·諾依曼(John von Neumann)。
圖靈從理論上證明了計算機(jī)的可行性;阿塔那索夫?qū)嵺`了圖靈的理論;馮·諾依曼奠定了現(xiàn)代計算機(jī)的體系結(jié)構(gòu)。
圖靈說這玩意兒應(yīng)該可以做,已經(jīng)被證明了;阿塔那索夫二話不說動手就做了一個;馮·諾依曼說應(yīng)該這么做才更好。
圖靈功勞很大,死得很慘,只因他是同性戀。他的最后時刻是吃了一個沾有氰化鉀的蘋果。有人說蘋果公司的Logo是為了紀(jì)念圖靈,不實。確定紀(jì)念圖靈的是“圖靈獎”,計算機(jī)研究領(lǐng)域的最高獎項,由美國計算機(jī)協(xié)會于1966年設(shè)立。
阿塔那索夫名氣不大,享年較長。世界上第一臺計算機(jī)是阿塔那索夫領(lǐng)導(dǎo)發(fā)明的ABC計算機(jī),并非我們很多書上說的ENIAC。
馮·諾依曼長得帥,聰明,研究領(lǐng)域廣,故事很多。今天我們使用的計算機(jī)都被打上了一個的深深的烙印,這個烙印就叫馮·諾依曼體系結(jié)構(gòu)。
關(guān)于計算機(jī)之父有很多說法,版本不一,這三個人都可以稱為計算機(jī)之父。曾有人奉馮·諾依曼為計算機(jī)之父,馮·諾依曼說不敢當(dāng),殊榮當(dāng)歸圖靈。
早年全世界的計算機(jī)中心在美國普林斯頓大學(xué),群星閃耀,璀璨奪目。馮·諾依曼曾在此工作,圖靈曾在此學(xué)習(xí),他倆在普林斯頓的花園里聊過天。馮·諾依曼想讓圖靈給他當(dāng)助手,被拒絕了。
二、最初的Unix和C語言
早期計算機(jī)個頭大,電子元器件多,開動一次電費都不少,使用起來也很不方便。別的不說,一次只能干一件事就讓人受不了。先煮粥,半小時之后粥煮好了再炒菜?;ɡ隙噱X雇的廚師,明明煮粥的時候可以炒菜好不好?一次做一件事,就叫單任務(wù),比較笨。
受不了就要想辦法,就有人提出了操作系統(tǒng)的想法。操作系統(tǒng)就是想讓計算機(jī)用起來更方便,能發(fā)揮更大的作用。
1965年,MIT、貝爾實驗室和美國通用電氣公司合作準(zhǔn)備搞個超級操作系統(tǒng),取了個霸氣的名字:Multics (Multiplexed Information and Computing System),多路復(fù)用信息和計算機(jī)系統(tǒng)。能讓多個人可以同時干很多事,也叫多用戶多任務(wù)操作系統(tǒng)。
Multics名字挺好,事沒干成,目標(biāo)過于龐大,結(jié)果壯志未酬。
1969年,Multics項目進(jìn)展緩慢,被迫停止,參與項目的兩個人Ken Thompson和Dennis Ritchie也閑了下來。他們都是貝爾實驗室的人。沒活干了,就打游戲。他們倆找了一臺破電腦準(zhǔn)備玩以前開發(fā)的一個游戲。
把游戲移植到一臺閑置機(jī)器(PDP-7)的過程中,實現(xiàn)了一個簡單的操作系統(tǒng)。到了 1970年,這個簡單的系統(tǒng)已經(jīng)可以使用,但只能同時兩個人使用。有人調(diào)侃他們,說你們這個破玩意離Multics差遠(yuǎn)了,就叫Unics(UNiplexed Information and Computing Service)吧。Unics是Multics的反義,與其說調(diào)侃他倆,不如說在調(diào)侃Multics。Ken Thompson稍微把名字修改了一下,Unix。
自此,Unix紀(jì)元開始。1970年是為Unix元年,今年已經(jīng)是Unix45年。Unix時間戳從1970年1月1日開始計算和Unix誕生的時間有莫大關(guān)系。
早年的操作系統(tǒng)最早是用匯編語言寫的,匯編語言低級落后,寫起來很痛苦。開發(fā)Unix過程中,Thompson發(fā)明了B語言,Ritchie在B語言基礎(chǔ)做了改進(jìn),稱之為C語言。
C語言發(fā)明后,Ritchie和貝爾實驗室的同事Brian W. Kernighan合著一本C語言的書,后來被稱為K&R。Kernighan名氣沒Ritchie大,但并非凡人,Unix命令A(yù)wk中的K就是Kernighan。
接下來Thompson和Ritchie用C語言重新編寫了Unix系統(tǒng)。結(jié)果相當(dāng)滿意,Unix可以見人了。1974年,Dennis M. Ritchie和Ken Thompson發(fā)表了第一篇關(guān)于UNIX的論文《The UNIX Time Sharing System》,從此Unix廣為人知。
這幾年世界計算機(jī)的中心到了貝爾實驗室,Thompson、Ritchie、Kernighan還有好多。Thompson和Ritchie后來都獲得了圖靈獎。
有心栽花花不活,無心插柳柳成蔭。Multics目標(biāo)宏偉,沒干成,Unix和C語言剛開始并沒想那么多,而且還是業(yè)余時間的作品,終成偉業(yè)!
Unix和C語言是計算機(jī)領(lǐng)域的常青樹,歷久彌新。從發(fā)明至今一直保持著旺盛的生命力,從發(fā)明至今都基本保持原貌,足見偉大!
三、混亂的Unix發(fā)展過程
Unix一經(jīng)出現(xiàn),引起了眾人的關(guān)注,很多人找Thompson和Ritchie要Unix的源代碼。那是個開放的時代,那是個相互學(xué)習(xí)研究的時代,把程序的源碼分享給別人是很平常的事。一份份的Unix源碼被流傳到各個實驗室、學(xué)校、公司。
加州大學(xué)伯克利分校有一幫熱衷于Unix的人,他們拿到源碼后不斷研究,不斷改進(jìn),大大推進(jìn)了Unix的發(fā)展。
這個階段Unix發(fā)展有兩條主線,一條在貝爾實驗室內(nèi)部,另一條就在伯克利分校。伯克利分校的成果很輝煌,著名的TCP/IP協(xié)議在Unix上的實現(xiàn)就是他們搞出來的。后來把他們搞的這套Unix稱為BSD(Berkeley Software Distribution)。
伯克利分校一時風(fēng)光無兩,最杰出的一位是Bill Joy。Bill Joy,Vi、Csh等等一系列軟件的作者,Sun公司的創(chuàng)始人。沒有Sun公司,就沒有今天的Java語言。
Unix剛誕生的時候,貝爾實驗室受反壟斷法所限,不能從事計算機(jī)業(yè)務(wù)。其實也并沒想到Unix發(fā)展勢頭如此之好。
等到1983年,貝爾實驗室的母公司AT&T已經(jīng)被強(qiáng)制拆分為幾個小公司,不再受反壟斷法的限制。這時,AT&T發(fā)布了Unix最新版System V,宣布從此Unix只能商業(yè)使用,不再開放源代碼。AT&T想用Unix賺大錢。
BSD那邊受到了很大影響,他們不想急著賺錢,他們想開放源碼。沒辦法,伯克利分校決心把BSD當(dāng)中受到影響的源碼重新寫過。從伯克利分校出來的幾位同學(xué)成立了一家公司,專門開發(fā)BSD項目。直到有一天,他們宣布BSD當(dāng)中再沒有最初來自貝爾實驗室的源碼。AT&T不買賬,告你,起訴,打官司。
這是一場漫長的官司,官司尚未打完,Unix版權(quán)就被倒賣了好幾次。買版權(quán)的好幾家公司繼續(xù)和BSD打官司,幾家公司相互也打官司。
等到硝煙散盡,BSD終究推出了完全屬于自己的Unix,因為版權(quán)的問題,不能再叫Unix,只能叫類Unix系統(tǒng)。
BSD的類Unix系統(tǒng)是FreeBSD、MacOS的前身。今天使用的蘋果電腦,iPhone手機(jī)上的操作系統(tǒng)都是從BSD這一支上發(fā)展而來。
漫長的官司耗盡了人們對BSD的熱情,也讓BSD錯過了最好的發(fā)展機(jī)會。后來的FreeBSD、NetBSD、OpenBSD都是從BSD分化而來,免費,開源,優(yōu)秀,但再沒挽回曾經(jīng)的榮光,因為已經(jīng)有了Linux。?
四、斯托曼博士的GNU計劃
AT&T想靠Unix賺錢的時候,不止是AT&T,很多商業(yè)公司都希望通過軟件賺錢。不再免費,不再開放源代碼,不再相互通過源代碼學(xué)習(xí)研究。
曾經(jīng)是多么好的時代,怎么現(xiàn)在就變得只認(rèn)錢了呢?這一切讓一個人很不滿意。他曾經(jīng)看到一個系統(tǒng)有問題,想要一份源碼拿來幫修改一下,別人冷笑以對。
世風(fēng)日下,他要向這個令人沮喪的時代挑戰(zhàn),他要還一個開源、免費的系統(tǒng)與人世間。請記住這個人的名字,理查德·斯托曼(Richard Matthew Stallman)博士。
斯托曼是老牌黑客,Emacs的作者。Emacs和前面提到的Vi是計算機(jī)領(lǐng)域中兩大強(qiáng)悍的編輯工具,Emacs和Vi哪個更強(qiáng)是最容易引起爭議的話題之一。為了少吵架,千萬別和寶馬車主說奔馳好。
斯托曼博士長頭發(fā),大胡子,不修邊幅,一直單身。他一心投入自由軟件運動,他創(chuàng)建了自由軟件基金會(FSF)。他雄心勃勃地提出了一項偉大的計劃,GNU(GNU's not Unix)計劃。Not Unix,不是Unix,是自由的、免費的、開源的、像Unix一樣好用的系統(tǒng)。
GNU起初進(jìn)展很順利,GLibc、GCC、GDB,這一系列的操作系統(tǒng)必備軟件都有條不紊地在進(jìn)展。所有的“G”來自Gnu的首字母。為什么叫“G”,斯托曼博士說當(dāng)時他覺得好玩,而且他小時候聽過一首歌,很喜歡,歌名是《The Gnu》。
完全搞個操作系統(tǒng)看來也并非易事,GNU完成了一大堆軟件的時候才意識到遇到了大麻煩。GNU系統(tǒng)的內(nèi)核項目Hurd遲遲不能令人滿意。內(nèi)核之于操作系統(tǒng),就像發(fā)動機(jī)之于汽車,必不可缺。
五、Linux出世記
1991年,Linus Torvalds尚是芬蘭赫爾辛基大學(xué)的一名學(xué)生,他在學(xué)校學(xué)操作系統(tǒng)的課程,他也想搞個操作系統(tǒng)玩玩。他當(dāng)時已經(jīng)在使用Gnu項目的Bash、GCC等軟件。受GNU的影響,把他自己開發(fā)的一個簡陋的操作系統(tǒng)內(nèi)核放到了互聯(lián)網(wǎng)上。
這個內(nèi)核系統(tǒng)就是Linux,Linus's Unix,Linus的Unix。名字并非Linux所取,他一貫的風(fēng)格是取個調(diào)侃的名字,但當(dāng)時管理員說Linux挺好,名字就這么定了。
Linux放到網(wǎng)上后引起了很多人的興趣,他們陸續(xù)通過互聯(lián)網(wǎng)加入到Linux開發(fā)過程中。1993年,大約有100多名程序員參與了Linux內(nèi)核代碼。這時已經(jīng)是互聯(lián)網(wǎng)的時代,他們不用相識,不用謀面,通過網(wǎng)絡(luò)討論,通過網(wǎng)絡(luò)協(xié)作,推進(jìn)著Linux。
1994年3月,Linux1.0發(fā)布,Linux已經(jīng)成為一個基本可用的內(nèi)核。從此Linux就一直沒有踩過剎車,一步步從幼苗長成參天大樹。
Linus小時候被企鵝攻擊過,他給Linux定Logo的時候選中了企鵝,真不知道這是什么邏輯。長得像企鵝的除了QQ,還有Linux。
Linux開創(chuàng)了一種前所未有的軟件開發(fā)模式。多人協(xié)作,代碼隨時提交,有問題及時修改,所有參與人員并非精英,而是一群狂熱的支持者。前前后后無數(shù)人參與了Linux項目的開發(fā),組織不太嚴(yán)謹(jǐn),有很多的爭吵和討論。Linus經(jīng)常寫代碼,偶爾扮演仲裁的角色,而非傳統(tǒng)意義上的領(lǐng)導(dǎo)。
后來開源運動的吹鼓手Eric Raymond寫了一篇文章《大教堂與集市》來分析Linux的開發(fā)模式。大教堂要設(shè)計好圖紙,動用優(yōu)秀的工匠,有序的工程計劃才能修筑,鬧哄哄無序如菜市場的一撥人能不能修一座大教堂?答案是可以的,因為他們建成了。
Linus后來坦言,他開發(fā)Linux時不了解還有FreeBSD等項目,如果知道了可能他就不會動手寫Linux了。那時各種BSD系統(tǒng)正在官司的陰影籠罩下,某種程度了也促進(jìn)了Linux的發(fā)展。
他們一開始也沒什么圖紙,一邊修建,一邊請人參觀,出了問題隨時修復(fù),有的地方干脆推倒重來。他們沒有嚴(yán)密的組織,只有大體的分工。隨時有人在使用教堂,給他們提出各種意見。他們建的教堂已經(jīng)足夠好,他們建的教堂一直沒有竣工,會一直修建下去。
Eric Raymond這個人不得不提,早年和斯托曼博士一起共事,還幫斯托曼博士修改過Emacs的代碼。他比寫程序更擅長的是演講和寫文章。《大教堂與集市》是開源文化的扛鼎之作。斯托曼博士是開源運動的精神領(lǐng)袖,Raymond是開源運動的布道師和理論家。
六、Linux各種發(fā)行版
一邊GNU項目為內(nèi)核苦苦掙扎,一邊Linux內(nèi)核項目橫空出世,這不天作之合么?不錯,手快的人來不及同情斯托曼博士的痛苦,把GNU一大堆項目和Linux攢在一起搞了個新系統(tǒng),GNU/Linux。
好了,終于大家可以拿去用了,可以用一個完全免費、源碼開放的系統(tǒng)了。
今天很多人把使用的系統(tǒng)叫Linux,很不公平,是對GNU工作的漠視。正確的叫法是GNU/Linux。
有了GNU/Linux還不是一切,只能是一個基礎(chǔ)的操作系統(tǒng),要想用得更好還缺很多軟件。就像有了Windows系統(tǒng),沒有Word,沒有Excel,沒有瀏覽器,沒有游戲,可干的事并不多。
所幸的是GNU/Linux誕生的年代,已經(jīng)有了很多優(yōu)秀的開源項目,他們和GNU無關(guān),有的是個人開發(fā),有的是組織開發(fā),都遵循免費開源的理念。這些開源項目有Apache、Perl、Python、Vim、TeX等等。
攢系統(tǒng)的人干脆一股腦攢了起來,就是所謂的GNU/Linux的發(fā)行版。最早攢GNU/Linux系統(tǒng)的公司是Redhat,后來陸續(xù)一大堆GNU/Linux的發(fā)行版,Slackware、Mandrake、Gentoo、Debian、Ubuntu等等。有的已經(jīng)死了,有的還活得挺好。
所謂GNU/Linux發(fā)行版,就是攢好的一套GNU/Linux。選用GNU項目中的基礎(chǔ)軟件,加上Linux內(nèi)核,再找一堆開源免費,版權(quán)協(xié)議許可的軟件,最后做個安裝程序,就齊活了。更好的發(fā)行版大體就是考慮的更周全些,軟件包的更新、安裝、卸載更方便些。
能不能自己動手?jǐn)€一個GNU/Linux的發(fā)行版?當(dāng)然可以,Linux From Scratch,網(wǎng)上的一個項目,教你一步一步從頭打造一個屬于自己的GNU/Linux發(fā)行版。
2002年,南非商人Mark Shuttleworth花了兩千萬美金,搭乘俄羅斯的宇宙飛船去了一趟太空。次年,他成立了Canonical公司,致力于開源文化的推廣,推出了GNU/Linux發(fā)行版Ubuntu。有錢人辦事就是不一樣,Ubuntu做得太好了,GNU/Linux用戶紛紛投靠,Ubuntu基本一統(tǒng)GNU/Linux發(fā)行版的江湖。
五、GNU/Linux和開源文化的背后
GNU/Linux來了,雖然沒成為大多數(shù)人電腦里的系統(tǒng),但每個人都離不開它。諸多互聯(lián)網(wǎng)公司的服務(wù)器里都跑著GNU/Linux,名單不完全確認(rèn),Google、Facebook、淘寶、百度、騰訊、小說閱讀網(wǎng)等等。
大多人使用的安卓手機(jī)的系統(tǒng)也是基于Linux內(nèi)核。
GNU/Linux的繁榮有宏偉的規(guī)劃,有個人的努力,也有很多無形的力量在起著作用。
沒有Unix就沒有GNU/Linux,是Unix給予了偉大的啟示。
沒有C語言就有沒有GNU/Linux,C語言簡單,優(yōu)雅,介于高級語言和低級語言之間,開發(fā)系統(tǒng)軟件的首選編程語言。
沒有一系列Unix標(biāo)準(zhǔn)的制定就沒有GNU/Linux的繁榮。標(biāo)準(zhǔn)就是“車同軌、書同文、統(tǒng)一度量衡”,秦始皇可算最早的標(biāo)準(zhǔn)制訂者。遵循Posix標(biāo)準(zhǔn)為GNU/Linux發(fā)展鋪平了道路。
沒有互聯(lián)網(wǎng)就沒有GNU/Linux,GNU/Linux不是一個人在開發(fā),是全球無數(shù)人協(xié)作的結(jié)果。如果沒有互聯(lián)網(wǎng)實在不可想象。當(dāng)然,GNU/Linux也反哺了互聯(lián)網(wǎng),無數(shù)互聯(lián)網(wǎng)公司采用GNU/Linux搭建服務(wù)器,GNU/Linux也促進(jìn)了互聯(lián)網(wǎng)的繁榮。
沒有斯托曼博士的努力,就沒有GNU/Linux。他的功勞不僅是創(chuàng)建GNU組織,也不僅是編寫Emacs、GCC、GDB,他的精神感召著無數(shù)人為開源運動做貢獻(xiàn)。
當(dāng)然還有Raymond的振臂高呼,搖旗吶喊。
還有GNU/Linux誕生之前就開發(fā)開源項目的人和組織。Larry Wall因為懶,整天被報表搞得焦頭爛額,發(fā)布了Perl語言;高德納教授因為對排版工人不滿意,十年時間停止重要工作,發(fā)明了偉大的排版軟件TeX;Guido為了打發(fā)圣誕節(jié)的無聊,編寫了新的腳本語言Python……
GNU/Linux發(fā)布之后,在前輩們的感召下無數(shù)人接受了開源的思想和理念,接受了開源文化的洗禮,興起了開源文化運動。無數(shù)為開源項目做出貢獻(xiàn)的人和組織,他們發(fā)布了PHP、MySQL、Ruby、Node.js、X.Org、Gnome、KDE……他們豐富了GNU/Linux,他們進(jìn)一步推動了開源文化運動,他們繼續(xù)感召著別人。
KDE(Kool Desktop Environment)的初衷是想開發(fā)一套易用的桌面系統(tǒng)。Windows系統(tǒng)就是一種桌面,使用方便,不是像程序員整天對著黑乎乎的屏幕工作。桌面系統(tǒng)要有瀏覽器,他們就分了一個小組KHTML來開發(fā)瀏覽器。全世界能開發(fā)瀏覽器核心的也沒幾家,KDE做到了。后來蘋果公司和微軟鬧別扭,想自己開發(fā)瀏覽器,就是在KHMTL的基礎(chǔ)之上開發(fā)了自己的瀏覽器Safari。KHTML的瀏覽器核心模塊叫Webkit。Google推出安卓手機(jī)時瀏覽器也是基于Webkit開發(fā)的。
今天的iPhone手機(jī)和安卓手機(jī)的瀏覽器都是Webkit內(nèi)核。
各種版權(quán)許可協(xié)議的制訂也為GNU/Linux的發(fā)展鋪平了道路,其中就有GNU的GPL、LGPL,還有Apache License、BSD協(xié)議。不可能每個人都有一套自己開源協(xié)議項目的版權(quán)協(xié)議,已經(jīng)制訂好的版權(quán)許可協(xié)議使得軟件更好地傳播。
其實開源并非自由,有人說GPL是用自由抹殺自由。GPL許可要求任何含有GPL許可的軟件發(fā)布時必須開放源碼。BSD和Apache License相對比較寬松,算是準(zhǔn)自由軟件。
版本管理軟件對GNU/Linux的發(fā)展和開源文化運動也功不可沒。Linux內(nèi)核開發(fā)起初使用的是商用版本管理軟件,某天Linus Torvalds先生不開心了,就自己動手搞了一個。他好取自嘲調(diào)侃的名字,命名為Git,意為沒什么用的東西。
Git可不是沒什么用,太好用了,Linux內(nèi)核源碼從此都用Git管理。Git免費、開源,Git成就了一家偉大的網(wǎng)站github.com,偉大的源碼項目托管網(wǎng)站。很多開源項目紛紛把源碼托管到了Github上。
GNU/Linux不朽,開源運動不朽!
六、后記
從最初安裝Redhat Linux起,陸續(xù)折騰過多種GNU/Linux發(fā)行版。后來萌生念頭,想寫一本GNU/Linux和開源文化的書,種種原因,一直未能如愿。
作為GNU/Linux和開源運動的追隨者,書不知何時能寫完,這篇文章做個紀(jì)念。
聯(lián)系客服