歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> Unix和Windows文化的本質區別

Unix和Windows文化的本質區別

日期:2017/2/28 11:18:26   编辑:關於Unix


  看過很多關於Unix/Linux和Window之爭的文章。即使是我這麼偏愛Unix/Linux的人,都會覺得那些文章中的絕大多數太過偏激,要麼把Windows貶得一無是處,要麼把Windows美化得白璧無瑕。
  我的工作不是windows編程,我也很不喜歡Windows編程,可我的日常工作生活仍然離不開Windows。即使像我這樣的程序員,讓我在Linux/Unix下配置一台打印機,或者安裝一個聲卡,也是讓我頭疼的事情。Windows之所以如此流行,決不是偶然,有它內在的深刻原因。Unix/Linux的設計很優美,實現也很優秀,但是為什麼在某些領域(尤其是桌面系統)干不過Windows?Unix/Linux社區的人對自己的技術水平一向非常自負,為什麼十多年過去了還沒能取Windows而代之?這些問題我回答不了,但我的直覺和唯物辯證法都告訴我,任何一個事物都有對立統一的兩個方面,Windows也有它的優點,Unix/Linux也有它不盡人意的地方。
  最近看《Joel on Software》專欄,發現這個專欄作者發布在2003年年底的一篇文,把這個問題講得一清二楚,態度公允,分析深入,值得一讀,對系統設計來說也很有指導意義。為了給自己加深印象,節選其中一部分翻譯,做筆記。
  Unix和Windows從功能上看越來越相似,剩下的不同僅僅是文化差異。舉個例子:我們都要吃東西。大洋彼岸的人們用筷子,吃生魚片就米飯;但我們用手拿著面包,就著牛肉吃。文化差異並不意味著美國人消化不了生魚片,或者日本人消化不了麥當勞的漢堡;實際上美國很多人吃生魚片,日本也有很多人吃漢堡包。但文化差異確實意味著,一個美國人第一次踏上東京的土地時,總會覺得這地方怪裡怪氣。盡管哲學上講,所有的人本質相同,都會戀愛工作唱歌死亡,美國人和日本人仍然很難適應對方國家的廁所布局。
  Unix和Windows程序員的文化差異是什麼呢?我們暫且不細說這裡面的細枝末節,最重要的一點差異是:Unix文化重視那些對程序員有用的代碼,Windows文化重視那些對非程序員有用的代碼。這麼說有點簡化,但最大的區別的確就是這一點:我們是為其他程序員設計程序,還是為最終用戶設計程序?此外的任何問題都是對這個問題的注腳。
  20世紀60年代末,Unix剛剛誕生,Unix社區的核心文化正在形成,當時的計算機沒有“最終用戶”。那時的計算機,以及計算機的CPU時間,都很昂貴,都僅僅用在很專業的學術領域。“學習計算機”就意味著“學習編程”,而不是像現在這樣,“學習使用應用軟件”也是“學習計算機”的一種方式。作為現代的最終用戶,你可能根本不會編程,而仍然能用計算機做許多事情。但上世紀60年代末,尤其對Unix社區來說,“用計算機”就是“編程”。Windows被制作出來的時候,唯一的目標是出售盡可能多的拷貝,以贏得更多利潤。“每家的每張桌子上都有一台安裝了Windows的計算機”是Windows開發小組的理想,這一理想為windows設定了核心價值觀:對最終用戶來說更容易使用,但顯然,絕大多數最終用戶不是程序員。Windows開發過程並沒有把“方便其他程序員”作為目標。
  例如,Unix的一個重要原則就是“清晰區分策略和機制”。該原則源於X系統的設計。(虎注:X為Unix系統上的圖形用戶界面的基礎設施,其設計者明確提出,X實現的“是機制,不是策略”——X是一個通用圖形引擎,用戶界面風格的選擇,應該是toolkit以及系統中另外一些級別上的決策。策略和機制都會有演進,但是他們變化的速度不同:策略的變化一般比較快,基本機制的變化則比較慢。圖形用戶界面的風格經常變動,但是用於顯示用戶界面的基本光柵操作——比如在屏幕上畫點/畫線——則沒有太多變動余地。)“清晰區分策略和機制”這一Unix文化中的基本原則導致了Unix上圖形用戶界面風格的多樣性。Unix世界裡從未就用戶界面工作方式的全部細節達成一致,並且他們認為這沒什麼不對的,Unix文化並且還尊重這種多樣性。但是對一般的最終用戶來說,在兩個應用程序中,應該能用相同的操作(點擊相同的按鈕或者菜單/快捷鍵)達到相同的目的,這樣的系統上的應用程序才是易學易用的。也正是由於上述區別,雖然Unix開發者為給Unix做一個漂亮的用戶界面已經努力了二十年,我們還是看到最大的Linux廠商的CEO告訴大家:“家庭用戶還是用windows好了”。
  Linux沒准永遠都不會成為一個好的桌面操作系統,因為Unix文化所看重的那些東西本身,就妨礙了Linux成為一個面向最終用戶的桌面系統。OS/X就是一個例證:Apple終於創造出了面向最終用戶的Unix,唯一的原因是,Apple的工程師和領導者都堅定地以最終用戶為核心,而完全放棄了Unix文化中最基本的“以程序員為核心”的理念。他們甚至把Unix的核心目錄改名了——“bin”和”lib”變成了對一般用戶來說更通俗易懂的”application”和”library”。
Copyright © Linux教程網 All Rights Reserved