《Swift基礎教程》做者Boisy Pitre:Objective-C很不錯,但它已是過去時

非商業轉載請註明做譯者、出處,並保留本文的原始連接:http://www.ituring.com.cn/article/203600程序員

Boisy G. Pitre是一位資深蘋果開發專家,曾任Siri語音識別技術提供方Nuance公司Mac產品小組的資深軟件工程師,參與開發了語音識別軟件Dragon Dictate。MacTech雜誌「Developer to Developer」月度專欄做家,曾屢次在MacTech和CocoaConf等會議上發表技術演講。現任情緒識別公司Affectiva的移動遠景規劃師,領導團隊致力於將公司的表情分析技術遷移到移動平臺。Boisy著有《Swift基礎教程》一書。編程

圖片描述

問:你寫做《Swift基礎教程》的目的是什麼?安全

當蘋果引入Swift時,我就知道這門語言會在幾年以內成爲計算機語言版圖中的重要一塊。個人目標是以有趣而輕鬆的方式向讀者們介紹這門新語言,讓讀者們搶先起步,並在以後的學習中迅速加速。寫做這本書很具備挑戰性,由於這門語言能夠討論的東西實在是太多了,而我不想讓讀者們感到不知所措。這本書是我爲初學者設計的,從這個角度上說,這本書很成功。微信

問:你可否向讀者們介紹一下你在Affectiva從事的工做?閉包

固然。Affectiva是一家在數字體驗中引入情緒智力的科技公司。咱們的技術根據實時面部分析來判斷一我的的情緒狀態。我是這家公司的移動遠景規劃師,個人責任是把技術和移動世界鏈接起來。咱們已經實現了這個目標,而我如今正在努力提升移動平臺的技術,這些平臺包括iOS和Android。咱們有一個能夠供開發者使用的SDK,用於把情緒智能整合到他們的應用中。框架

問:在你看來,開源Swift會改變iOS的生態環境以及iOS和Android之間的關係嗎?編程語言

很難預測做爲開源語言的Swift會如何影響Android開發。Google在語言初創方面有Go語言,它對於Android來講就像是Swift之於iOS。我期待會有人用Swift寫Android應用,就像是有人用Go寫iOS應用同樣。一種語言會比另外一種語言更成功嗎?各自平臺的語言會依附在它們原本的平臺上嗎?只有時間能告訴咱們。可是話說回來,蘋果開源Swift語言的決定確定會讓各類變化朝更好的方向發展。函數

問:Swift從其餘語言中整合了哪些特性?其中你最喜歡的特性是什麼?工具

全部計算機語言都會從其餘語言身上借鑑一些東西。對於Swift來講也是如此。從語法和存儲模型的角度上說,我在Swift上能看到不少Rust的影子。很明顯,Swift對於安全的強調使其與C和C++保持了必定距離,因此它們之間的共同點比較少。我相信蘋果很努力想讓Swift聽從本身的主張,成爲本身的語言。對於將來,咱們拭目以待。學習

到目前爲止,我最喜歡的Swift特性是語法的清晰度。用關鍵字‘let’創建一個常量變量,和用關鍵字‘var’創建一個可變變量相比,很大程度上簡化了C/C++風格的語法。用執行命名參數能夠清晰地寫函數(如Objective-C),而建立和使用閉包也變得更簡單。

問:Swift在將來有可能會取代Objective-C嗎?

固然。可是沒人知道會用多長時間,可是我認爲應該是在5年以內。咱們很容易就忘記計算機語言的生命有多長(如今C語言已經40歲了)。Objective-C不會完全消失,可是我能預見在將來的某一個時刻,它在語言世界中的份額將變得很是小。

問:iOS中的不少應用框架都仍是Objective-C的,目前調用的方式是使用橋接頭文件,從此的調用是否有可能變爲更加簡潔的方式?將來是否會出現更多基於Swift的框架?

幾乎能夠確定是這樣的,並且我相信蘋果正在努力實現這件事。可是咱們得記住,這是一個艱鉅的任務,須要轉換的框架可不在少數。可是我相信這些工做不會花費過久的時間,並且咱們很快就會看到專屬於Swift的新框架,這樣的框架在Objective-C中甚至都找不到同類。這種狀況的發生確定會對Objective-C的後續使用形成很大的影響。

問:你建議初學者應該先學Objective-C仍是Swift?

確定是Swift。Objective-C是一門很不錯的語言,可是它帶有C語言的遺留問題和包袱。對於編寫應用來講,Objective-C在將來會變得愈來愈脫節。事實上,我如今不會用Objective-C來開啓任何一個新的iOS或OS X項目。對於新項目來講我只使用Swift來開發。

問:對於已經掌握一兩門編程語言的程序員來講,你認爲他們怎樣才能快速有效地學習一門新語言?

這取決於已有的一兩種語言是什麼。若是這兩種語言是Objective-C和Swift,或者C和C++,或者其中任何組合,爲了挑戰思惟,我會推薦你學習一種徹底不一樣的語言。像C, C++, Objective-C,以及Swift這樣的命令式語言都遵循着相同的模型,因此要學習同類語言很簡單。你必定要讓本身多接觸不一樣的語言泛型,因此我會推薦你學一種函數式語言,好比Scheme。雖然你不會用這種語言來寫應用,可是它會全面打開你對計算機語言的理解。

問:在學習編程語言的過程當中,你認爲何時候接觸大量的庫和API比較合適?對於某個平臺的開發者來講,他有必要掌握全部可能用到的API嗎?

我常常會用木匠的工具腰帶作類比。他的腰帶中會裝有全部想象獲得的工具嗎?不……只有那些常用的工具。當他須要特殊工具的時候,他會走到他的卡車前,打開放在裏面的大工具箱,而後使用某種工具一次到兩次,而後把它放起來。

對於編程語言和API來講也是如此。你沒法完整地瞭解全部API,可是你知道得越多,你就越能更好地解決問題。我會建議你先比較完整地學習一門語言,而後再繼續研究這種語言的細微之處,也就是開始接觸這門語言中能夠用來建立有用應用的框架和API。而後你能夠每週一次,選擇一個新的API,投入3-5個小時來學習它的功能。你可能並不會常用這個API,可是你知道它就在那,當遇到適當的時機時,你就會準備好用它來完成特定的任務了。

問:對於一位iOS開發專家來講,他的知識框架是什麼樣的?

一個全面的iOS專家必須掌握這四樣東西:

  • (1) 用來寫應用的語言(Swift / Objective-C);

  • (2) 對建立軟件的工具的控制(Xcode);

  • (3) 關於iOS應用基礎框架和API的強大知識儲備;

  • (4) 鑑別好的UI設計的能力。

要經歷不少應用和上百小時的編程才能達到這個水平。每一個應用都會帶來自身的要求和須要的API,因此你寫的應用越多,就能越廣地接觸到各式蘋果框架的,而你的UI設計技巧也會愈來愈好。


更多精彩,加入圖靈訪談微信!

圖片描述

相關文章
相關標籤/搜索