2010/06/08

跟Objective-C相關的一些歷史

這篇是一些跟Objective-C相關的歷史,為什麼Objective-C是Mac與iPhone/iPod touch/iPad的主力開發語言?為什麼Cocoa中的類別名都加上NS在前面?Mac跟NeXT有何關係?看了下面的年代事記應該多少可以回答這些問題。

1972,Dennis Ritchie跟Ken Thompson在Bell Labs(貝爾實驗室),搞出了兩個東西,Unix跟C語言。


1976,Apple創立。 左Steve Wozniak(史提夫 沃茲尼克),右Steve Jobs(史提夫 賈伯斯)。


1980初期,Objective-C,以C為基礎,加入Smalltalk物件導向的觀念:另一個常拿來比較的語言C++,兩種設計理念有很大的不同。設計者是Brad Cox與Tom Love。在1986年,Brax Cox出書詳述Objective-C。

1984,Apple推出第一代Macintosh(麥金塔)電腦,簡稱Mac。


第一代Mac OS的畫面。


1988,被Apple踢出去的Steve Jobs另行創立NeXT公司,推出NeXT電腦,包括硬體、軟體(作業系統、開發環境)。NeXT電腦並沒有熱賣(你可能從沒聽過),但其軟體的部份被保留了下來。

軟體部分被稱為NeXTStep,包含:
1. 作業系統,以Mach為kernel,加上BSD所打造出來的unix-like作業系統。
2. 以Objective-C為主力開發語言與執行環境。
3. 物件導向的軟體開發套件(library、framework),當時不叫framework,而叫kit。主要的是AppKit與Foundation Kit。
4. 各種開發工具(Project Builder, Interface Builder)。
你可以猜到,這些東西都被之後的Mac OS X吸收繼承。

這是NeXTStep作業系統的畫面。


1994,NeXT與Sun共同制定OpenStep API標準,其中兩個重要的部分就是Foundation跟Application kit,此時開始使用字首NS。

NeXT自己的實作稱為OPENSTEP,軟體開發工具組當時大概叫做OpenStep developers toolkit;另外還有自由軟體的實作,名為GNUstep。

因為Mac OS X、iPhone SDK、Xcode可追溯到NeXT、NeXTStep,所以是以Objective-C為主力開發語言,所以程式碼中會出現NX與NS字樣。

1996,Apple買下NeXT,主要用意就是要以NeXTStep作業系統取代掉老舊的Mac OS。

1997,Steve Jobs重回Apple。

2001,推出Mac OS X。
而且OpenStep developers toolkit被重新命名為Cocoa。


這是Mac OS 7, 8, 9的畫面。


這是Mac OS X 10.6 Snow Leopard的畫面。


這是Mac OS X 10.7 Lion的畫面。


2003,Xcode,Apple的軟體開發工具組。

2006,Apple發表Objective-C 2.0,加入新功能,garbage collection垃圾收集、property屬性、dot syntax句點語法、fast enumeration快速列舉、Non-fragile instance variables。由Mac OS X 10.5與iPhone OS 2支援,iPhone OS沒有garbage collection。

2007.01,推出iPhone,其iPhone OS可說是Mac OS X的縮小版。


2007.10,Mac OS X 10.5 Leopard。

2008.03,釋出iPhone SDK。於是大家都可以開發iPhone軟體了。其中Cocoa的部份改稱Cocoa Touch,因應iPhone的觸控式操作介面,把AppKit換成UIKit。


2009.06,iPhone OS 3。

2010.04,iPad現身。iPhone SDK 3.2版以後也可以開發iPad軟體了。


2010.06,iPhone OS改名為iOS。iOS 4。

2011.10,iOS 5。

2 comments:

  1. http://www.meetgooya.com/815845/History-of-UI-OS-Design
    這份投影片,裡面有UI的歷史演進,包括MS DOS、MS Windows、Mac OS、UNIX/LINUX、X Window、GNOME、KDE、GTK、QT、IRIX、BeOS、NeXT、QNX,非常多的畫面,值得回顧一下。

    ReplyDelete
  2. Anonymous24/5/11 15:58

    寫的很棒。

    解決了很多疑惑

    謝謝

    ReplyDelete