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。
請先 登入 以發表留言。