编程应该用 Mac ,还是 PC ?
愛編程,不愛修電腦;愛學(xué)習(xí),更愛運動;愛科技,也愛娛樂;愛工作,不愛加班。愛幽默、愛生活、愛浪漫、愛打拼,我是程序員,我為自己代言,關(guān)注程序員,分享程序員的那些事兒!
『有人的地方,就有江湖』— 徐克。笑傲江湖。
序
一個競爭的市場,就會有對立的產(chǎn)生,這世界存在著很多不同的領(lǐng)域,領(lǐng)域好比是個江湖的縮影,因此就有許多門派的紛爭,例如說瀏覽器領(lǐng)域有著最大宗的 IE 派,門派成長速度飛快,武功版號跳的跟臺灣物價指數(shù)一樣快的 Chrome 門,不斷被模仿,一直被超越的 Opera 派;韌性極強(qiáng),一直對抗幾大勢力的 Firefox 派等等,程序語言也有自己的領(lǐng)域紛爭,社群網(wǎng)站也有社群網(wǎng)站領(lǐng)域的戰(zhàn)爭,這根本就是一個戰(zhàn)火永不停止的戰(zhàn)國時代,但是其中持續(xù)最久,衝突最大最激烈,當(dāng)然以作業(yè)系統(tǒng)這塊領(lǐng)域為最,因此,讓我們來談?wù)勥@個江湖。
首先我想講講這個武林的歷史,不想看的人可以直接跳到最下面我的看法。
作業(yè)系統(tǒng)的上古時代
在很久以前,這塊江湖的地位是侷限在于少數(shù)被選上的人才可以踏入的,這些人就是工程師,因為要掌握這個領(lǐng)域的武功不是一件容易的事情,因為在這個領(lǐng)域的武功基本心法就是學(xué)習(xí)一堆複雜的武功招式(文字介面的程序指令),這些被選上的人必須學(xué)習(xí)很多很多的招式,然后搭配使用這些招式進(jìn)而來操作作業(yè)系統(tǒng),因此這門領(lǐng)域的武功學(xué)習(xí)曲線是很高的,不是隨便阿貓阿狗可以學(xué)習(xí)的,在這段時間中,掌握了這些招式你就能去使用作業(yè)系統(tǒng)中的各式各樣的武器(軟體),在這段時間內(nèi),你可以透過作業(yè)系統(tǒng)本身提供的基本招式來控制作業(yè)系統(tǒng),你可以透過武器提供的招式來使用武器,你甚至可以自己發(fā)明招式(自己寫script)來控制作業(yè)系統(tǒng)和武器,因此當(dāng)時所有的工程師都有自己打造的一套最適合自己的武功,沒有了他們武功會大打折扣,但是在他們使用自己打造的武功時能發(fā)揮出他們最強(qiáng)大的威力。
百家爭鳴
但是這世界后來起了變化,當(dāng)時某人將一個『連猴子也能學(xué)會用電腦』的概念帶進(jìn)了這個領(lǐng)域,讓這個領(lǐng)域不再被少數(shù)人寡佔,這個概念就是 GUI (圖形化介面),GUI 的產(chǎn)生讓作業(yè)系統(tǒng)看起來更容易理解,大幅降低了這個領(lǐng)域武功的學(xué)習(xí)曲線,將這個概念發(fā)揚光大的有幾個大門派,一個是目前最大的微軟 派,這個門派非??膳?#xff0c;勢力非常之龐大,他們以作業(yè)系統(tǒng)這個領(lǐng)域起家,不單單如此還將觸角伸向非常多不同的領(lǐng)域,幾乎是跟電腦有關(guān)的領(lǐng)域都參一腳,不難理解是一個以征服世界為終極目標(biāo)的門派,掌門人是 Bill Gates,據(jù)說他靠著賣出這些武功所賺的錢蟬聯(lián)了 13 年的世界首富,是個極為可怕的角色,所有能力值大概都是 ?????,微軟派的武功非常多,但都是以 Windows NT 這個核心心法所延伸出來的,像是大家熟知的 Windows XP,Windows 7 等等。
另外一個是由 Steve Jobs 建立的蘋果教,教主 Steve Jobs 是一代傳奇人物,蘋果教早期曾經(jīng)發(fā)生過一次內(nèi)亂,這次內(nèi)亂迫使當(dāng)時教主 Steve Jobs 遠(yuǎn)走他鄉(xiāng),但是強(qiáng)者天生就是不平凡,在教主離開蘋果教的這段期間,教主看出了當(dāng)時武功心法的一些通病,為了矯正這些錯誤他窮盡心力費盡苦思的想出一套曠世奇功 — NeXTStep,而反觀在這期間蘋果教在新教主阿貓一號的帶領(lǐng)下反而流失越來越多的教徒,整個蘋果教呈現(xiàn)一個日暮西山的狀況,因此在其他長老的強(qiáng)烈要求下他們將 Steve Jobs 迎回了蘋果教繼續(xù)擔(dān)任教主,當(dāng)然教主也帶回了他所創(chuàng)的那套曠世奇功 NeXTStep 作為日后蘋果橫行天下的武功 Mac OS 的基礎(chǔ),如果你有研究過 Mac 的心法你不難發(fā)現(xiàn)在他們的招式中常常會有 NS 的 prefix 像是 NSString,這個 NS 所指的就是繼承于 NeXTStep,在教主回歸蘋果教后,經(jīng)過了幾年的發(fā)展再次將蘋果教推向了新的高峰,推出的許多劃時代的神兵利器像是 iPod、iPhone、iPad,蘋果教利用這些神兵利器打下了一片大大的江山,成為微軟派最大的勁敵,但在作業(yè)系統(tǒng)領(lǐng)域上的唯一一套武功就是 Mac OS,也就是這個門派最基本的心法武功。
其他門派像是 Linux 門也是一股勢力,這個門派的武功與蘋果教的 Mac OS 同樣都是由一個上古時代就存在的門派 Unix 演變而來,這個上古時代也就是本文一開始提到在還沒有『連猴子也能學(xué)會用電腦』這個概念出現(xiàn)前,那個被少數(shù)人所寡佔的世界,這個門派心法的特性就像是我們前面提到的工程師可以利用各種由作業(yè)系統(tǒng)本身或是應(yīng)用程序本身所提供的招式,加上自己的想法組合出最適合自己的武器,因此 Linux 及 Mac OS 皆繼承了這個傳統(tǒng),但是 Linux 門情況比較特殊的是,雖然他是一個門派但是本身有非常多不同的勢力,這些勢力自己每天互相打來打去不亦樂乎,造成無法將槍口一致對外,大家自己閉門造車一直重複打造別人已經(jīng)有的武功,因此發(fā)展始終無法達(dá)到一個高峰,但是一直以來他在伺服器領(lǐng)域的令人驚艷,也讓 Linux 在這塊領(lǐng)域有著他不可取代的地位。
回到武功心法
前面說到,這個世界的改變是由于『連猴子也能學(xué)會用電腦』這個概念的帶入,但是這個概念在每個門派的實作方式是不一樣的,例如說微軟派為了將這個心法發(fā)揮到極致,將自己的心法改造的與上古時代完全不同,拋棄了那些使用指令操縱一切的心法,取而代之的是使用許多不同的武器(軟體)來應(yīng)付不同的對象(檔案),因此基本心法(作業(yè)系統(tǒng))不再是重點,而是一個隨時可以替換掉的東西(隨時可以重灌),你只要保留你的檔案,重灌你的作業(yè)系統(tǒng)后再把這些武器裝上去就可以用了,這個過程不知葬送了多少宅男的青春,但也讓他們有當(dāng)好人幫正妹修電腦的機(jī)會,但是因為如此,微軟派的心法失去了原本上古流傳下來的傳統(tǒng),你無法使用招式(指令)來操作各種不同的武器(軟體、程序),因為這些武器現(xiàn)在開始彼此是不相往來,GUI 上的所有程序無法互相溝通。
你可能會問這有什麼影響?我告訴你影響可大了,人使用電腦的目的就是提高工作效率,在程序無法互相溝通的情況下,程序必須仰賴人的操作才有辦法工作,因為你無法寫一些綜合巨集來完成複雜大量的工作,以微軟的例子來說,會使用 VBA 腳本的人工作效率會是一般人的 n 倍,因為你可以完全的操控你的作業(yè)系統(tǒng),就像你使用 VBA 可以完全的自動化 Excel 一樣,但是作業(yè)系統(tǒng)想要做到這個層次,必須仰賴著一個統(tǒng)一的執(zhí)行環(huán)境來管理這些程序,這個目標(biāo)也是之前程序語言領(lǐng)域的 Sun 想要在他們的工作站做到的事情,也就是 Java,但是那是另一段故事我們先暫且不談,這樣的影響對工程師來說,就是 “什麼都看不到”,現(xiàn)在微軟派武功心法全部都蒙上了一層馬賽克,因為所有的東西都是被包裝過的,相對的工程師們無法去真正的了解這套武功心法,你想要做的事情如果超出了武器(軟體)能應(yīng)付的范圍,你只能放棄,也是因為包裝的太好,在發(fā)生問題想要 Debug 的時候你根本看不到作業(yè)系統(tǒng)層面的問題,只能按下那個回報給微軟的按鈕,因此在微軟派以這樣的概念全力發(fā)展 GUI 的歷史后,取而代之所捨棄的就是這個 “問題”,我把問題用雙引號包起來的原因是因為,對一般使用者來說這并不算是個問題,因為他們感受不到,我相信這或許也是微軟的成功原因之一。
Linux 門則是把原先上古時代的傳統(tǒng)發(fā)揮的淋漓盡致,但就像我前面提到的,Linux 門自己的內(nèi)戰(zhàn)打的不亦樂乎,當(dāng)你踏入了 Linux 門之后,你會發(fā)現(xiàn)常常當(dāng)你想使用 Linux 上面所需要的武器 A 的時,他會告訴你你必須先有武器 B 的 1.13 版,然后武器 B 的 1.13 版必須先有裝備 C 的 2.01 版,然后裝備 C 的 2.01 版需要 Linux 心法的 1.03 版,然后結(jié)果你發(fā)現(xiàn)你在用的是 Linux 心法 2.0 版,因此雖然 Linux 門繼承了上古 Unix 門的良好傳統(tǒng),讓你可以像高手般的打造自己的武功,也可以完全的掌控整個作業(yè)系統(tǒng),但是常會因為這些武器的相依性給搞瘋,還沒用到武器,就先被武器給弄死了。
再談 GUI
所以你大概可以體會,GUI 開始算是一個作業(yè)系統(tǒng)的分水嶺,他讓每個門派的心法看起來變得很不一樣,微軟派的設(shè)計讓你看不到作業(yè)系統(tǒng)層面的東西,因為東西幾乎都是被包裝好的,但是你可以在微軟派的 windows 系列武功上使用相對良好的 GUI,但是由于微軟派的 GUI 設(shè)計是跟底層綁在一起的,因此有時候 GUI 的崩潰也讓系統(tǒng)一起崩潰了,就出現(xiàn)了傳說中的藍(lán)白畫面,Linux 門的設(shè)計非常開放,你可以隨時取用串接你想用的心法,但是在 GUI 方面就差強(qiáng)人意,大部分是一些看起來就像是山寨微軟派或蘋果教的產(chǎn)物,當(dāng)然現(xiàn)在來說有些表現(xiàn)較為優(yōu)異的像是 Ubuntu 之類的,但用過就知道還是有差,而蘋果教正好是取其兩家之長,一個擁有高度 usability 的 GUI 介面加上可以自行設(shè)計的武器系統(tǒng),Mac OS 感覺就像是上古流傳下來的神器再用對武器施法的卷軸衝到 +10 那樣強(qiáng)大,在 Mac OS 上使用繼承于教主所開發(fā)的心法 NeXTStep 的進(jìn)化版本 Cocoa,這套心法提供了一個統(tǒng)一的作業(yè)系統(tǒng)執(zhí)行環(huán)境,所有基于 Cocoa 心法所研發(fā)出來的新武器都有了統(tǒng)一的介面,這個統(tǒng)一的介面讓你可以 100% 的控制所有的程序,而且 Mac OS 本身就已經(jīng)提供了完整的開發(fā)環(huán)境給所有的工程師,反觀在 Linux 門缺乏這個在 GUI 上統(tǒng)一的介面,因此他們的 GUI 看起來就挺杯具,而微軟派的 Windows 系列在從 Vista 以后希望打造出一個完全建構(gòu)于新心法 .NET 框架的環(huán)境來達(dá)成像是統(tǒng)一介面的環(huán)境,但是由于其設(shè)計哲學(xué)上的差異他們還是有差異,而且 .NET 心法的一個致命傷就是仰賴著使用者必須自行去更新 .NET 版本,如果他沒有更新成適合的版本那你所開發(fā)的武器可能他就沒有辦法使用。
后記
其實是簡短的故事整理,對于使用 Mac 或是 PC 的來寫程序比較好,其實兩派各有說法,個人淺見只是文化上的差異,一個最簡單考慮的重點就是你想開發(fā)哪個平臺上面的軟體,那麼你最好就使用該平臺來開發(fā),你想開發(fā) Windows 上面的應(yīng)用程序,那麼趕快安裝 Visual Studio.NET,你想開發(fā) Mac 上面的程序那就趕快買臺 Mac 安裝好你的 XCode,當(dāng)然,你也可以考慮 Java 來開發(fā)跨平臺的程序,但是用過都知道在 GUI 的顯示在不同平臺上還是會有差異的,那如果是開發(fā) Web 的程序來說,個人淺見如果你是使用 PHP、Ruby、Python 等程序語言,那麼 Unix-base 的環(huán)境還是比較適合你,因為你必須常常去追蹤你的 Application 在系統(tǒng)的運行狀況來做效能的調(diào)教或是 Debug,而這是在 Windows 平臺上的相對弱項。
已經(jīng)看過太多的戰(zhàn)文在討論 unix 好還是 windows 好,其實就像我說的是文化上的差異,微軟的文化是以一般使用者為出發(fā)點而設(shè)計的平臺,如果是由一個 Unix 的工程師來設(shè)計一個軟體,他可能會開始先設(shè)計一個文字介面的核心,然后才加上一層 GUI 的皮,這樣這支程序才可以為其他程序設(shè)計師來自動化操作,因為 Unix 的哲學(xué)是以程序設(shè)計師為出發(fā)點,反觀 Windows 工程師會傾向于先做出一個使用者操作的畫面,然后才去寫核心部分,對于 99.999999999% 的使用者不寫程序的 Windows 這是很正常的事。另外 Windows 跟 Unix 最大的差異還是在資訊透明度,Windows 上核心底層的東西必須仰賴微軟更新后才會修復(fù),因為你很難去看到底層的原始碼,而 Unix 由于開放的關(guān)系你可以隨時進(jìn)入底層去找出錯誤來修正他,但這也不算是 Unix 就比較好的觀點,因為這單純是設(shè)計理念的不同,Windows 傾向于我?guī)湍闾幚硭械讓拥膯栴},你專心寫你的程序就好,而 Unix 則是我讓你看光光,你不開心就改沒關(guān)系,因此兩派信徒互相嘲笑對方,其實只是設(shè)計理念上的差異罷了。
雖然我用 Mac,但我相信比爾蓋茲在 Windows 上寫程序還是會把我震住的,所以我從不嘲笑 Windows 的工程師,所以請依照你的需求挑選你的平臺就好,如果要開發(fā)微軟的程序,那麼用微軟的環(huán)境還是最無痛的!
歡迎關(guān)注我的公眾號(同步更新文章):DoNet技術(shù)分享平臺
閱讀原文
總結(jié)
以上是生活随笔為你收集整理的编程应该用 Mac ,还是 PC ?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity connect mysql_
- 下一篇: java map 允许重复_java中k