歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> UNIX痛恨者手冊

UNIX痛恨者手冊

日期:2017/2/27 14:16:21   编辑:更多Linux

一本很有趣的書, 是那些用慣UNIX的人對UNIX的各種指責,诋毀,謾罵和嘲笑. 是由愛而生的恨. 即使當成一本高級笑話書,也是很有價值的. UNIX痛恨者手冊 By Simson Garfinkel, Daniel Weise, Steven Strassmann 第一章 UNIX 世界上第一個電腦病毒 “伯克利的兩項最著名的產品是UNIX和LSD (一種毒品),我想這不是巧合” 病毒依賴於微小的個體和強大的適應性得以生存。它們並不復雜:它們沒有為呼吸,新陳代謝,肌體活動等功能提供什麼,只有足夠的DNA或RNA以供繁衍。比如,肺炎病毒比起它們入侵的細胞要小得多,但它們在每個肺炎流行季節都能夠產生新的變種,造成無數人死亡。 一個好病毒的特點是: * 個頭小 病毒做的事情不多,所以不需要很大。有人認為病毒不是生物,只是一些有破壞性的酸和蛋白質。 * 可移植性 病毒經常變異,以便以不同的方式攻擊不同的細胞。據說AIDS就是由猴子身上的病毒變異而成的。 * 耗盡寄主的資源 * 快速變異 UNIX具有以上所有優點。在它剛誕生時,很小,功能不多,缺乏真正操作系統所需要的功能(如文件映射,告訴IO,健壯的文件系統,設備鎖,合理的進程間通訊),它的移植性很好。UNIX耗盡主機的資源,沒有系統管理員的時時呵護,UNIX會不斷恐慌,core dump,掛起。UNIX不斷變異:同一個補丁在一個版本上工作,在另一個版本上就不行。 UNIX是有用戶界面的計算機病毒。 標准化那些不一致的 ================ “標准的偉大之處在於它可以有很多” --- Grace Murray Hopper 自從UNIX 80年代開始流行以來,UNIX廠商一直在努力進行UNIX標准化工作。SUN, IBM,HP和DEC在這個他們自己制造的難題上傾注了數百萬美元。 為什麼UNIX廠商不喜歡UNIX標准化? 許多用戶受夠了復雜繁多的UNIX,最終只好使用Windows,因為他們的這個UNIX無法支持那個UNIX上的應用程序。 如果UNIX標准化了,誰還會買SUN的機器呢? 歡迎新用戶 如同用一把上了六顆子彈的左輪槍玩俄羅斯輪盤賭 Ken Thompson 自己設計過一輛汽車。和其他車不同,它沒有速度計、汽油計,也沒有那些愚蠢的指示燈討司機的厭。如果司機犯了什麼錯誤,儀表盤上就會出現一個大大的“?”。“有經驗的司機,”Thompson說,“應該知道哪兒搞錯了。” 計算機系統的新手需要一個友好的系統。至少,一個得體的系統會這樣招待自己的客人: 與功能有邏輯關系的命令名 對危險命令的小心處理 一致的命令行為和命令行參數解析 易得和易讀的在線文檔 當命令失敗時,給出可理解和有用的錯誤反饋 在建造UNIX的過程中,從沒邀請過住戶。來訪的都是些戴著安全帽的建築工人,被安插在這個破木板房子的各個角落。不幸的是,不僅沒有人性因素(human factors)工程師的參與,而且住戶的需要就從來沒有被考慮過。所以抽水馬桶、中央供暖、窗戶等這些方便設施在後期就很難再添加了。但是建築師們仍然為UNIX的設計而驕傲,似乎他們並不介意在一個沒有煙火探測器的屋子裡睡覺。 在其發展的大部分歷史中,UNIX只是大學和工業研究人員的研究工具。隨著大批便宜工作站的出現,UNIX作為平台軟件進入了新時代。這一變化大約發生在1990年,其標志就是工作站廠商把C編譯器從UNIX發布中剔除出去,以降低成本滿足非開發用戶的需求。可見,只是最近幾年中UNIX廠商才開始考慮非程序員用戶的需要,開始為他們提供shell以外的圖形界面。 含糊的命令名 UNIX新手總是對UNIX對命令的命名表示驚訝。在DOS和Mac上受的教育不足以讓他們體會到cp、rm、ls這類兩字母命令的簡潔和優美。


像我們這樣用過70年代早期的IO設備的人都能理解,ASR-33 Teletype這類設備的速度、可靠性,以及它的鍵盤是萬惡之源。和今天這種基於反饋原理、只需要關閉一個微開關的鍵盤不同,你必須用足力氣揿下Teletype的鍵至少半英寸,以發動一個類似自行車上用的小型發電機,在上面操作要冒指骨骨折的危險。 如果當時Dennis和Ken用的是Selectric而不是Teletype,可能今天我們敲的將不是”cp”和”rm”而是”copy”和”remove”了。(Ken Thompson曾被問道如果他能重新設計UNIX他將做什麼修改,他回答說:“我會在creat命令後加上個e。”),科技在拓寬我們的選擇的同時,也能限制我們的選擇,此一例也。 20多年過去了,還有什麼理由延續這一傳統呢?理由就是“歷史的無可替代的力量”,歷史就是那些存在的代碼和教科書。如果一個廠商用remove替代了rm,那麼所有UNIX教科書就不適用於這一系統了,每個使用rm的shell腳本都需要被修改。而且這也不合POSIX標准。 一個世紀前,打字高手由於擊鍵過快,經常把打字鍵柄攪在一起,工程師設計了QWERTY鍵盤,於是問題得到了解決,因為沒人能在這樣的鍵盤上打得快。計算機的鍵盤不再有機械鍵柄,但QWERTY的鍵盤布局仍然在使用。同理,在未來的一個世紀中,我們仍然會繼續使用rm。 事故會發生 用戶十分關心自己的數據和文件。他們使用計算機來產生、分析和存儲重要信息。他們相信計算機能夠保護他們的重要財產。如果沒有了這種信任,他們和計算機的關系就會蒙上陰影。UNIX辜負了我們的信任,它拒絕對使用危險命令的用戶提供保護。比如rm就是以刪除文件為目的的危險命令。 所有UNIX新手都有不小心無可挽回地刪除重要文件的經歷,即使是專家和系統管理員也遇到過。因此而每年損失的時間、精力可能價值幾百萬美元。這是個值得解決的問題;我們不理解為何UNIX一直拒絕解決這一問題。難道結果還不夠悲慘麼? UNIX比其他操作系統更需要提供恢復刪除功能,原因是: UNIX文件系統沒有版本功能 自動的版本維護能保留文件的歷史版本,防止新版本沖掉老版本。 UNIX程序員在錯誤處理方面臭名昭著 許多程序不檢查是否所有內容都被寫入了磁盤,或被寫入的文件是否存在。有些程序總是刪除輸入文件。 UNIX shell擴展“*”,而不是其子命令 於是rm這樣的命令就無法檢查“*”這些危險的參數。即使是DOS也對”del *.*”有些提示。但在UNIX下,rm * 和 rm file1 file2…是沒有區別的。 刪除是永久的 UNIX沒有undelete命令。許多其他更安全的系統則只是標記被刪除文件所用的塊為“可被使用”,然後把它移到一個特殊目錄下。如果磁盤滿了,這些文件塊才會被重新使用。這一技術不是什麼火箭科學,Macintosh在1984年就提出了“回收站”的想法,而Tenex早在1974年就采用了這一技術。連DOS也提供了簡單的undelete功能,雖然並不總有效。 這四個問題互相合作,制造了無數無法恢復的重要文件。解決的方法早就存在,但UNIX“標准”版中卻從來沒有提供。 歡迎來到未來世界。 “rm”就是終結 許多實際的恐怖故事說明了以上的這些原則。以下是alt.folklore.computers新聞組上流傳的一系列故事中的一個: Date: Wed, 10 Jan 90 From: [email protected] (Dave Jones) Subject: rm * Newsgroups: alt.folklore.computers 是否有人曾想執行以下命令: % rm *.o 結果卻打成了: % rm *>o 現在你得到了一個空文件o,以及大量的空間來存放它! 事實上,你可能連o也得不到,因為shell的文檔並沒有說o是在*被擴展前還是被擴展後被建立的。 (To Be Continued)



Date: Wed, 10 Jan 90 From: [email protected] (Dave Jones) Subject: rm * Newsgroups: alt.folklore.computers 是否有人曾想執行以下命令: % rm *.o 結果卻打成了: % rm *>o 現在你得到了一個空文件o,以及大量的空間來存放它! 事實上,你可能連o也得不到,因為shell的文檔並沒有說o是在*被擴展前還是被擴展後被建立的。 (To Be Continued)



Copyright © Linux教程網 All Rights Reserved