編程應該用 Mac ,還是 PC ?

愛編程,不愛修電腦;愛學習,更愛運動;愛科技,也愛娛樂;愛工作,不愛加班。愛幽默、愛生活、愛浪漫、愛打拼,我是程序員,我為自己代言,關注程序員,分享程序員的那些事兒!

『有人的地方,就有江湖』— 徐克。笑傲江湖。

一個競爭的市場,就會有對立的產生,這世界存在著很多不同的領域,領域好比是個江湖的縮影,因此就有許多門派的紛爭,例如說瀏覽器領域有著最大宗的 IE 派,門派成長速度飛快,武功版號跳的跟臺灣物價指數一樣快的 Chrome 門,不斷被模仿,一直被超越的 Opera 派;韌性極強,一直對抗幾大勢力的 Firefox 派等等,程序語言也有自己的領域紛爭,社群網站也有社群網站領域的戰爭,這根本就是一個戰火永不停止的戰國時代,但是其中持續最久,衝突最大最激烈,當然以作業系統這塊領域為最,因此,讓我們來談談這個江湖。

首先我想講講這個武林的歷史,不想看的人可以直接跳到最下面我的看法。

作業系統的上古時代

在很久以前,這塊江湖的地位是侷限在于少數被選上的人才可以踏入的,這些人就是工程師,因為要掌握這個領域的武功不是一件容易的事情,因為在這個領域的武功基本心法就是學習一堆複雜的武功招式(文字介面的程序指令),這些被選上的人必須學習很多很多的招式,然后搭配使用這些招式進而來操作作業系統,因此這門領域的武功學習曲線是很高的,不是隨便阿貓阿狗可以學習的,在這段時間中,掌握了這些招式你就能去使用作業系統中的各式各樣的武器(軟體),在這段時間內,你可以透過作業系統本身提供的基本招式來控制作業系統,你可以透過武器提供的招式來使用武器,你甚至可以自己發明招式(自己寫script)來控制作業系統和武器,因此當時所有的工程師都有自己打造的一套最適合自己的武功,沒有了他們武功會大打折扣,但是在他們使用自己打造的武功時能發揮出他們最強大的威力。

百家爭鳴

但是這世界后來起了變化,當時某人將一個『連猴子也能學會用電腦』的概念帶進了這個領域,讓這個領域不再被少數人寡佔,這個概念就是 GUI (圖形化介面),GUI 的產生讓作業系統看起來更容易理解,大幅降低了這個領域武功的學習曲線,將這個概念發揚光大的有幾個大門派,一個是目前最大的微軟 派,這個門派非常可怕,勢力非常之龐大,他們以作業系統這個領域起家,不單單如此還將觸角伸向非常多不同的領域,幾乎是跟電腦有關的領域都參一腳,不難理解是一個以征服世界為終極目標的門派,掌門人是 Bill Gates,據說他靠著賣出這些武功所賺的錢蟬聯了 13 年的世界首富,是個極為可怕的角色,所有能力值大概都是 ?????,微軟派的武功非常多,但都是以 Windows NT 這個核心心法所延伸出來的,像是大家熟知的 Windows XP,Windows 7 等等。

另外一個是由 Steve Jobs 建立的蘋果教,教主 Steve Jobs 是一代傳奇人物,蘋果教早期曾經發生過一次內亂,這次內亂迫使當時教主 Steve Jobs 遠走他鄉,但是強者天生就是不平凡,在教主離開蘋果教的這段期間,教主看出了當時武功心法的一些通病,為了矯正這些錯誤他窮盡心力費盡苦思的想出一套曠世奇功 — NeXTStep,而反觀在這期間蘋果教在新教主阿貓一號的帶領下反而流失越來越多的教徒,整個蘋果教呈現一個日暮西山的狀況,因此在其他長老的強烈要求下他們將 Steve Jobs 迎回了蘋果教繼續擔任教主,當然教主也帶回了他所創的那套曠世奇功 NeXTStep 作為日后蘋果橫行天下的武功 Mac OS 的基礎,如果你有研究過 Mac 的心法你不難發現在他們的招式中常常會有 NS 的 prefix 像是 NSString,這個 NS 所指的就是繼承于 NeXTStep,在教主回歸蘋果教后,經過了幾年的發展再次將蘋果教推向了新的高峰,推出的許多劃時代的神兵利器像是 iPod、iPhone、iPad,蘋果教利用這些神兵利器打下了一片大大的江山,成為微軟派最大的勁敵,但在作業系統領域上的唯一一套武功就是 Mac OS,也就是這個門派最基本的心法武功。

其他門派像是 Linux 門也是一股勢力,這個門派的武功與蘋果教的 Mac OS 同樣都是由一個上古時代就存在的門派 Unix 演變而來,這個上古時代也就是本文一開始提到在還沒有『連猴子也能學會用電腦』這個概念出現前,那個被少數人所寡佔的世界,這個門派心法的特性就像是我們前面提到的工程師可以利用各種由作業系統本身或是應用程序本身所提供的招式,加上自己的想法組合出最適合自己的武器,因此 Linux 及 Mac OS 皆繼承了這個傳統,但是 Linux 門情況比較特殊的是,雖然他是一個門派但是本身有非常多不同的勢力,這些勢力自己每天互相打來打去不亦樂乎,造成無法將槍口一致對外,大家自己閉門造車一直重複打造別人已經有的武功,因此發展始終無法達到一個高峰,但是一直以來他在伺服器領域的令人驚艷,也讓 Linux 在這塊領域有著他不可取代的地位。

回到武功心法

前面說到,這個世界的改變是由于『連猴子也能學會用電腦』這個概念的帶入,但是這個概念在每個門派的實作方式是不一樣的,例如說微軟派為了將這個心法發揮到極致,將自己的心法改造的與上古時代完全不同,拋棄了那些使用指令操縱一切的心法,取而代之的是使用許多不同的武器(軟體)來應付不同的對象(檔案),因此基本心法(作業系統)不再是重點,而是一個隨時可以替換掉的東西(隨時可以重灌),你只要保留你的檔案,重灌你的作業系統后再把這些武器裝上去就可以用了,這個過程不知葬送了多少宅男的青春,但也讓他們有當好人幫正妹修電腦的機會,但是因為如此,微軟派的心法失去了原本上古流傳下來的傳統,你無法使用招式(指令)來操作各種不同的武器(軟體、程序),因為這些武器現在開始彼此是不相往來,GUI 上的所有程序無法互相溝通。

你可能會問這有什麼影響?我告訴你影響可大了,人使用電腦的目的就是提高工作效率,在程序無法互相溝通的情況下,程序必須仰賴人的操作才有辦法工作,因為你無法寫一些綜合巨集來完成複雜大量的工作,以微軟的例子來說,會使用 VBA 腳本的人工作效率會是一般人的 n 倍,因為你可以完全的操控你的作業系統,就像你使用 VBA 可以完全的自動化 Excel 一樣,但是作業系統想要做到這個層次,必須仰賴著一個統一的執行環境來管理這些程序,這個目標也是之前程序語言領域的 Sun 想要在他們的工作站做到的事情,也就是 Java,但是那是另一段故事我們先暫且不談,這樣的影響對工程師來說,就是 “什麼都看不到”,現在微軟派武功心法全部都蒙上了一層馬賽克,因為所有的東西都是被包裝過的,相對的工程師們無法去真正的了解這套武功心法,你想要做的事情如果超出了武器(軟體)能應付的范圍,你只能放棄,也是因為包裝的太好,在發生問題想要 Debug 的時候你根本看不到作業系統層面的問題,只能按下那個回報給微軟的按鈕,因此在微軟派以這樣的概念全力發展 GUI 的歷史后,取而代之所捨棄的就是這個 “問題”,我把問題用雙引號包起來的原因是因為,對一般使用者來說這并不算是個問題,因為他們感受不到,我相信這或許也是微軟的成功原因之一。

Linux 門則是把原先上古時代的傳統發揮的淋漓盡致,但就像我前面提到的,Linux 門自己的內戰打的不亦樂乎,當你踏入了 Linux 門之后,你會發現常常當你想使用 Linux 上面所需要的武器 A 的時,他會告訴你你必須先有武器 B 的 1.13 版,然后武器 B 的 1.13 版必須先有裝備 C 的 2.01 版,然后裝備 C 的 2.01 版需要 Linux 心法的 1.03 版,然后結果你發現你在用的是 Linux 心法 2.0 版,因此雖然 Linux 門繼承了上古 Unix 門的良好傳統,讓你可以像高手般的打造自己的武功,也可以完全的掌控整個作業系統,但是常會因為這些武器的相依性給搞瘋,還沒用到武器,就先被武器給弄死了。

再談 GUI

所以你大概可以體會,GUI 開始算是一個作業系統的分水嶺,他讓每個門派的心法看起來變得很不一樣,微軟派的設計讓你看不到作業系統層面的東西,因為東西幾乎都是被包裝好的,但是你可以在微軟派的 windows 系列武功上使用相對良好的 GUI,但是由于微軟派的 GUI 設計是跟底層綁在一起的,因此有時候 GUI 的崩潰也讓系統一起崩潰了,就出現了傳說中的藍白畫面,Linux 門的設計非常開放,你可以隨時取用串接你想用的心法,但是在 GUI 方面就差強人意,大部分是一些看起來就像是山寨微軟派或蘋果教的產物,當然現在來說有些表現較為優異的像是 Ubuntu 之類的,但用過就知道還是有差,而蘋果教正好是取其兩家之長,一個擁有高度 usability 的 GUI 介面加上可以自行設計的武器系統,Mac OS 感覺就像是上古流傳下來的神器再用對武器施法的卷軸衝到 +10 那樣強大,在 Mac OS 上使用繼承于教主所開發的心法 NeXTStep 的進化版本 Cocoa,這套心法提供了一個統一的作業系統執行環境,所有基于 Cocoa 心法所研發出來的新武器都有了統一的介面,這個統一的介面讓你可以 100% 的控制所有的程序,而且 Mac OS 本身就已經提供了完整的開發環境給所有的工程師,反觀在 Linux 門缺乏這個在 GUI 上統一的介面,因此他們的 GUI 看起來就挺杯具,而微軟派的 Windows 系列在從 Vista 以后希望打造出一個完全建構于新心法 .NET 框架的環境來達成像是統一介面的環境,但是由于其設計哲學上的差異他們還是有差異,而且 .NET 心法的一個致命傷就是仰賴著使用者必須自行去更新 .NET 版本,如果他沒有更新成適合的版本那你所開發的武器可能他就沒有辦法使用。

后記

其實是簡短的故事整理,對于使用 Mac 或是 PC 的來寫程序比較好,其實兩派各有說法,個人淺見只是文化上的差異,一個最簡單考慮的重點就是你想開發哪個平臺上面的軟體,那麼你最好就使用該平臺來開發,你想開發 Windows 上面的應用程序,那麼趕快安裝 Visual Studio.NET,你想開發 Mac 上面的程序那就趕快買臺 Mac 安裝好你的 XCode,當然,你也可以考慮 Java 來開發跨平臺的程序,但是用過都知道在 GUI 的顯示在不同平臺上還是會有差異的,那如果是開發 Web 的程序來說,個人淺見如果你是使用 PHP、Ruby、Python 等程序語言,那麼 Unix-base 的環境還是比較適合你,因為你必須常常去追蹤你的 Application 在系統的運行狀況來做效能的調教或是 Debug,而這是在 Windows 平臺上的相對弱項。

已經看過太多的戰文在討論 unix 好還是 windows 好,其實就像我說的是文化上的差異,微軟的文化是以一般使用者為出發點而設計的平臺,如果是由一個 Unix 的工程師來設計一個軟體,他可能會開始先設計一個文字介面的核心,然后才加上一層 GUI 的皮,這樣這支程序才可以為其他程序設計師來自動化操作,因為 Unix 的哲學是以程序設計師為出發點,反觀 Windows 工程師會傾向于先做出一個使用者操作的畫面,然后才去寫核心部分,對于 99.999999999% 的使用者不寫程序的 Windows 這是很正常的事。另外 Windows 跟 Unix 最大的差異還是在資訊透明度,Windows 上核心底層的東西必須仰賴微軟更新后才會修復,因為你很難去看到底層的原始碼,而 Unix 由于開放的關系你可以隨時進入底層去找出錯誤來修正他,但這也不算是 Unix 就比較好的觀點,因為這單純是設計理念的不同,Windows 傾向于我幫你處理所有底層的問題,你專心寫你的程序就好,而 Unix 則是我讓你看光光,你不開心就改沒關系,因此兩派信徒互相嘲笑對方,其實只是設計理念上的差異罷了。

雖然我用 Mac,但我相信比爾蓋茲在 Windows 上寫程序還是會把我震住的,所以我從不嘲笑 Windows 的工程師,所以請依照你的需求挑選你的平臺就好,如果要開發微軟的程序,那麼用微軟的環境還是最無痛的!

歡迎關注我的公眾號(同步更新文章)DoNet技術分享平臺

閱讀原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272643.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272643.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux創建虛擬聲卡,Pear BIOS 安裝和配置指引

Pear BIOS 安裝指引Pear BIOS是一套硬件模擬系統,操作系統可以在這套模擬硬件上運行。Pear BIOS可以讓用戶同時安裝多套操作系統,使用時可以選擇任何一套操作系統啟動。在傳統電腦系統上,操作系統可以識別并必須識別硬件;而在這套…

左右值

C/C語言中可以放在賦值符號左邊的變量,即具有對應的可以由用戶訪問的存儲單元,并且能夠由用戶去改變其值的量。左值表示存儲在計算機內存的對象,而不是常量或計算的結果。或者說左值是代表一個內存地址值,并且通過這個內存地址&am…

關于 ASP.NET 內存緩存你需要知道的 10 點

緩存機制的主要目的是提高應用程序的性能。作為 ASP.NET 開發人員,你可能會意識到 ASP.NET Web 窗體以及 ASP.NET MVC 可以使用 Cache 對象緩存應用程序的數據。這通常被稱為服務器端數據緩存,并且常作為框架的內置功能。雖然 ASP.NET Core 中并沒有這樣…

linux git刪除的文件怎么還原,從Git倉庫中恢復已刪除的分支、文件或丟失的commit...

從Git倉庫中恢復已刪除的分支、文件或丟失的commit在使用Git的過程中,有時可能會有一些誤操作比如:執行checkout -f 或 reset -hard 或 branch -d刪除一個分支結果造成本地(遠程)的分支或某些commit丟失可以通過reflog來進行恢復,前提是丟失的…

兩張趣圖助你理解狀態碼的含義~

HTTP狀態碼(HTTP Status Code)是用以表示網頁服務器HTTP響應狀態的3位數字代碼。我們可以通過查看HTTP狀態碼來判斷服務器狀態,常見的有404 、502等;但是其他不是很常見的狀態碼都代表什么狀態呢?下面有兩張有趣的圖片…

java 自定義注解以及獲得注解的值

1.自定義注解 import java.lang.annotation.*;Documented Target(ElementType.FIELD) Inherited Retention(RetentionPolicy.RUNTIME ) public interface MyAnno {/*** 是否能為null* return*/boolean isCanNull() default true;/*** 是否能為空字符串* return*/boolean isCanE…

linux列出管道,lsof列出的管道列表示什么意思?_linux_開發99編程知識庫

文件不僅以流形式打開。 其中一些是在 lsof 手冊中列出的:FD is the File Descriptor number of the file or:cwd current working directory;Lnn library references (AIX);err FD information error (see NAME column);jld jail directory (FreeBSD);ltx shared l…

CSS一些實用的技巧

css 字體簡寫規則當使用css定義字體時你可能會這樣做:font-size: 1em;line-height: 1.5em;font-weight: bold;font-style: italic;font-variant: small-caps;font-family: verdana,serif;事實上你可以簡寫這些屬性:font: 1em/1.5em bold italic small-ca…

linux openssh升級8.1,Centos7利用rpm升級OpenSSH到openssh-8.1p1版本

由于近期安全事故頻發,打算把機器OpenSSH升級到最新版本,找了一圈,發現分享的rpm包就到7.4版本,最新版已經到8.1.p1,所以博客自編譯一個openssh-8.1p1的rpm包進行分享。檢查環境:[roottest]# ssh -VOpenSSH…

《HTTP權威指南》 – 11.驗證碼和新鮮度

服務器應當告知客戶端能夠將內容緩存多長時間,在這個時間內就是新鮮的。服務器可以用這兩個首部之一來提供信息: Expires(過期)Cache - Control(緩存控制)Expires首部 規定文檔“過期”的具體時間&#xff…

產品經理必備神器推薦

歡迎關注我的公眾號(同步更新文章):DoNet技術分享平臺閱讀原文工欲善其事,必先利其器,作為最追求極致體驗的產品經理群體,手里有一件趁手的法器,工作起來才會有一種享受般的快感,最近…

野火linux底板設計,野火STM32F767套件(底板+核心板)

一、兌換形式1、電子芯吧客注冊用戶均可通過免費申請與硬件兌換兩種方式進行申請試用2、免費申請形式為用戶通過分享試用活動至好友,換取申請板卡一次試用資格3、硬件兌換方式為用戶捐贈一塊閑置板卡至電子芯吧客,換取申請板卡一次試用資格4、免費申請渠…

c++ builder xe2 (Embarcadero rad studio) 遠程調試 同樣適用于 delphi 遠程調試 教程

c builder xe2 (Embarcadero rad studio) 遠程調試 同樣適用于 delphi 遠程調試 教程轉載于:https://www.cnblogs.com/LittleTiger/p/5039245.html

JS關閉瀏覽器 (不彈出提示框)

如果網頁不是通過腳本程序打開的(window.open()),調用window.close()腳本關閉窗口前,必須先將window.opener對象置為null,否則瀏覽器(IE7、IE8)會彈出一個確定關閉的對話框。<script…

天大18年c語言離線作業,天大18秋C語言程序設計在線作業一輔導資料.docx-資源下載在線文庫www.lddoc.cn...

天大18秋《C語言程序設計》在線作業一輔導資料.docx天大 18 秋C 語言程序設計 在線作業一1、C 2、D 3、D 4、D 5、D 一、單選題共 40 題,100 分1、設有int a 31,0,3,3,4,5,6,7;,則 a21的值是 A3B5C6D4正確答案是C2、設 int a21,b021; 語句 printf“x,dn”,a,b;的輸出…

AM335x(TQ335x)學習筆記——GPIO關鍵驅動移植

或按照S5PV210學習秩序。我們首先解決的關鍵問題。TQ335x有六個用戶按鈕,每個上、下、剩下、對、Enter和ESC。我想開始學習S5PV210當同一,寫輸入子系統驅動器的關鍵問題要解決,但瀏覽driver/input/keyboardgpio-keys.c,大體上看下…

程序員偷偷深愛的9個不良編程習慣

新媒體管家下面這9個編碼習慣,雖然在編程規則中是被駁斥的,但我們很多人就是會不由自主地使用它們。我們曾經都做過這樣的事情:當媽媽不注意的時候,偷偷地吃糖果零食,然后導致有了蛀牙。同樣的,我們都違背過…

emacs c語言 自動補全,Emacs 與 C/C++ 代碼自動補全

基于 Emacs 的 company 模式并配合 semantic 文法分析器,實現 Emacs 的 C/C 代碼自動補全。關于 Emacs 的代碼自動補全代碼自動補全的功能,對于使用 Emacs 寫代碼的程序員而言其重要性不言而喻的,但是搜了一些所謂的 “Emacs 完美的 C 自動補…

linux(fedora) 下dvwa 建筑環境

linux(fedora)下dvwa組態 1.下載httpd,dvwa,mysql,mysqlserver, php-mysql,php 除了dvwa 這是外界進入下一官方網站。該服務通過休息install 安裝 yum install httpd, mysql, php-mysql, php 假設出現安裝的問題。能夠先yum search xxx 2.安裝完之后,檢查安裝的狀…

c語言一元二次方程 ii(分支嵌套),C程序設計——求一元二次方程算法

要求:從鍵盤上輸入一元二次方程的三個參數,編程判斷并求一元二次方程的實根(a,b,c均為整數)算法分析:一元二次方程是只含有一個未知數,且未知數的最高次數是二次的多項式方程。一元二次方程經過整理都可化成一般形式axbxc0(a≠0)&…