愛(ài)編程耐亏,不愛(ài)修電腦靖诗;愛(ài)學(xué)習(xí),更愛(ài)運(yùn)動(dòng)支示;愛(ài)科技刊橘,也愛(ài)娛樂(lè);愛(ài)工作颂鸿,不愛(ài)加班伤为。愛(ài)幽默、愛(ài)生活据途、愛(ài)浪漫绞愚、愛(ài)打拼,我是程序員颖医,我為自己代言位衩,關(guān)注程序員,分享程序員的那些事兒熔萧!
『有人的地方糖驴,就有江湖』— 徐克。笑傲江湖佛致。
序
一個(gè)競(jìng)爭(zhēng)的市場(chǎng)贮缕,就會(huì)有對(duì)立的產(chǎn)生,這世界存在著很多不同的領(lǐng)域俺榆,領(lǐng)域好比是個(gè)江湖的縮影感昼,因此就有許多門(mén)派的紛爭(zhēng),例如說(shuō)瀏覽器領(lǐng)域有著最大宗的 IE 派罐脊,門(mén)派成長(zhǎng)速度飛快定嗓,武功版號(hào)跳的跟臺(tái)灣物價(jià)指數(shù)一樣快的 Chrome 門(mén),不斷被模仿萍桌,一直被超越的 Opera 派宵溅;韌性極強(qiáng),一直對(duì)抗幾大勢(shì)力的 Firefox 派等等上炎,程序語(yǔ)言也有自己的領(lǐng)域紛爭(zhēng)恃逻,社群網(wǎng)站也有社群網(wǎng)站領(lǐng)域的戰(zhàn)爭(zhēng),這根本就是一個(gè)戰(zhàn)火永不停止的戰(zhàn)國(guó)時(shí)代藕施,但是其中持續(xù)最久寇损,衝突最大最激烈,當(dāng)然以作業(yè)系統(tǒng)這塊領(lǐng)域?yàn)樽钋Π虼巳竺啵屛覀儊?lái)談?wù)勥@個(gè)江湖。
首先我想講講這個(gè)武林的歷史胞谈,不想看的人可以直接跳到最下面我的看法。
作業(yè)系統(tǒng)的上古時(shí)代
在很久以前,這塊江湖的地位是侷限在于少數(shù)被選上的人才可以踏入的烦绳,這些人就是工程師卿捎,因?yàn)橐莆者@個(gè)領(lǐng)域的武功不是一件容易的事情,因?yàn)樵谶@個(gè)領(lǐng)域的武功基本心法就是學(xué)習(xí)一堆複雜的武功招式(文字介面的程序指令)径密,這些被選上的人必須學(xué)習(xí)很多很多的招式午阵,然后搭配使用這些招式進(jìn)而來(lái)操作作業(yè)系統(tǒng),因此這門(mén)領(lǐng)域的武功學(xué)習(xí)曲線是很高的享扔,不是隨便阿貓阿狗可以學(xué)習(xí)的底桂,在這段時(shí)間中,掌握了這些招式你就能去使用作業(yè)系統(tǒng)中的各式各樣的武器(軟體)惧眠,在這段時(shí)間內(nèi)籽懦,你可以透過(guò)作業(yè)系統(tǒng)本身提供的基本招式來(lái)控制作業(yè)系統(tǒng),你可以透過(guò)武器提供的招式來(lái)使用武器氛魁,你甚至可以自己發(fā)明招式(自己寫(xiě)script)來(lái)控制作業(yè)系統(tǒng)和武器暮顺,因此當(dāng)時(shí)所有的工程師都有自己打造的一套最適合自己的武功,沒(méi)有了他們武功會(huì)大打折扣秀存,但是在他們使用自己打造的武功時(shí)能發(fā)揮出他們最強(qiáng)大的威力捶码。
百家爭(zhēng)鳴
但是這世界后來(lái)起了變化,當(dāng)時(shí)某人將一個(gè)『連猴子也能學(xué)會(huì)用電腦』的概念帶進(jìn)了這個(gè)領(lǐng)域或链,讓這個(gè)領(lǐng)域不再被少數(shù)人寡佔(zhàn)惫恼,這個(gè)概念就是 GUI (圖形化介面),GUI 的產(chǎn)生讓作業(yè)系統(tǒng)看起來(lái)更容易理解澳盐,大幅降低了這個(gè)領(lǐng)域武功的學(xué)習(xí)曲線尤筐,將這個(gè)概念發(fā)揚(yáng)光大的有幾個(gè)大門(mén)派,一個(gè)是目前最大的微軟 派洞就,這個(gè)門(mén)派非撑璺保可怕,勢(shì)力非常之龐大旬蟋,他們以作業(yè)系統(tǒng)這個(gè)領(lǐng)域起家油昂,不單單如此還將觸角伸向非常多不同的領(lǐng)域,幾乎是跟電腦有關(guān)的領(lǐng)域都參一腳倾贰,不難理解是一個(gè)以征服世界為終極目標(biāo)的門(mén)派冕碟,掌門(mén)人是 Bill Gates,據(jù)說(shuō)他靠著賣(mài)出這些武功所賺的錢(qián)蟬聯(lián)了 13 年的世界首富匆浙,是個(gè)極為可怕的角色安寺,所有能力值大概都是 ?????,微軟派的武功非常多首尼,但都是以 Windows NT 這個(gè)核心心法所延伸出來(lái)的挑庶,像是大家熟知的 Windows XP言秸,Windows 7 等等。
另外一個(gè)是由 Steve Jobs 建立的蘋(píng)果教迎捺,教主 Steve Jobs 是一代傳奇人物举畸,蘋(píng)果教早期曾經(jīng)發(fā)生過(guò)一次內(nèi)亂,這次內(nèi)亂迫使當(dāng)時(shí)教主 Steve Jobs 遠(yuǎn)走他鄉(xiāng)凳枝,但是強(qiáng)者天生就是不平凡抄沮,在教主離開(kāi)蘋(píng)果教的這段期間,教主看出了當(dāng)時(shí)武功心法的一些通病岖瑰,為了矯正這些錯(cuò)誤他窮盡心力費(fèi)盡苦思的想出一套曠世奇功 — NeXTStep叛买,而反觀在這期間蘋(píng)果教在新教主阿貓一號(hào)的帶領(lǐng)下反而流失越來(lái)越多的教徒,整個(gè)蘋(píng)果教呈現(xiàn)一個(gè)日暮西山的狀況蹋订,因此在其他長(zhǎng)老的強(qiáng)烈要求下他們將 Steve Jobs 迎回了蘋(píng)果教繼續(xù)擔(dān)任教主率挣,當(dāng)然教主也帶回了他所創(chuàng)的那套曠世奇功 NeXTStep 作為日后蘋(píng)果橫行天下的武功 Mac OS 的基礎(chǔ),如果你有研究過(guò) Mac 的心法你不難發(fā)現(xiàn)在他們的招式中常常會(huì)有 NS 的 prefix 像是 NSString辅辩,這個(gè) NS 所指的就是繼承于 NeXTStep难礼,在教主回歸蘋(píng)果教后,經(jīng)過(guò)了幾年的發(fā)展再次將蘋(píng)果教推向了新的高峰玫锋,推出的許多劃時(shí)代的神兵利器像是 iPod蛾茉、iPhone、iPad撩鹿,蘋(píng)果教利用這些神兵利器打下了一片大大的江山谦炬,成為微軟派最大的勁敵,但在作業(yè)系統(tǒng)領(lǐng)域上的唯一一套武功就是 Mac OS节沦,也就是這個(gè)門(mén)派最基本的心法武功键思。
其他門(mén)派像是 Linux 門(mén)也是一股勢(shì)力,這個(gè)門(mén)派的武功與蘋(píng)果教的 Mac OS 同樣都是由一個(gè)上古時(shí)代就存在的門(mén)派 Unix 演變而來(lái)甫贯,這個(gè)上古時(shí)代也就是本文一開(kāi)始提到在還沒(méi)有『連猴子也能學(xué)會(huì)用電腦』這個(gè)概念出現(xiàn)前吼鳞,那個(gè)被少數(shù)人所寡佔(zhàn)的世界,這個(gè)門(mén)派心法的特性就像是我們前面提到的工程師可以利用各種由作業(yè)系統(tǒng)本身或是應(yīng)用程序本身所提供的招式叫搁,加上自己的想法組合出最適合自己的武器赔桌,因此 Linux 及 Mac OS 皆繼承了這個(gè)傳統(tǒng),但是 Linux 門(mén)情況比較特殊的是渴逻,雖然他是一個(gè)門(mén)派但是本身有非常多不同的勢(shì)力疾党,這些勢(shì)力自己每天互相打來(lái)打去不亦樂(lè)乎,造成無(wú)法將槍口一致對(duì)外惨奕,大家自己閉門(mén)造車一直重複打造別人已經(jīng)有的武功雪位,因此發(fā)展始終無(wú)法達(dá)到一個(gè)高峰,但是一直以來(lái)他在伺服器領(lǐng)域的令人驚艷梨撞,也讓 Linux 在這塊領(lǐng)域有著他不可取代的地位雹洗。
回到武功心法
前面說(shuō)到香罐,這個(gè)世界的改變是由于『連猴子也能學(xué)會(huì)用電腦』這個(gè)概念的帶入,但是這個(gè)概念在每個(gè)門(mén)派的實(shí)作方式是不一樣的队伟,例如說(shuō)微軟派為了將這個(gè)心法發(fā)揮到極致穴吹,將自己的心法改造的與上古時(shí)代完全不同幽勒,拋棄了那些使用指令操縱一切的心法嗜侮,取而代之的是使用許多不同的武器(軟體)來(lái)應(yīng)付不同的對(duì)象(檔案),因此基本心法(作業(yè)系統(tǒng))不再是重點(diǎn)啥容,而是一個(gè)隨時(shí)可以替換掉的東西(隨時(shí)可以重灌)锈颗,你只要保留你的檔案,重灌你的作業(yè)系統(tǒng)后再把這些武器裝上去就可以用了咪惠,這個(gè)過(guò)程不知葬送了多少宅男的青春击吱,但也讓他們有當(dāng)好人幫正妹修電腦的機(jī)會(huì),但是因?yàn)槿绱艘C粒④浥傻男姆ㄊチ嗽旧瞎帕鱾飨聛?lái)的傳統(tǒng)覆醇,你無(wú)法使用招式(指令)來(lái)操作各種不同的武器(軟體、程序)炭臭,因?yàn)檫@些武器現(xiàn)在開(kāi)始彼此是不相往來(lái)永脓,GUI 上的所有程序無(wú)法互相溝通。
你可能會(huì)問(wèn)這有什麼影響鞋仍?我告訴你影響可大了常摧,人使用電腦的目的就是提高工作效率,在程序無(wú)法互相溝通的情況下威创,程序必須仰賴人的操作才有辦法工作落午,因?yàn)槟銦o(wú)法寫(xiě)一些綜合巨集來(lái)完成複雜大量的工作,以微軟的例子來(lái)說(shuō)肚豺,會(huì)使用 VBA 腳本的人工作效率會(huì)是一般人的 n 倍溃斋,因?yàn)槟憧梢酝耆牟倏啬愕淖鳂I(yè)系統(tǒng),就像你使用 VBA 可以完全的自動(dòng)化 Excel 一樣吸申,但是作業(yè)系統(tǒng)想要做到這個(gè)層次梗劫,必須仰賴著一個(gè)統(tǒng)一的執(zhí)行環(huán)境來(lái)管理這些程序,這個(gè)目標(biāo)也是之前程序語(yǔ)言領(lǐng)域的 Sun 想要在他們的工作站做到的事情呛谜,也就是 Java在跳,但是那是另一段故事我們先暫且不談,這樣的影響對(duì)工程師來(lái)說(shuō)隐岛,就是 “什麼都看不到”猫妙,現(xiàn)在微軟派武功心法全部都蒙上了一層馬賽克,因?yàn)樗械臇|西都是被包裝過(guò)的聚凹,相對(duì)的工程師們無(wú)法去真正的了解這套武功心法割坠,你想要做的事情如果超出了武器(軟體)能應(yīng)付的范圍齐帚,你只能放棄,也是因?yàn)榘b的太好彼哼,在發(fā)生問(wèn)題想要 Debug 的時(shí)候你根本看不到作業(yè)系統(tǒng)層面的問(wèn)題对妄,只能按下那個(gè)回報(bào)給微軟的按鈕,因此在微軟派以這樣的概念全力發(fā)展 GUI 的歷史后敢朱,取而代之所捨棄的就是這個(gè) “問(wèn)題”剪菱,我把問(wèn)題用雙引號(hào)包起來(lái)的原因是因?yàn)椋瑢?duì)一般使用者來(lái)說(shuō)這并不算是個(gè)問(wèn)題拴签,因?yàn)樗麄兏惺懿坏叫⒊#蚁嘈胚@或許也是微軟的成功原因之一。
Linux 門(mén)則是把原先上古時(shí)代的傳統(tǒng)發(fā)揮的淋漓盡致蚓哩,但就像我前面提到的构灸,Linux 門(mén)自己的內(nèi)戰(zhàn)打的不亦樂(lè)乎,當(dāng)你踏入了 Linux 門(mén)之后岸梨,你會(huì)發(fā)現(xiàn)常常當(dāng)你想使用 Linux 上面所需要的武器 A 的時(shí)喜颁,他會(huì)告訴你你必須先有武器 B 的 1.13 版,然后武器 B 的 1.13 版必須先有裝備 C 的 2.01 版曹阔,然后裝備 C 的 2.01 版需要 Linux 心法的 1.03 版半开,然后結(jié)果你發(fā)現(xiàn)你在用的是 Linux 心法 2.0 版,因此雖然 Linux 門(mén)繼承了上古 Unix 門(mén)的良好傳統(tǒng)次兆,讓你可以像高手般的打造自己的武功稿茉,也可以完全的掌控整個(gè)作業(yè)系統(tǒng),但是常會(huì)因?yàn)檫@些武器的相依性給搞瘋芥炭,還沒(méi)用到武器漓库,就先被武器給弄死了。
再談 GUI
所以你大概可以體會(huì)园蝠,GUI 開(kāi)始算是一個(gè)作業(yè)系統(tǒng)的分水嶺渺蒿,他讓每個(gè)門(mén)派的心法看起來(lái)變得很不一樣,微軟派的設(shè)計(jì)讓你看不到作業(yè)系統(tǒng)層面的東西彪薛,因?yàn)闁|西幾乎都是被包裝好的茂装,但是你可以在微軟派的 windows 系列武功上使用相對(duì)良好的 GUI,但是由于微軟派的 GUI 設(shè)計(jì)是跟底層綁在一起的善延,因此有時(shí)候 GUI 的崩潰也讓系統(tǒng)一起崩潰了少态,就出現(xiàn)了傳說(shuō)中的藍(lán)白畫(huà)面,Linux 門(mén)的設(shè)計(jì)非常開(kāi)放易遣,你可以隨時(shí)取用串接你想用的心法彼妻,但是在 GUI 方面就差強(qiáng)人意,大部分是一些看起來(lái)就像是山寨微軟派或蘋(píng)果教的產(chǎn)物,當(dāng)然現(xiàn)在來(lái)說(shuō)有些表現(xiàn)較為優(yōu)異的像是 Ubuntu 之類的侨歉,但用過(guò)就知道還是有差屋摇,而蘋(píng)果教正好是取其兩家之長(zhǎng),一個(gè)擁有高度 usability 的 GUI 介面加上可以自行設(shè)計(jì)的武器系統(tǒng)幽邓,Mac OS 感覺(jué)就像是上古流傳下來(lái)的神器再用對(duì)武器施法的卷軸衝到 +10 那樣強(qiáng)大炮温,在 Mac OS 上使用繼承于教主所開(kāi)發(fā)的心法 NeXTStep 的進(jìn)化版本 Cocoa,這套心法提供了一個(gè)統(tǒng)一的作業(yè)系統(tǒng)執(zhí)行環(huán)境牵舵,所有基于 Cocoa 心法所研發(fā)出來(lái)的新武器都有了統(tǒng)一的介面柒啤,這個(gè)統(tǒng)一的介面讓你可以 100% 的控制所有的程序,而且 Mac OS 本身就已經(jīng)提供了完整的開(kāi)發(fā)環(huán)境給所有的工程師棋枕,反觀在 Linux 門(mén)缺乏這個(gè)在 GUI 上統(tǒng)一的介面白修,因此他們的 GUI 看起來(lái)就挺杯具妒峦,而微軟派的 Windows 系列在從 Vista 以后希望打造出一個(gè)完全建構(gòu)于新心法 .NET 框架的環(huán)境來(lái)達(dá)成像是統(tǒng)一介面的環(huán)境重斑,但是由于其設(shè)計(jì)哲學(xué)上的差異他們還是有差異,而且 .NET 心法的一個(gè)致命傷就是仰賴著使用者必須自行去更新 .NET 版本肯骇,如果他沒(méi)有更新成適合的版本那你所開(kāi)發(fā)的武器可能他就沒(méi)有辦法使用窥浪。
后記
其實(shí)是簡(jiǎn)短的故事整理,對(duì)于使用 Mac 或是 PC 的來(lái)寫(xiě)程序比較好笛丙,其實(shí)兩派各有說(shuō)法漾脂,個(gè)人淺見(jiàn)只是文化上的差異,一個(gè)最簡(jiǎn)單考慮的重點(diǎn)就是你想開(kāi)發(fā)哪個(gè)平臺(tái)上面的軟體胚鸯,那麼你最好就使用該平臺(tái)來(lái)開(kāi)發(fā)骨稿,你想開(kāi)發(fā) Windows 上面的應(yīng)用程序,那麼趕快安裝 Visual Studio.NET姜钳,你想開(kāi)發(fā) Mac 上面的程序那就趕快買(mǎi)臺(tái) Mac 安裝好你的 XCode坦冠,當(dāng)然,你也可以考慮 Java 來(lái)開(kāi)發(fā)跨平臺(tái)的程序哥桥,但是用過(guò)都知道在 GUI 的顯示在不同平臺(tái)上還是會(huì)有差異的辙浑,那如果是開(kāi)發(fā) Web 的程序來(lái)說(shuō),個(gè)人淺見(jiàn)如果你是使用 PHP拟糕、Ruby判呕、Python 等程序語(yǔ)言,那麼 Unix-base 的環(huán)境還是比較適合你送滞,因?yàn)槟惚仨毘3Hプ粉櫮愕?Application 在系統(tǒng)的運(yùn)行狀況來(lái)做效能的調(diào)教或是 Debug侠草,而這是在 Windows 平臺(tái)上的相對(duì)弱項(xiàng)。
已經(jīng)看過(guò)太多的戰(zhàn)文在討論 unix 好還是 windows 好犁嗅,其實(shí)就像我說(shuō)的是文化上的差異边涕,微軟的文化是以一般使用者為出發(fā)點(diǎn)而設(shè)計(jì)的平臺(tái),如果是由一個(gè) Unix 的工程師來(lái)設(shè)計(jì)一個(gè)軟體愧哟,他可能會(huì)開(kāi)始先設(shè)計(jì)一個(gè)文字介面的核心奥吩,然后才加上一層 GUI 的皮哼蛆,這樣這支程序才可以為其他程序設(shè)計(jì)師來(lái)自動(dòng)化操作,因?yàn)?Unix 的哲學(xué)是以程序設(shè)計(jì)師為出發(fā)點(diǎn)霞赫,反觀 Windows 工程師會(huì)傾向于先做出一個(gè)使用者操作的畫(huà)面腮介,然后才去寫(xiě)核心部分,對(duì)于 99.999999999% 的使用者不寫(xiě)程序的 Windows 這是很正常的事端衰。另外 Windows 跟 Unix 最大的差異還是在資訊透明度叠洗,Windows 上核心底層的東西必須仰賴微軟更新后才會(huì)修復(fù),因?yàn)槟愫茈y去看到底層的原始碼旅东,而 Unix 由于開(kāi)放的關(guān)系你可以隨時(shí)進(jìn)入底層去找出錯(cuò)誤來(lái)修正他灭抑,但這也不算是 Unix 就比較好的觀點(diǎn),因?yàn)檫@單純是設(shè)計(jì)理念的不同抵代,Windows 傾向于我?guī)湍闾幚硭械讓拥膯?wèn)題腾节,你專心寫(xiě)你的程序就好,而 Unix 則是我讓你看光光荤牍,你不開(kāi)心就改沒(méi)關(guān)系案腺,因此兩派信徒互相嘲笑對(duì)方,其實(shí)只是設(shè)計(jì)理念上的差異罷了康吵。
雖然我用 Mac劈榨,但我相信比爾蓋茲在 Windows 上寫(xiě)程序還是會(huì)把我震住的,所以我從不嘲笑 Windows 的工程師晦嵌,所以請(qǐng)依照你的需求挑選你的平臺(tái)就好同辣,如果要開(kāi)發(fā)微軟的程序,那麼用微軟的環(huán)境還是最無(wú)痛的惭载!
歡迎關(guān)注我的公眾號(hào)(同步更新文章):DoNet技術(shù)分享平臺(tái)