既然有 UNIX 哲學,那有沒有 Windows 哲學呢?


  • UNIX哲學推崇使用IPC組合各個子系統來組成目標應用系統。每個子系統又是可以單獨可以使用的系統/工具,這樣子系統的可重用性就可以被最大化
  • Windows哲學有點像Lisp Machine:使用單一語言書寫和管理源碼,單一進程(但是是多線程)來設計目標系統,重用性在庫這個層次上實現。這樣做其實有先進性:
    • 單一語言系統的代碼管理成本最低,開發起來最舒適

    • 系統的運維成本低,單進程系統只要設計好數據層的事務/日誌機制就不需要UNIX下複雜的重啟各種子系統的watchdog機制,只要交給系統的Service Control Manager就好了,簡單得多
      • 進入Java/.NET時代以後,由於JVM/CLR的高可靠性,使用這兩種運行時的系統已經不會出現C/C++那種動不動就crash的情景。UNIX使用IPC隔離進程崩潰這個最大的優點已經逐漸無所謂了

    • 很容易做成一個完整的部署包,大大減輕部署成本。不像UNIX下部署一個系統要額外安裝/適配/配置叮里咣鐺一大堆子系統
    • 庫是比IPC Service可組合性更高的代碼重用單元
    • 庫比IPC容易調試最起碼1個數量級,因為可以在調試器里直接step into庫的源代碼

    • 最後一點,也是最重要的:由於沒有IPC,所以免除了序列化/解析的錯誤,這可以大大增強系統的可靠性:Parsing在任何時代、任何系統上都是bug的溫床、性能的瓶頸


Windows更多的是玄學


一站式解決方案,Windows哲學是要什麼就直接造一個什麼出來,然後上面一些按鈕,讓你直接按。

Unix給你好多基本工具來幹活,Windows告訴你就按那個按鈕好了。

C給你好多API來靈活搭配,C#告訴你用這個類的這個函數。


1. 強行兼容【對使用者還是相當有好處

2. 軟體趨向於集功能之大成,Windows上會有很多特別好用的工具,而不是像Linux上那樣能組裝出來很多好用的工具鏈。

3. 永遠也不知道出的問題是什麼問題【儘管有時候會莫名其妙的解決掉

4. 軟體從來不指望著系統有庫,軟體稍微重一點都是要自己自帶動態鏈接庫的……


windows是沒有哲學的。windows是上手就能用的大眾工具,誰考慮什麼哲學的事兒。

別以為windows和unix就能截然分開,windows在95和NT時代有2個分支,95是原來的windows 1.0開始發展出來的,NT是從digital挖了一組做VMS的人重新做的,上面的人已經提過了。

如果說windows有哲學那可能是:

1. 不惜一切的自我兼容性

2. 不惜一切的和其他的系統不兼容


bug 著 bug 著,就變 feature 了。


Windows 是沒有什麼設計哲學的。因為 Windows 不是一個社區推動的系統,它的演進主要決定於飄忽不定的公司政治。舉個例子來說,當年 David Cutler 想像 Unix 那樣把 Windows NT 的大部分 UI 放到 user land,結果被負責 UI 子系統的部門否掉。

哲學的基本作用是把各種情況歸納到盡量少的 rule 中。每種情況都設定自己的 rule,最後的方案也湊合能用,但是學習成本很高。這就是通常說的 simple is not easy. simple 指學習成本,easy 指實現的難易。被公司政治左右的產品,通常沒有時間去考慮 minimize rule set.

Windows 的大部分團隊來自前 VMS 團隊。VMS 系統在 PDP 機型上被 Unix 打的潰不成軍,儘管它是 DEC 的官方系統。而 Windows NT 早期的大部分還稱得上「哲學」的東西都是從 VMS 繼承過來的。

目前 Windows 好用的部分都是借鑒的 Unix 哲學。


開源哲學是talk is cheap, show me your code.

windows的哲學就是talk is cheap, show me the money.


八字箴言:小事重啟,大事重裝。


Windows的哲學:比較兩個目標一樣的庫哪個更好用,看發行日期,越新的通常越好(逃

說到底為什麼在Windows上開發程序發布更方便,因為Windows和Windows的差距比起Linux和Linux的差距要小得多,而且官方就是鼓勵你二進位發布的。我在Windows7上寫的代碼,不用在Windows8上跑,有4個9的confidence是可以直接運行的。


windows 的哲學不是大一統么?

one logic on all the device,

one app runs on all device。

微軟現在甚至於不僅僅想讓 one app runs on all windows device,而且還要包括 os x,android,web,ios。。。


需求不同導致後續都不同,強行對比只會顯得生硬且low。


實用為王


這應該算是歷代windows不變的哲學之一。。


M$


Windows是第一生產力——比爾 · 蓋茨


Windows 的哲學就是:

1,系統出現了一個錯誤,給了你錯誤代碼,但你並不能依據此錯誤代碼解決問題

2,系統應用出現了崩潰,但是你用任務管理器強制關閉也沒有用

3,系統本身出現了崩潰,但很隨機,你無法復現,莫名其妙他就好了,微軟工程師也無法復現

4,系統本身出現了持久的崩潰,解決方法是:重裝

5,系統保留大量無用軟體以保證兼容

6,讓用戶自己來選擇應該如何設定「兼容性」

7,讓用戶自己來保護註冊表不被篡改

8,凡事提供多種選擇(兩套控制面板,兩套網頁瀏覽器,甚至兩套UI模式),以方便不讓用戶不覺得自己不是傻逼


All applications runs on one windows.

One Windows runs on all device.


這是給工程師準備的問題


黑盒情況下,普通人是看不到他的哲學的。


推薦閱讀:

為什麼微軟,谷歌要另立操作系統山頭,而不是像蘋果一樣,在最正統的 Unix 基礎上開發?
posix和system v 信號量哪個更快?
同為開源的類unix系統,為什麼FreeBSD遠沒有Linux流行?
除了Windows和UNIX內核兩大桌面操作系統外,歷史上是否曾出現其他具有一定實用價值的操作系統?
Linux 算不算是 UNIX 的一個分支?

TAG:微軟Microsoft | MicrosoftWindows | Unix | 編程學習 |