Mac OS X 10.6.3 的 Kernel 基本上就是 BSD,你可以类比成 Linux。
众所皆知的,在 Unix 跟 Linux 的世界里,程式大部份都是用 C 或是 C++ 开发的。两个 Linux 上最多人使用的桌面环境,KDE 是用 C++ 写的,而 GNOME 是用 C 开发的。Linux 的 Kernel 最主要是用 C 写的。
那为何 Apple 却用 Object-C 作为主要程式的开发语言?即使用 C 语言开发,你还是可以把程式写成物件导向,GNOME 就是一个经典的例子。如果嫌用 C 写物件导向的程式太麻烦,C++ 可以把一切事情搞定。为何用 Object-C?
先不回答这个问题,让我看看 MacOS 跟 Linux 有多相似。
(1) MacOS 10.6.3 有 X window 系统,你只要执行 X11 这个 MacOS 内建的 X server,就可以了。
(2) 你也可以执行 Terminal 程式,内定的 shell,就是 bash。所有的 shell script,perl,python,Lua..... 通通不需要修改。
(3) MacOS 跟 Linux 一样 case sensitive,也是用 "/" 来分隔目录名称。
(4) gcc 跟 GNU utility 装完 MacOS 通通就在了,不需要另外安装。
(5) Linux 上 Open Source 的 project 大概重新编译一下就行,就算需要小修改,也早有 MacOS port 等在那里。
真正比较大的不同,是在系统目录的名称,及用户的的 home 目录,跟 Linux 不太一样。可以这么说,如果你想,你可以把 MacOS 当 Linux 来用。
所以答案是,为 Linux 开发的程式,很简单就可以被 MacOS 拿来用,反之为 MacOS 用 Object-C 开发的程式,却几乎不可能被 Linux 拿来用。即使 Linux 也有 Object-C 的编译器,你就算有 Source Code。可是在 Linux 的环境里,没有 Cocoa Framework。
Steve Jobs 有先见之明,知道世界上有很多人跟他一样聪明,如果 Apple 用大家常用的 C 或 C++开发,很多高手,一定会把 Apple 上的软体 port 到 Linux 上,只要模拟了 Cocoa 的界面,可以在 MacOS 上执行的程式,就可以在 Linux 上执行。具体的证明,有很多 KDE 及 GNOME 及 X window 上执行的软体,也可以在 Windows 上执行。
Apple 花非常大的人力,研发出一套非常屌,非常好的使用界面及视窗管理系统。就是因为使用 Object-C ,所以你喜欢,你就只能在 Mac 上用。Mac 的电脑卖得很贵(有时候是同级 PC 的两倍价钱),但是 Apple 就是吃定你,因为你只有这个选择,当然软体是无价的,贵有他的道理。
对了,我是要开发 iPhone 程式,又跑去搞 gcc 跟 GNU utility,这个太跳 tone 了,要赶快回去 K iPhone SDK。