程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Swift能取代Objective-C嗎?

Swift能取代Objective-C嗎?

編輯:更多關於編程

Swift能取代Objective-C嗎?。本站提示廣大學習愛好者:(Swift能取代Objective-C嗎?)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift能取代Objective-C嗎?正文


我文章的中間是,以 Apple 今朝給出的各類材料來看,這說話不會替換失落ObjC,它不是下一代的ObjC。它有許多缺陷,使得它缺乏以做年夜型項目。這些缺陷使得,Apple 本身都沒有應用它做 Mac/iOS 的 app。我不消除來歲後年它有很年夜改良,但至多如今還沒有這眉目。

是以,假如你會ObjC,你不須要去看它。

但你假如問我這說話對通俗開辟者主要不主要,我說主要,可以明白告知你這一點--它是 Apple 在 WWDC 向全球推出的重磅說話我怎麽能說它不主要? 它下降了入門的門坎。使得年夜量的 JS, Python, Ruby用戶會應用 Apple 的技巧為其開辟法式。它的感化,和 Core Data, Interface Builder 一樣,能讓你疾速寫出一個能用的法式來。但假如你想稍做些正派事,就心有馀力缺乏了。所以和 Apple 本身的 Mail 也不會去用 Core Data,本身 iPhoto 不會去用 UICollectionView,稍複雜的 App 都不會去用 Interface Builder 一樣,Apple 本身不會用 Swift。它只是給三五小我的小團隊能敏捷做出能用的法式,讓年夜公司能疾速做些 Prototype 罷了。

====

有人說它相當於 C#,或是相當於 Scala 對 Java 的改良,我可以告知年夜家,Swift 不是如許的說話。它更像一種讓人疾速做原型的 toy language。

請求 Apple 發佈下一代 Objective-C 說話的呼聲早就有了,每一年寫數萬字 OS X 評論的 Ars Technica 兩年前就寫了 Apple 應當去做一個說話,Objective-C without C 而且應用更古代的功效和更短的 API,和對主動類型推導的支撐,文章見 OS X 10.8 Mountain Lion: the Ars Technica review 。

但 Apple 明顯沒有賣力看待這門說話。很顯著的,他們基本不想把ObjC給調換失落。而且按Apple的作風,假如他們把Swift當ObjC的將來來看待,確定會有一到兩個iOS/Mac運用應用Swift改寫。(好比Apple 昔時要砍 Carbon,起首做的就是把 Finder 重寫了)。

從說話角度,Swift 有太多的缺陷:

它的尺度庫太差,只要Dictionary, Array 和 String及數這幾種數據構造,連個 Set 都沒有。想用其余?你照樣要用 ObjC 的。是的,當你用原生數據構造時,速度比ObjC快。然則那僅限於那幾個。 它沒有任何對異步/同步編程的支撐。它沒法綁定應用 Grand Central Dispatch,是以任何正派的收集運用基本沒法編寫。

它沒有任何的掩護機制(private, protected),一切的 method和 variable 都是全局可見的,這明顯不克不及知足正派工程項目標須要。

只能和 ObjC 互動。假如你想正派地應用C或許C++,你得寫 ObjC 的 wrapper。這根本限制了你應用年夜量的 C/C++ 庫函數。
沒有方法 catch Objective-C 的 exception,假如一旦出了 exception,你的 App 立馬就崩了。這也根本限制了你應用許多 ObjC 舊代碼庫。

Chris 在設計這門說話時,可以顯著地看到他的短視。這也很正常,他是一個做編譯器的,不是做說話研討的。所以這門宣稱支撐函數式編程的說話,基本沒有年夜多函數式說話都廣泛存在的功效:

唯一的支撐在lazy,閉包,及簡略的函數說話函數(如map, filter)。這ObjC中都能做
沒有pattern matching
類型推導差不多和 C++11 差不多,沒有應用hindley milner
從下面這些特色看, Apple對其的定位僅是給對ObjC頭疼的開辟者下降進修曲線所推出的玩具說話。後面五條中的每條,根本都是致命的,是以 Apple 本身的項目也不會應用。做個晚期 proof of concept的 prototype 到是可以的。

我可以想象,完成上 Swift 是很簡略的(LLVM很成熟了,寫個新說話愈來愈簡略,好比只需幾步就可以做個小說話: 1. Kaleidoscope: Tutorial Introduction and the Lexer),固然有能夠 Apple 未來會處理這些成績使得其真正適用。但如今來看,Apple 其實不願望 Swift 來替換 Objective C。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved