Re: [問題] Mac OS跟Linux有什麼不同?

作者: merckhung (小貓排店長)   2014-09-24 04:15:37
作業系統的角度來說:
1) OS X 跟 GNU Linux, 都是 UNIX-like 的 "作業系統".
2) BSD 是一個 UNIX-like 的 "作業系統" 與 "核心".
3) 有名的 BSD 作業系統, 像是 FreeBSD, OpenBSD, ......etc.
4) FSF 發明了 GNU, 這裡泛指你在 GNU Linux 用到的程式, 例如, gcc, ls, rm, mkdir ....etc.
從作業系統核心, 的角度:
5) Linus跟社群, 發明了 Linux, 它是一個 kernel 核心.
6) GNU + Linux = GNU Linux 成為一個完整的作業系統.
7) OS X 的核心是 Darwin, 剩下的部分 (ls, rm, mkdir....etc.) 從 FreeBSD 演化而來.
8) Linux 核心可以俗稱"第一代"設計, Darwin 核心在學術上被稱 Microkernel, 可以俗稱是第二代.
簡單說, 不管細節運作,
OS X = 你可以當它是 Darwin (Mach) 的骨頭 + BSD 皮.
GNU Linux (RedHat, Ubuntu, Arch....) = 可以說 Linux 的骨 + GNU 的皮.
從圖形界面來說:
OS X = 其背後是 Jobs 離開蘋果後 NextStep 的產品. Jobs 回蘋果後 NS 變成 OS X.
Apple 沒有公開 NS source code, 但其他的作業系統核心, 工具程式等都有.
但有一個模仿 NS API 的 OpenStep 專案, 但是目前已經沒有再發展.
BTW, OS X 下層有一個 Quartz, 是一個 2D 繪圖 engine.
GNU Linux = 底層一般通常是 X-Window. OS X 的底層不是 X-Window, OS X 可以跑
X-Window 的程式, 只要你安裝 XQuartz 就可以跑.
GNOME, KDE, 等 App 可否跑在 OS X 上, 理論上可以, 相關 Library 要
裝齊就是真的. 用 Macport or Homebrew 裝齊.
在 X-Window 上, 銜接到 GNOME or KDE 那些 App 之間的.
也有一個繪圖 engine, 通常是 Cairo.
最後回答你的問題:
基本上小弟約 15, 14 年前開始玩 Linux, 那時都是管 Server, telnet 的時代.
後來玩 KDE, GNOME/GTK 的 App. 有一段時間都在玩 Window Manager 看哪個做得順眼.
中文化做得好. 那時候就下決心拋棄 Windows, 改用 Linux Desktop.
套件都是 Slackware, RedHat, Fedora, Debian, Gentoo, Ubuntu 這樣一路玩上來.
大家說得對, Linux 都是大功能有, 但是小問題不斷, 要 tune 要 config.
Word 有軟體可以開, 可以編輯, 但是格式會有點跑掉. 存檔後回 Windows 大亂.
PPT 有軟體可以開, 可以編輯, 但是格式會有點跑掉. 存檔後回 Windows 大亂.
諸如此類的. 而且 殺手級的 App, Linux 通常沒有.
反觀 Mac OS X, Photoshop, Lightroom, Painter, MS Office......etc. 都有.
雖然重點是, 你荷包要拿出來付. 但, 像大家說的, 有人把關軟體品質, 真的很重要.
所以我大約 2010 年左右開始切換到 Mac OS X, 為什麼呢?
1) 幾乎 Linux 上可以跑的程式, Mac OS X 都可以跑.
2) Mac OS X 上不能跑的 Linux 程式, 通常都底層 Kernel 的設計有關, 這時候,
安裝個 Virtual Machine 就能解決這問題. 例如 VMware or Parallels.
3) 基本上 GNU Linux 雖然我剛剛說它是 UNIX-like, 但其實 Linux 是偏中性.
BSD 剛剛也說了是 UNIX-like, 但因為歷史變遷, 終究有自己的特色.
所以 Linux 其實是 BSD-Like, 同時又是 UNIX-Like (SYSV) 的中間部分超集合.
4) So, Linux 上的 App, 重新從 Source Code 編譯後, 要跑在 OS X 的機會很大.
但如果是直接 Linux 的 App 可執行的, 要直接在 OS X 跑, 目前好像是沒聽過.
(或許有我不知道而已, 但我其實沒什麼興趣, 因為重新編譯就可以了)
Windows 的 App, 安裝 WINE 就行了, 很大機會可以跑. 有人連遊戲都可以跑了.
關於編譯器,
1) Linux 預設用 GNU C Compiler, 簡稱 GCC.
2) Mac OS X 以前也是用 GCC. 10.8 以前.
3) 關於預設有沒有安裝, OS X 確實是要安裝 XCode, 及 command line tools
4) Linux 也不見得裝好就有. 總之還是要安裝一下, 或是很 lucky 就有了.
5) Mac OS X 10.8, 10.9 開始, 已經不用 GCC 了, 而是改用 LLVM.
LLVM 有一個前端是為了跟 GCC 相容, 可以 user 比較感覺不出差異, 但
內容上是完全不一樣.
6) 未來 Linux 目前有人在搞, 但目前暫時還沒有聽到由 GCC 轉 LLVM 的大事.
7) FreeBSD 已經有聽說 12(?) 版, 要拋棄 GCC, 改用 LLVM.
8) Linux 沒轉的原因應該是太多 App, 還有核心都用到 GCC 很多特別功能.
實務上有困難. 有聽過 kernel 已經可以用 LLVM 編, 但是是特例.
學習 Linux 的角度來說的話,
1) 學習 Linux 應用軟體開發, 可以考慮買 MAC + VM 就好.
2) 學習 Linux kernel or driver 的話, 最好是直接買一檯電腦灌 Linux.
3) 只是單純使用 Linux, 又買了 Mac, 這好像有點怪怪的.
※ 引述《Neisseria (Neisseria)》之銘言:
: Key point: OS X 和 Linux 是不同的作業系統
: OS X 以前有通過 Unix 認證,但是整個目錄結構和 Linux 很不一樣
: Linux 也不是 Unix,頂多就是 Unix-like
: 但是操作方式和 Unix 相通,所學得的技巧可以交互使用
: 如果對於 Unix 和 Linux 想多了解,可以爬一下維基
: 然後,看你想接觸 Unix 或 Linux 的那一部分
: 才能夠知道到底能不能用 OS X 取代 Linux
: 如果是想學習基本的指令操作,或是學習 shell script
: 那麼,基本上是相通的,像是 ls, cd, find, grep 等等,大部分都有
: 只是部分指令的參數不同,要稍微記一下
: 然後,像 Emacs 和 Vim 這種終端機底下的 editor 使用起來沒什麼差別
: 如果是想學 Perl 或其他的直譯式語言
: 不同系統間的差異性,基本上都被隱藏起來了
: 那麼,使用 OS X 和使用 Linux 差別就不大
: 如果是 C 或 C++ 的話,系統間的差異會比較大一點
: 然後,就像之前網友提到的,OS X 的 GCC 其實是 llvm,跟 GNU 的 GCC 不同
: 如果是想學習系統管理,那不同的系統差異就很大了
: 不用的 Linux 發行版間都不相同了,和 OS X 的差異更大
: 這時候,就要針對想學的系統下去實際的使用
: 就像要考 RHCE 總不會用 Ubuntu 來學吧
: Linux 上的軟體當然無法直接在 OS X 上使用
: 像是 MacPorts 和 Homebrew 的做法都是抓原始碼下來重新編譯
: 只是都把流程包裝得很好,才會有那種可以直接使用的錯覺
: 很多人買 Mac 來用,是因為不需要處理一些瑣事
: 像是不用安裝驅動模組,不用切磁碟分割等等
: 而在 Linux 上,很多都要 DIY
: 如果你覺得這些 DIY 的過程也是一種知識
: 那當然還是要實際去用 Linux 才學得到
: 不要再相信 OS X 等於 Linux 這種事情了
: 這就跟拔獅子鬃毛會長頭髮一樣
: ※ 引述《oftisa (oo)》之銘言:
: : 聽說OS X也是用UNIX核心製作的
: : 這樣說起來OS X是不是只是GNOME、KDE以外的第三個桌面選擇而已
: : 只是MAC的桌面程式並沒有開放自由軟體化而已?
: : 既然OS X使用UNIX核心,那應該可以直接安裝LINUX的程式吧
: : 聽說OS X預設安裝GCC
: : 假如可以直接安裝各種LINUX煞的軟體就太方便了
: : 也增加購買MAC的誘因了
: : 不知道大家對OS X跟LINUX有什麼看法
作者: tsungching (雲淡風輕)   2014-09-24 08:47:00
FreeBSD在10.0開始正式以LLVM取代GCC
作者: bitlife (BIT一生)   2014-09-24 08:51:00
BSD就是Unix,不是Unix like. 以前Unix兩大支系,一個是System V,一個是BSD
作者: tsungching (雲淡風輕)   2014-09-24 08:54:00
OpenStep是NeXT開發的API規範,而GNUStep是開放的計畫,仍在發展中,只是有點緩慢
作者: carylorrk (carylorrk)   2014-09-24 09:54:00
原來 Darwin 是 Macrokernel,我只知道 L4clang 支援 Linux 完整性還遠的很。除此之外跟 license也有關係。 GNU 某種程度有點排他,其他人也想逃離XD
作者: kira925 (1 2 3 4 疾風炭)   2014-09-24 10:26:00
LLVM與GCC不是互斥關係 你要說的是clang吧
作者: HamalAri (哈馬‧阿里)   2014-09-24 19:27:00
有一些發行板已經換 clang 了,有些永遠不會換
作者: HZYSoft (PCMan)   2014-09-25 01:30:00
還有差在一個是 micro-kernel,一個不是
作者: rusynth (ru + synth)   2014-09-25 14:35:00
Darwin的XNU是hybrid kernel,跟Windows NT一樣。因為效能的問題,現在PC沒有商業化的純microkernel為核心的作業系統(特殊用途的可能有)。Linus雖然自稱Linux 也是hybridkernel,但是大家依舊都把它歸類為monolithic kernel XD

Links booklink

Contact Us: admin [ a t ] ucptt.com