<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 十八、二元文化 到目前為止,Windows和Unix在功能上的相似之處比不同的要多。他們都支持同樣的主 流程序作法(由命令行到圖型接口到web服務器);他們所依循的系統資源基本是完全一樣的, 比如幾乎完全相同的文件系統、內存、sockets,還有行程和線程等等。兩套操作系統的核 心服務,還有開發者能寫的應用程序類型也沒多大的差別。 剩下的就是文化差異。沒錯,我們全都要吃東西,不過海那邊的人是用木筷子吃生魚片 加米飯,而我們在這里則是用手拿著面包夾大塊碎牛肉在吃。文化差異并不表示美國人的胃 不能消化壽司,或是說日本人不能消化大麥克漢堡;也不表示吃壽司的美國人或吃漢堡的日 本人很少;文化差異指的是美國人第一次去東京下飛機時所面對,「這地方真奇怪又該死」 那種無法承受的感覺。至于什么「我們其實都是一樣的,我們都有愛,也都會工作歡唱及死 亡,將會克服美國人和日本人永遠無法真正對對方的廁所安排感到自在。」這種空話根本連 想都不會想。 Unix和Windows程序員的文化差異是什么呢?細微的地方很多,不過有一項最明顯:Un ix 文化重視對其他程序員有用的程序,而Windows文化重視對非程序員有用的程序。 這當然是主要的簡化說法,不過事實上確還是個很重大的差異:我們寫程序究竟是為程 序員還是為了 一般使用者?除了這個問題之外其他的都只是詮釋。 時常大發議論的Eric S. Raymond剛寫了一本有關Unix程序設計的巨作The Art of UNIX Programming,極其深入地探索他自己的文化。你可以去買這本書的紙本來看。如果你覺得 Raymond的想法太過激進(anti-idiotarian)而不想付錢給他,還可以在在線免費閱讀,保證 作者的心血絕對不會收到一分錢。 讓我們來看個旋子。Unix的程序文化格外重視可由命令行呼叫的程序,這種程序可以 用參數控制各種動作,其輸出可以擷取成一般機器可讀的純文本格弋。這種程序之所以會被 重視式,是因為可以讓其他程序員輕易地整合進別的程序或較大的軟件系統中。舉個很小的 例子,Unix文化中有一個Raymond稱之為「沉默是金」的核心價值,是說當程序成功地完成 你所交付的事時應該不要有任何輸出。不管是在命令行輸入300個字符的命令建立文件系統, 還是建立并安裝了一套復雜的軟件,或是把載人火箭送到月球,全部都一樣。只要成功執行 就不要有任何輸出。使用者看到下一個命令行提示就會推論一切正常。 由于你是為其他程序員寫程序,所以這才會是Unix文化的重要價值。就如同Raymond所 說的:「喋喋不休的程序不太能和其他程序好好合作。」相較之下在Windows文化中是為張 阿姨而寫程序的,而張阿姨搞不清楚程序是因為執行成功而沒有任何輸出,還是因為出錯了 所以無法顯示任何訊息,或是因為誤解你的要求而沒有輸出。 同樣的狀況,Unix文化欣賞保持文字接口的程序。他們不是很喜歡圖型接口,不過在純 文本接口程序上漂亮地涂一層GUI 口紅可以例外,另外他們也不喜歡二位文件格式。因為文 字接口比較好用程控,而圖型接口除非提供其他機制(如內建腳本語言),否則幾乎不可能用 程控。我們在這里又再次看到,Unix文化重視有助于其他程序員的程序,而這一點很少會是 Windows程序設計的目標。 這并不是說所有的Unix程序都只是為了程序員而設計的。這樣說太偏頗了。不過這個文 化重視對程序員有用的東西,而這可以解釋很多很多的事情。 假設你找了一個Unix程序員和一個Windows程序員來,要他們分別寫同一只針對一般用 戶的應用程序。Unix程序員會先建立一個由命令行或文字接口驅動的核心,通常事后才寫一 個圖型接口來呼叫核心。這樣子應用程序的主要功能都可以讓其他程序員使用,他們可以用 命令行呼叫程序并把結果以文字方式讀入。而Windows程序員會傾向先由圖型接口開始,通 常事后才加上腳本語言讓圖型接口的操作自動化。對一個99.999%用戶完全不寫程序(也不打 算學寫)的文化來說,這是很正常的。 在Windows程序員中有個主要針對其他程序員寫程序的重要團隊,就是微軟內部的 Windows團隊本身。他們做事的方法通常是建立一個可以由C語言呼叫的API,在API里實作出 功能,然后再撰寫圖型接口程序來呼叫API。所有用Windows使用接口能做的事,全都可以用 任何合理的程序語言呼叫某個程序接口做到。舉例來說,微軟的Internet Explorer本身只 不過是一個89 KB的小程序,里面包裝了數十個可供程序老手免費使用,功能強大又有彈性 的的組件。問題是程序員無法接觸到這些組件的原始碼,所以只能完全依照微軟內組件開發 者所預見并允許的方式使用,而這種作法并不是每次都行得通。有些問題因為缺乏API原始 碼,以致于難以甚至無法追查,這時通常就怪罪到呼叫API的人身上。Unix具有公開原始碼 的文化價值,使它成為更容易開發的環境。每個Windows平臺的開發者都會告訴你,某一次 花了四天去查一個問題,原因只是他們認為LocalSize傳回的內存大小應該和原先呼叫 LocalAlloc時用的值一樣,或是其他有鏈接庫原始碼就能在十分鐘內搞定的問題。Raymond 創作了一個有趣的故事,說明這個曾經用過無原始碼鏈接庫都會同意的道理。 所以你看到這些宗教性的論點了。因為可以進入鏈接庫除錯所以Unix比較好。因為張阿 姨可以看到提示確認她的電子郵件真的送出去了,所以Windows比較好。事實上沒有誰比誰 更好,他們只是擁有的價值不同:Unix的核心價值是制作有助于其他程序員的東西,而 Windows則把制作有助于張阿姨的事視作核心價值。 讓我們來看看另一個文化差異。Raymond說「典型的Unix文件會寫得簡潔而完整]…這 種風格假設讀者夠積極,可以推導未寫出的推論,并且有自信信任這些推導。]小心的閱讀 每一個字,因為一件事很少會講兩遍。]」天啊,我認為他其實是在教年輕的程序員寫出更 不人性的man說明文件。 這對一般使用者而言是絕對行不通的。雖然Raymond可能說這是「過于簡化的屈就]」, 不過Windows文化了解一般使用者不讀文件,即使不得不看也是愈少愈好,因此你必須不斷 重復的解釋…事實上在良好的Windows說明檔中,必須每個主題都能讓一般讀者直接看懂, 不必先看懂其他任何的幫助主題。 怎么會出現不同的核心價值呢?這是Raymond的書另一個出色之處:他深入Unix的歷史 和演進,讓新程序員熟悉回溯至1969年起累積的歷史。在Unix被創造出來及其文化價值成形 的時候,一般使用者并不存在。計算機很貴CPU時間也很貴,學計算機就等于是學寫程序。 無怪會蘊釀出重視有助于其他程序員的文化。相較之下Windows的創造只有一個目標:盡量 賣更多套以獲得更多利潤,成億上兆套的賣。「每個家庭每個桌上都有一臺計算機」就是創 造Windows的明確目標,并且設定了它的議題也決定它的核心價值。讓非程序員容易使用, 是進駐每個桌面和家庭的唯一方法。因此使用性自然凌駕其他東西而成為文化的基準。對這 樣的文化而言,程序員是極其次要的對象。 文化的裂縫是如此的明確,所以Unix從未真正的進入桌面。張阿姨不會真的去用Unix。 不斷有人努力幫Unix制作漂亮的外殼,希望讓張阿姨能用Unix,不過全都失敗了。因此這些 程序員都深陷在Unix文化中。舉例來說,Unix有一個源自于X設計者的價值:策略與機制分 離。這種想法直接導致使用接口的分裂;桌面使用接口運作的細節并沒有大家一致同意的做 法,由于這些設計者的文化重視這種差異,所以他們就認為這種作法可以用。不過對張阿姨 來說,在不同程序里剪貼得用不同的使用接口,絕對是行不通的。所以這就是現在的狀況, Unix開發者20年前開始嘗試在系統表面涂上一層漂亮的使用接口,結果到今天最大Linux廠 商的執行長還告訴大家,家庭用戶應該直接用Windows就可以了。我曾經聽過有經濟學家宣 稱,說硅谷永遠不可能在其他地方(比如說法國好了)重現,因為法國文化對于失敗的懲罰太 重,以致企業家不愿意冒險。或許Linux也有相同的狀況:Linux可能永遠都不會成為桌面 的操作系統,因為它重視一些會阻礙這件事的價值。OSX就是一個證明:蘋果終于創造了給 張阿姨用的Unix,不過原因并不光是因為蘋果的工程師和經理堅持針對一般使用者的文化 (我獨斷地稱之為「Windows文化」,雖然這從歷史來看是源于蘋果),他們還拒絕了Unix文 化中以程序員為中心的基本思想。甚至把核心目錄的名字改掉了(多么違反傳統!),用常見 的英文單字”applications”和”l ibrary”代替”bin”和”lib”。 Raymond真的嘗試比較Unix與其他操作系統并突顯之間的差異,不過這卻也是這本好書 中最弱的部份,因為他真的不知道自己在講什么。當他談論Windows時常會顯露他對Windows 程序設計的知識多是由報紙讀來,并非來自真正的Windows程序設計經驗。這沒什么關系: 他并不是Windows程序員,而這一點我們可以體諒。不過他身為對一個文化有深厚了解的典型,知道該文化所重視的價值,卻沒有注意該文化中針對一般人部份(殺老太太跟當機:一 定是不好的),與針對程序員部份(吃生魚片和命令行參數:因對象而不同)的差異。 有太多的單文化程序員,他們就像從未離開過家鄉的典型美國小孩,說不出來文化價值 和人類核心價值間的差異。我遇過太多嘲笑Windows程序設計的Unix程序員,他們認為 Windows野蠻又愚蠢。Raymond經常落入未考慮原由就輕視其他文化的陷阱。在Windows程序 員中很少會發現這種頑固份子,因為Windows程序員大體上都是以解決方案為準而非意識型 態的。至少Windows程序員會承認他們文化的缺陷,然后很實務地說:「看,如果你想把字 處理程序賣給很多人,就得能在他們的機器上執行。如果得用邪惡的registry代替優雅的 ~/.「c檔儲存設定才能辦到,就這樣做吧。」現在Unix世界充滿自以為是的文化優越擁護者 和s l ashdot的灌水教派(karma-whor i ng sectar i an i sm),而Wi ndows世界比較實務(我畢竟得 在這里討生活嘛)。這種現狀源于Un i x文化感覺自己被圍攻,無法突破服務器和愛好者小眾 市場進入主流桌面市場。這種弱勢的傲慢正是The Art of UNIX Programming最大的缺點, 不過倒也并不是如此嚴重,整體而言這本書充滿了非常有趣的洞見,內容泛及各種程序設計 主題,以致我愿意閉住呼吸忍受偶而出現的意識型態高論,因為在其他部份可以學到太多一 般性的觀念了。事實上我會把這查書推薦給任何平臺任何文化和任何目標的開發者,因為里 面有大多價值是普世通用的。Raymond指出CSV格式不如/etc/passwd格式時,他嘗試由Unix 而非Windows觀點去評價,不過你知道嗎?他是對的。/etc/passwd比CSV容易分析,如果你 讀了這本書就會知道為什么,而且也會成為更好的程序員。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看