Cygwin前傳:從割據到互補

本文知乎鏈接:Cygwin前傳:從割據到互補

想來講講發展史,對一個軟體項目基因認識更深刻。

割據時代

從UNIX時代說起吧。1969年,AT&T公司旗下的貝爾實驗室的天才們Ken Thompson、Dennis Ritchie和Douglas McIlroy開發了UNIX操作系統。AT&T公司一時不知道怎麼用這玩意兒賺錢,初期完全是純出於興趣做開發,並在研究機構和大學中流傳,但看到其他公司能利用其賺取利潤之後,AT&T公司嗅到到商機,在70年代後開始採用法律手段保護它,禁止將UNIX源碼授權給大學等學術機構使用。但此時已有多個UNIX的變種版本並被廠商採用,最流行的就是加州伯克利分校的BSD(Berkeley Software Distribution,目前在此基礎上又有FreeBSD、OpenBSD、NetBSD等新的很多分支版本),於是就有了商業公司之間的版權訴訟,UNIX版權也在多個公司間易主,在此按下不表。各種商業併購之後,UNIX商標權現歸國際開放標準組織(The Open Group)所擁有

Ken Thompson(左)和Dennis Ritchie(右) 圖片來源於網路

各UNIX版本繼續各自發展,呈現的差異越來越大,以至於相同的源代碼在這版UNIX變種上正常編譯運行、卻在那版UNIX變種上出現錯誤甚至無法編譯成功,即呈現出了「多種UNIX系統」割據的局面。

有個叫IEEE的組織實在看不下去了,大家各立山頭是要割據的節奏,不利於UNIX軟體系統的發展,於是在1985年牽頭設立一個標準,叫「可移植操作系統介面」(Portable Operating System Interface,POSIX,後面的X是為了表明其對UNIX API的傳承)。其目的簡要說是這樣:無論怎麼折騰,至少保證軟體系統介面規範的一致性,從而保障程序代碼的兼容性。這件事情大家自然喜聞樂見,軟體廠商也少了很多頭疼的事。各UNIX系統廠商即使想割據,但為了兼容性以佔有更大市場,也紛紛願意加入對POSIX的支持。

UNIX各版本發展和演化(圖片來源:http://zh.wikipedia.org/zh-cn/Unix)

開源英雄

一個叫Richard Matthew Stallman的大鬍子美國大叔對UNIX系統封閉源碼很不滿意,於1984年發起了GNU計劃(GNU is Not Unix,首字母遞歸縮寫),計劃開發一個完全兼容UNIX的自由軟體系統,為此專門成立了自由軟體基金會(Free Software Foundation,FSF)。

RMS大神 (圖片來源於網路)

FSF打算是搞成一個GNU/Hurd操作系統,其中Hurd是用來取代UNIX內核的新系統內核,GNU代表用戶軟體,大致是這樣一個意思,表述不嚴謹,勿怪。FSF開發出了很多極其優秀的軟體,名字和UNIX下的都相似甚至相同,從而保持軟體一致性、降低用戶學習成本,尤其是shell、Emacs文本編輯器、gcc編譯套件、各種開發庫等更讓很多程序員愛不釋手。但這個Hurd內核卻進展緩慢,直到GNU軟體完成計劃的90%以上,Hurd還是沒什麼起色。但Hurd到今天仍然在頑強地或者,2016年12月18日發布了v0.9版本。

RMS大神宣揚的「自由軟體」理念贏得了很多追隨者,被視作精神領袖,其本人也是FSF領導者。

天才小子

1991年,一個叫Linus Torvalds的芬蘭小夥子在鼓搗他老師的Minix系統(UNIX的變種版本,一般僅用在計算機教學中)之餘,對其禁止用於商業目的很不滿,決定要自己寫成一個操作系統並允許在i386的機器上運行。這位天才hacker把自己的成果公布在互聯網上,並逐漸吸引了世界範圍內眾多開發者的加入,使之不斷完善,大傢伙一商量,就按照Linus Torvalds的名字叫它「Linux」吧。

Linus Torvalds (圖片來源於網路)

Linux本身只是個操作系統的內核,支持POSIX標準,是一個UNIX-like系統內核,但完完全全是從零開始重寫的代碼,最重要的,它還是完全開源的自由軟體。

這邊FSF一看自己的Hurd還不知道什麼時候能用呢,那邊Linus Torvalds覺著GNU軟體不賴,重新造輪子也累,於是眾多廠商、機構、社區紛紛把GNU軟體和Linux內核(以及其他的一些軟體包)整合在一起組成一個完整的操作系統發行版,FSF表示沒什麼意見,只是堅持要求全稱應該叫「GNU/Linux」,光叫Linux就把GNU的成果完全忽略掉了。

GNU/Linux的誕生和發展,是一件足以影響計算機行業發展史的大事。

帝國之踵

微軟帝國靠著Windows發家致富,操作系統市場形成UNIX、GNU/Linux、Windows的主流格局,微軟帝國自己聲稱Windows「部分支持POSIX」。

GNU那一票優秀的軟體,尤其是開發工具,大家(主要是程序員)都期盼在Windows系統上也能用上,因為Windows平台少有與此匹敵的優秀工具(誰用誰知道)。UNIX和Linux像是近親,但Windows就完全不同了,GNU那一票軟體的源碼在Windows下是無法直接編譯的,二進位可執行文件複製到Windows下Windows更表示不認識。但是微軟帝國就是這麼牛氣,什麼標準不標準,俺們微軟的標準才是標準。

實際上微軟也曾在Windows上造一個UNIX子系統出來,但由於種種原因沒什麼影響力。雖然Windows佔據幾乎100%桌面操作系統市場,深的普通用戶歡心,但Windows對POSIX API支持的匱乏,像是阿喀琉斯之踵。

優勢互補

事情有所轉機。1995年,一家叫做「Cygnus Solutions 」的公司正是打算努力做這件事——把符合POSIX標準的程序搬到Windows上運行,這個項目叫做「Cygwin」。RedHat公司(小紅帽)後來收購了Cygnus Solutions並繼續Cygwin的開發,2018年RedHat被IBM收購,此是後話。

自此看出,Cygwin的目標是在Windows中構建一個類似UNIX的軟體環境,以方便把符合POSIX標準的軟體移植到Windows下。當我們需要享受GNU那些個殺手級工具的便捷高效卻犯不著安裝一個GNU/Linux系統時,Cygwin是不錯的選擇。與此相似的項目有Interix、MKS Toolkit、DJGPP(DOS下)、Xming、UnxUtils、GNUWin32、GNUWin II、MinGW、NuTCracker、OpenNT等,但無疑Cygwin表現出色且廣為接受,並且有開源免費版本(言外之意是,還有商業許可證的收費版)。

所謂「寸有所長,尺有所短」,Windows圖形界面傻瓜式的操作同樣吸引著廣大用戶,其超高的桌面市場份額就是證明,而Cygwin把UNIX環境帶到Windows中來,讓一票命令行工具煥發生機。

圖形界面與命令行,實現優勢互補,相得益彰。

參考

unix_百度百科

zh.wikipedia.org/zh-cn/

zh.wikipedia.org/wiki/P

zh.wikipedia.org/zh-cn/

en.wikipedia.org/wiki/C


本文對你有幫助?請轉發分享,歡迎關注與留言交流

微信文章鏈接:

cygwin前傳:從割據到互補?

mp.weixin.qq.com圖標

? 本文為原創文章,如需轉載請私信知乎賬號或聯繫公眾號:偽碼人(We_Coder)


推薦閱讀:

TAG:計算機 | Linux | Cygwin |