2006/05/20

選擇~在OS、Software、IDE之間

OS? Stupid!It's software (笨蛋!重點是軟體)

談到 Microsoft Windows vs. Linux 兩大作業系統的對決時
因為 Linux 標榜 It's free,大眾會對它抱有一定程度的好感
但又在某些顧忌之下,不一定真的化為行動縮短距離
不過 How to migrate to Linux? 確定是個火熱的話題。


在大一時上的「計算機概論」已經闡明:
人們會選擇(購買)某一作業系統是因為可以在上面執行有用的應用程式
因此我們可以說:「最有用的作業系統就是擁有最有用應用程式的作業系統」
M$ Windows 是目前市占率最高的作業系統
要無痛轉移至 Linux,那 Linux 上就必須有與 Windows 平台功能相對應的軟體
雖然蓬勃發展的 Open Source 已經具備不少功能卓越的軟體
不過個人覺得就少那麼一點點-->那就是重量級的套裝軟體
所以 Linux 可以是先進的作業系統、效能卓越的伺服器
但只要沒有與M$上相抗衡的套裝軟體
Linux成為 桌面環境 的目標將遙不可及
這不是 Windows or Linux 那麼簡單,缺的是 Adobe、 Macromedia、Office......。



現實觀點 看 作業系統

2006/04/14 中央社
經濟部次長施顏祥今天表示,基於尊重市場運作,無法強制政府採購自由軟體 Linux系統
只能透過輔導計畫鼓勵使用,預計在2007年達成政府公文交換系統50%使用Linux、
政府單位網路伺服器端、個人端使用自由軟體作業平台的比率分別達到35%、10%以上的目標。
2006/05/10 CPRO 資傳網
國際標準組織 ( ISO )與 國際電工委員會 ( IEC )兩大標準組織的技術聯席委員會(JTC)
以全票無異議通過OASIS OpenDocument Format( ODF )的檔案格式為正式的國際標準(ISO/IEC 26300)
這是自SGML(發明於1974年)在1986年被納入ISO標準以來,電腦文件交換格式最重要的標準化發展
值得各界重視,政府部門也應儘速將ODF納入政府部門文件及電腦軟體採購的必備標準。


上述內容是日前的報導,看似充滿希望...不過我的態度比較保留
自大三接觸 Open Source 以來,Linux 或 其他開放原始碼的計畫的確贏得不少目光
從每年增加的相關電腦叢書就能一窺究竟
但我認為:Open Source 面臨的問題不在於著墨太多,而在於施力太少

舉個例子好了:XOOPS 是開放原始碼在2006年的一個得獎專案
不止「叫好」重要的是「叫座」
探究其成功的原因不應只歸功於卓越的設計~戰術成功
而是伺服端的技術本來就比較不會有接受上的問題~戰略成功
使用者就是透過 Brower,背後是什麼在推?他才不 care 勒
我認為成功的理由後者甚至可以凌駕前者。

如果說 在伺服端 Open Source 表現得很好,倒過來說 無法進一步攻城掠地的原因也在於此
不管是 APM(Apache+PHP+MySQL)還是 ASP.NET,再怎麼受歡迎的伺服端的技術
對市場、使用者佔有率永遠不會有決定性的影響
我相信這也是 Opem Source 在桌面環境喊了好幾年,雖然年年都有進步卻還影響有限的原因。

於是又回到最最基本的問題:人們會選擇一個作業系統是因為應用軟體,尤其是重量級的套裝軟體
所以儘管你是最有理想的、視錢財如糞土的 自由軟體者
諷刺的是:要實現你讓 Open Source 世界大同的理想得靠那些商業公司的力量。

( 稍做解釋一下:這理想並非打倒M$佔有大餅,而是解放...讓大家自由選擇
出發點很好...當然也有很好用的自由軟體
不過不諳使用者需求的自由軟體可能功能強大但不便於使用
我來形容一種不樂見的情形「選擇地獄」
自由軟體給你自由選擇的權利,聽起來好美
結果到處都要選擇、選擇、選擇
當你不想再對每一項做選擇、做設定的時候
你會只要單純的解決方案並萌生使用傻瓜軟體的念頭
這有點像: 不想一樣一樣單點,直接吃套餐 或
不開手排車,改開自排或手自排
因為除非是賽車,否則自排比較方便而且表現也大多優於手排。)


那我勒?談談我的選擇

剛接觸 Linux 的時候從什麼都不懂,透過每天一點一點的進步
我一度相信:有一天可以完全捨棄 Windows,取得 資訊自主 又克服 數位落差
後來我向現實低頭了...因為我要做論文。

小弟不是資工方面的學生,對一個普通的理工科學生來說
當論文必須寫程式來印證一些事情的時候,一定會選擇 易用的開發工具
我可以花大把的閒暇時間自己編譯媒體播放程式看電影
因為當 MPlayer 編不出來的時候,我不會有什麼損失,大不了改用 Windows Media Player
可是論文程式怎能用這種玩法?!?我實在沒勇氣把學業賭在上面。

Windows 平台上面有相當友善的開發工具,而且 文件一應俱全
Borland C++ Builder、JBuilder、Visual Studio、Dephi...
甚至作數學運算、統計分析的時候還有 Matlab、Mathmatica、SPSS 這種簡單的計算工具
現成的元件也不少,不必連造輪子都事事躬親
如、在矩陣運算方面就有 Jama、MatrixVB ...等元件

差別就是「成本」(Old--我的),當我在 Windows 做上述工作
我可以「比較」確定「我所要解決的問題都是我專注的問題(論文)」
而不是 中文字型顯示問題、UI、或 連哪兒出問題我都不知道的問題...。

現在上班了也一樣,當工作使用的專業軟體都在 Windows 上執行
要改善的話當然也是在 Windows 上面進行,即使它是可以切割的
我可不願:到 Linux 上 Run 一下自己的程式,再把資料帶回 Windows 上繼續處理 的傻事
因為我不是程式設計師,要做的不是重新開始,而是改善現況
只要寫支程式讓自己偷點懶就好
因此冷落了愛玩的 Linux? 沒辦法~這是不可避免的痛。

人上了年紀以後(講 大一點 好了),第一個摒棄的就是意識型態 ( 第二個就是性能力 )

歷史唯物主義這麼說:人們在物質生活的生產中所形成的社會關係,是一切社會組織的基礎
這個基礎決定其它一切社會活動:道德,法律,宗教等等
這些所謂社會上層建築的活動,總是以某種方式附屬於那基礎。
[引用自 Pupil,2006]


從這觀點來看,選擇開放原始碼 是做為上層建築的部分,是個人的信仰問題
雖然 Windows 占住我在物質生活中生產關係的一部分
不過如果我是個夠激進的開放原始碼支持者,還是可以為了拒用 Windows 中斷工作
直到我設計出或是在 Linux 上出現 可以達到相同目的的軟體 為止
問題在於這和我工作領薪水的生產關係相矛盾 ( 開什麼玩笑!為了OS不上班 )
基礎決定結構,立場只好鬆動...何必跟$過不去呢
何況 Linus Torvalds 也說過:Just for fun~玩玩而已,何必太認真
所以,業餘的時候,我可以是個Linuxer ; 現實的時候,我站在Windows那一邊
種種跡象顯示:這個選擇也可能是更多關鍵人物~程式開發者 的選擇。


開發者!開發者!開發者!

問題演變成:如果你想賣OS,最重要的就是讓軟體開發者願意為你的作業系統寫軟體
當使用者選擇作業系統,應用程式可以幫助他們做選擇。

那為什麼M$上的應用軟體會遠比Linux上的來得多?
先撇開關於 GPL 上那些所謂在 Linux 上開發軟體到底能不能賺錢的問題
我指的是:在 Linux 上開發軟體的難度比在M$來得高這個事實
而且 Linux 上不能執行 Windows 的程式
就算可以透過某種模擬器勉強執行,那感覺像是穿著襪子洗腳...就是怪怪的
(曾以 Wine在 Linux 玩StarCraft、CS、War3)
而且並非所有程式或程式的所有功能都可以透過模擬器執行
因為程式呼叫了屬於作業系統的外部函數( Win API)。

什麼是 API?
如果你正在寫一支程式,某些動作得呼叫作業系統替你完成(如、顯示選單)
這時會用到一組每個作業系統都不相同的函數。這些函數就叫做API,
也就是作業系統(如Windows)提供給應用程式開發者的介面。
它是一組數量上千,複雜而講究的函數和副程式,
可以讓程式師指示作業系統做些有趣的事、奇怪的事以及非常複雜的事。
如果你的程式使用了Windows的API,就不能在提供不同API呼叫的Linux上執行
除非你重新實作所有API,這包括數千個複雜的函數
規模幾乎和實作一個作業系統本身一樣大。
所以,只要用了API,不管什麼語言...都沒什麼「可攜性」可言。

如、國防部軍備局曾在Windows版的 OpenOffice.org1.1.1 上發展「公文製作套件」
就因為 Call 了不少 Win API 而造成移植到 Linux 上困難重重的後果
( 即使 OpenOffice.org 是 Open Source )
不過新一代跨平台的「公文通」於 20060315 由 Firefly 等人發佈 ( 需要 Java )
完全依據研考會 94 年 1 月 28 日公佈之「政府文書格式參考規範」設計。

 

於是,在開發者決定了開發工具和作業系統後,要轉換跑道就很困難了。
(Java除外,它標榜 write once and run anywhere,不過沒那麼神就是)


難道無法改變?

新聞報導 李雙全的父親 李聚寶在這幾天看的「孫子兵法」裡頭有句話:
「先為不可勝,以待敵之可勝。不可勝在己,可勝在敵。」
話是有道理,不過連這種事也加以報導,看得出記者頗無聊。

雖然 M$ 繼續佔有優勢,不過策略上出現了偏差
它想藉由推出 .NET、Longhorn、Avalon 之類的新玩意,試圖建立一組新API 把大家鎖住
更嚴重的是 Visual Basic.NET 不再向後與 VB 6.0 相容
這是不尊重使用者以該產品先前版本所做成果的不當行為。

儘管現有 Windows 程式設計架構並非完美
你可能會遇到 VB Runtime、ocx、DLL...等部署方面的問題

如、透過 Oleaut32.dll 所實做的系統時間,在Win95(還分有裝VB5、VB6的)、Win98上
以00~99表示系統時間會得到2000~2029及1930~1999兩種不統結果


又儘管 .NET 確實有許多重大優點,如、自動化的記憶體管理
但是浪費時間把程式移植到另一個開發環境上,不會在使用上帶來任何好處
純屬追逐時髦的空轉行為,還不如去Debug或增加新功能
何況新的技術又快又多,我們可以都摸一下...但不宜投入太深。

放棄現有的 API、喪失向下支援的能力 將大大削減 Windows 的優勢
對使用者而言:是原有程式無法在新作業系統( Longhorn )上運行
對程式設計師是:M$老愛推出新技術,與其不斷追逐,不如換個開發方式
於是 Web based 式的軟體服務符合需求,伺服端技術大行其道
一來可以解決單機版軟體必須大量授權的問題
二來 Web 透過瀏覽器執行,並不特別鎖定 Windows 平台
聰明的設計師可以透過 Java script做出很棒的介面
甚至是正紅的 AJAX(Asynchronous JavaScript and XML)及 JavaServer Faces(JSF)
完全簡化Web 2.0使用者介面的建置,可以製作一些高度互動的使用者介面
而且能百分之百在瀏覽器上執行而不需再下載
Yahoo! Widget Engine 及 Google 不久前剛併購的 Writely ~ The Web Word Processor
就可以瞧出端倪:未來共通的 API在 Web 上
雖然 Web based 這麼好,不過政府機關使用的「筆硯文書系統」
同樣是 Web based,卻避開了這些優點
因為它用了大量的 Active X,只能在 IE 上使用...也算夠「厲害」了!


結論

毛澤東說:黑貓、白貓,只要會抓老鼠的就是好貓
不管是 選擇作業系統,還是進行 程式開發 ~ 現實為主
再說一次:人上了年紀之後,最先放棄的就是 意識型態 (再來才是你的性能力)
我已到了沒有 Ideology 的年紀,老狗也學不了什麼新把戲
在一切都渾沌不明的時候,不妨參考一下孔夫子的智慧:與其不遜也,寧固

程式設計方面
不必管什麼程式之美,用熟悉的、舊的工具解決問題就好( BCB、VB、VC 依然是我喜歡的方式 )
Windows 很難戒除
光是打Game (尤其是D3D寫的)、行使自然人憑證 (目前國內只有以 Active X認證的版本) 就跑不掉了
不過就算 Longhorn 如期發表,我也不會急著轉換
Linux 呢?也沒有拋棄阿
這是比重問題,不是零合遊戲,我目前也使用 B2DpureKGB
它沒有煩人的中文和硬體支援的問題(如、Centrino)
並內建介面友善的桌面環境( KDE 和 Gnome )
含有許多好用的軟體,支援我大部分的需求而且兼具外觀~相當值得一試!


未來,還是一場不會停的飛車追逐,瞬息萬變、此消彼長
就讓我們樂觀其成,做個漁翁得利的 User 吧!

ps.會寫這些東西,不單是因為資訊一日千里
我想除了瞭解技術、會使用之外,其實也該試著做點 大方向的思考
最後,我不是程式設計師、不是網路 or GIS從業人員
我只是一名測量員...這樣的話,也許你可以聽聽就算了。