Swift 是一個程式語言, 當初設計的目的就是 Apple 用來取代 Objective-C 用來開發 macOS iOS 等系統使用。

 

Objective-C 是一個歷史悠久的語言, 賈伯斯在1998 年創立NeXTSETP 就把該語言做為主要開發語言, 一直到 NeXT Software 併入 Apple 之後, OS X 一直使用該語言做為主要開發語言。

 

Objective-C 為一 OOC 語言, 當初設計是要做為 C 語言的完全子集合, 也就是說 C 語言在完全不修改的情形下, 就可和Objective-C 混用。事實上 Obj-C 在編譯階段是先轉換成C語言, 再由C語言的編譯器完成執行檔。可以說Objective-C C 是緊繫在一起。

 

但正是因為這種關係, Apple 在發展 Obj-C , 就會有一定程度的限制, 如在記憶管理, 指標, 物件, 資料類型限制等。舉例來說, Swift 原則上所有的變數, 預設都禁止存放 nil ( 就是其他語言的null), 用來減少可能的程式錯誤(這就是常見的 iOS 程式因計設不良而閃退主要原因之一), 但受限於 C 相容性, int 就會在宣告時就會是有預設值的, 而不是要求開發者去指定其值。這種特性與類似的功能, 在微軟的 C# JavaScript, 是早就有的特性, Objective-C 受限於C相容性, 一直無法實作, 但在Swift , 是完全沒有問題的。

 

但另一方面, 因為沒有了限制, 許多在 Objective-C , 只能由 NS 程式庫實作的特性, 也漸漸納到了語言本身, 如在 Objective-C , 字串我們幾乎都用 NSString 而不是 C語言中的 char[] 字串, 但在Swift 中有提供 String 類型, 而不需用到 NSString 這也讓開源的 Swift 未來有機會發展到其他平台, Apple 也將語言核心 Open Source 將核心物件移至語言庫中, 表示未來 Swift 也可以實作在後台的程式, 目前己得到 IBM 等公司的支持, 目前己可運行在 Linux , 甚至提供了一個Web Send Box 讓大家透過網頁就可以學習 Swift

 

 

arrow
arrow

    shenfive 發表在 痞客邦 留言(0) 人氣()