Cudacke Dees wrote:
Canon 賣的是硬...(恕刪)
火氣別這麼大。
一上來就和六七個人對嗆,
除非你是在微軟工作,不然嗆贏了對你也沒什麼好處。
Windows 有很多東西原本設計的用意是好的,
但是經過眾人之手,包括開發者、發行者、第三開發者(包括微軟自己其他部門在內)以及使用者手上,
把事情搞到很複雜。
Registry 就是一個最好的例子。
Registry 除了閣下聲稱的『破解程式』以外,還有很多功能。
Registry 原本設計用意是一個『系統參數資料庫』,
原本 Registry 被設計出來部份的理由就是為了支援 COM+ 的架構,
讓程式可以用一個獨一無二的函式庫代號,檢索到需要引用的外部動態函式庫。
這樣的架構對系統等級程式開發的人來說,是一個非常方便的功能。
因為共用的函式庫不管檔案放在哪裡都可以找到,不需要個別設定,也不需要用浪費編譯時間的靜態鏈結。
如果共用函式有需要變更,也只要更新一個檔案即可。
對程式設計師來說,這是非常接近軟體工程理想的一種做法。
但是到了發行者、以及第三開發者手上,Registry 的功能被誤用,就搞得很複雜。
首先,有太多不該放在 Registry 裡面的東西被放了進去。
例如 IE 的首頁設定,Plug & Play 服務設定,Proxy,QoS priority,DDNS,硬碟代號,MIME 對應等等。
這些東西有些應該是屬於特定應用程式的『偏好設定』,而有些則是和系統安全性有關,
全部都放在同一個參數資料庫裡面,這就是明顯的安全漏洞。
而且單一資料項目的損毀,就有可能會造成 Registry database 損壞,讓系統異常。
再來,使用 DLL 架構來開發程式,對軟體發行的管控、以及權限控制就需要特別注意。
但是有很多第三開發者,對 DLL 缺乏良好的管控,
發行的時候版本號碼都沒控制好,檔案位置也缺乏一致性。
再加上使用者需要自行手動安裝的場合,整個系統管理就變得很混亂。
嚴格說起來,Windows Registry 被人詬病,並不完全是 Registry 本身和微軟的問題。
但是這個 Registry 系統在設計上有許多地方缺乏更嚴謹的考慮,這是不爭的事實。
簡單的說,這樣一個資料庫原本就是該設計成『只讀不寫』,
只有在少數場合,例如軟體更新,才能由系統本身的權限以 Transaction 方式進行變更。
無關系統整體運作的,就應該分開處理。
像 Registry 這種東西,基本上所有作業系統都有類似概念的實作,
不管是用檔案、Key-hashed repository、還是 LDAP,做的事情都差不多。
在這一點上,Apple 並沒有做得比微軟高明多少,
只是大部分 Apple 的軟體開發者都遵守約定俗成的『Apple 習慣』,
對使用者的感覺就是一致性比較高。
Vista 多國語言支援是另一個例子。
Vista 只有在不零售的企業版和旗艦版有包含多國語言包,
其他使用者都必須透過網路來自行下載多國語言包安裝。
基本上像這種做法,不是設計系統的人的問題,而是發行的人的問題。
我無法理解閣下所謂『很多人用所以有很多版本』這個邏輯;
如果說,有 90% 的市場,所以做了九個版本,
那如果能夠只用一個版本,就可以在這 90% 的市場通用,降低管理與支援的成本,
有什麼不好?會有什麼副作用?
如果說企業用戶、學校用戶、個人用戶、隨機系統,
各自有不同的『授權方法』與『驗證方法』而必須分版本,這我可以理解。
但是請問一個可以讓使用者後續自行下載安裝的語言包,這和授權驗證有什麼關連?
難道在個人版本 Windows Vista 安裝光碟中加入其他語言包就會破壞當地微軟的銷售與授權管道嗎?
或許微軟 Windows 發行單位也和閣下採用的是相同的邏輯思考模式,
但對於我這個習慣用工程師方式思考的腦袋來說,這是完全無法理解的行動。
我從 68K 時代開始玩 Mac,Windows 系統我也是從 3.0 開始用。
這幾年作業系統的演進我全都看在眼裡,
兩套系統都同樣的有許多改進,也有許多陳年老問題死都不改。
無論如何,沒有哪一套系統是完美沒有缺點的。
這種比對方法、這種爭論,真的是無聊至極。