Chinaunix首页 | 论坛 | 博客
  • 博客访问: 590325
  • 博文数量: 88
  • 博客积分: 4769
  • 博客等级: 中校
  • 技术积分: 989
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-24 02:31
文章分类

全部博文(88)

文章存档

2012年(4)

2011年(35)

2010年(49)

分类:

2010-08-16 15:56:45

UNIX最初是由貝爾電話實驗室(Bell Telephone Laboratories)的計算機科學研
究中心(Computing Sciences Research Center)開發的。第一版誕生于1970年--也
就是在貝爾實驗室(Bell Labs)推出Multics項目不久。在UNIX廣受歡迎的功能中,有
許多便是來自Multics操作系統。其中最著名的有:將設備視為文件,以及特意不將命
令解釋器(command interpreter)或Shell整合到操作系統中。更完整的歷史信息可在
找到。

由于UNIX是在面向研究的環境下開發的,因而沒有必須生產或者銷售成本的盈利壓力。
這使其具有下列優勢:

×    系統由用戶自行開發。他們使用這套系統來解決每天所遇到的計算問題。

×    研究人員可以不受拘束地進行試驗,必要時也可任意變換程序。由于用戶群不大,
     若程序有必要整個重寫,多半也不會太難。由于用戶即為開發人員,發現問題時便
     能隨即修正,有地方需要加強時,也可以馬上就做。
     
     UNIX已歷經數個版本,各個版本以字母V加上數字作為簡稱,如V6、V7,等等。
     (正式名稱則是遵循發行的使用手冊的修訂次數編號來命名,例如Frist Edition、
     Second Edition,等等。這兩種名稱的對應其實很直接:V6=Sixth Edition、V7=
     Seventh Edition。和大多數有經驗的UNIX程序員一樣,這兩種命名方式我們都會
     用到)。影響最深遠的UNIX系統是1979年發行的第7版(Seventh Edition),但
     是在最初的幾年,它僅用于學術教育機構領域。值得一提的是:第7版的系統同
     時提出了 awk 與 Bourne Shell,這兩者是POSIX Shell的基礎,同時,第一本討
     論UNIX的書也在此誕生。

×    貝爾實驗室的研究人員都是計算機科學家。他們所設計的系統不單單是自己使用,
     還要分享給同事--這些人一樣也是計算機科學家。因此,衍生出“務實(no
     nonsense)”的設計模式:程序會執行你所賦予的任務,但不會跟你說話,也不會問
     一堆“你確定嗎?”之類的問題。

×    除了精益求精,在設計與問題解決上,他們也不斷地追求“優雅“(elegance)。關
     于“優雅”有一個切貼的定義:簡單就是力量(power cloaked in simplicity)。
     貝爾實驗室自由的環境,所早就的不僅是一個可用的系統,也是一個優雅的系統。

當然,自由同樣也帶來了一些缺點。當UNIX流傳至開發環境以外的地方,這些問題也
逐一浮現:

×    工具程序之間存在許多不一致的地方。例如,同樣的選項字母,在不同的程序之間有
     完全不一樣的定義;或是相同的工作卻需要指定不同的選項字母。此外,正則表達
     式的語法在不同程序之間用法類似,卻又不完全一樣,易產生混淆--這種情況
     其實可以避免。(直至正則表達式的重要性受到認可,其模式匹配機制才得以收錄
     在標准程序庫中。)

×    諸多工具程序具有缺陷,例如輸入行(input lines)的長度,或是可打開的文件個
     數,等等。(現行的系統多半已經修正這些缺陷。)

×    有時程序并未經過徹底測試,這使得它們在執行的時候一不小心就會遭到破壞,這
     可能會導致核心轉儲(core dumps),令用戶不知所措。幸好,現行的UNIX
     系統極少會面臨這樣的問題。

×    系統的文檔盡管大致上內容完備,但通常極為簡單。使得用戶在學習時很難找到所
     需要的信息。

最初的UNIX機器(Digital Equipment Corporation PDP-11s)不能運行大型程序。要
完成復雜的工作,得先將它分割成更小的工作,再用程序來完成這些更小的工作。某些
常見的工作(從數據行中提取某些字段、替換文本,等等)也常見與許多大型項目,最
後就成了標准工具。人們認為這種自然而然的結果是件好事:由于缺乏大型的解決空間,
因而產生了更小、更簡單、更專用的程序。

許多人在UNIX的使用上采用半獨立的工作方式,重復套用彼此間的程序。由于版本之
間的差异,而且不需要標准化,導致許多日常工具程序的發展日漸分歧。舉例來說,grep
在某系統裏使用-i來表示“查找時乎略大小寫”,但在另一個系統中,卻使用-y來代
表同樣的事!無獨有偶,這種怪事也發生在許多工具程序上。還有,一些常用的小程序
可能會取相同的名字,針對某個UNIX版本所編寫的Shell程序,不經修改可能無法在
另一個版本上執行。

最後,對日常標准工具組與選項的需求終于明朗化,POSIX標准即為最後的結果。現行
標准IEEE Std. 1003.1-2004包含了C的庫層級的主題,還有Shell語言與系統工具機槍
選項。

好消息是,在這些標准上所做的努力有了回報。現在的商用UNIX系統,以及可免費使
用的同類型產品,例如GNU/Linux 與BSD衍生系統,都兼容POSIX。這樣一來,學習
UNIX變得更容易,編寫可移植的Shell腳本也成為可能。

值得注意的是:POSIX并非UNIX標准化的唯一成果,POSIX之外仍有其他標准。例
如,歐洲計算機制造商協會自行發起了一套名為X/Open的標准。其中最受歡迎的是1988
年首度出現的XPG4(X/Open Portability Guide, Fourth Edition).另外還有XPG5,其
更廣為人知的名稱為UNIX98標准,或Single UNIX Specification.XPG5很大程度上
把POSIX納入為一個子集,同樣深具影響力。

XPG標准在措詞上可能不後嚴謹,但其內容卻較為廣泛。其目標是將現存于UNIX系統
上實際用到的各種功能正式生成文檔。(POSIX的目的在于建立一套正式的標准,讓從
頭開始的實踐者有指導方針可以套用--即便是在非UNIX的平台上。因此,許多
UNIX系統上常見的功能,一開始就排除在POSIX標准之外)。2001 POSIX標准由于納
入了X/Open System Interface Extension(XSI)而有了雙重身份,也叫做XPG6,這
是它首度正式擴張POSIX版圖。此文檔的特色在于:讓系統不只兼容POSIX,也兼容
于XSI。所以,當你在編寫工具或應用程序時,必須參考的正式文件只有一份(就叫做
Single UNIX Standard)。


阅读(1471) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~