《Swift基礎教程》作者Boisy Pitre:Objective-C很不錯,但它已經是過去時(圖靈訪談)
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設計技巧也會越來越好。
更多精彩,加入圖靈訪談微信!
相關文章
- [英]《Swift基礎教程》作者Boisy Pitre:Objective-C很不錯,但它已經是過去時(圖靈訪談)SwiftObject圖靈
- 《Swift基礎教程》作者Boisy Pitre訪談問題有獎徵集(圖靈訪談)Swift圖靈
- 《SQL基礎教程(第2版)》作者MICK(ミック)訪談話題有獎徵集(圖靈訪談)SQL圖靈
- 《SQL基礎教程(第2版)》作者MICK:上帝存在於細節之中(圖靈訪談)SQL圖靈
- 《機器學習》作者Peter Flach訪談問題有獎徵集(圖靈訪談)機器學習圖靈
- 《演算法圖解》作者Adit Bhargava訪談問題徵集(圖靈訪談)演算法圖解圖靈
- 《特斯拉》作者卡爾森教授訪談問題有獎徵集(圖靈訪談)圖靈
- 《釋出!》作者Michael Nygard訪談問題有獎徵集(圖靈訪談)圖靈
- 《AngularJS權威教程》作者Ari Lerner有獎問題徵集(圖靈訪談)AngularJS圖靈
- 《圖靈的祕密》作者Charles Petzold:我眼中的圖靈機和Windows(圖靈訪談)圖靈Windows
- 《CSS揭祕》作者Lea Verou訪談問題有獎徵集(圖靈訪談)CSS圖靈
- 《鳳凰專案》作者基恩·金訪談問題有獎徵集(圖靈訪談)圖靈
- 圖靈訪談圖靈
- 有獎 |《人工智慧簡史》作者尼克訪談話題徵集(圖靈訪談)人工智慧圖靈
- 《JavaScript Web應用開發》作者Nicolas Bevacqua訪談問題徵集(圖靈訪談)JavaScriptWeb圖靈
- 《AngularJS 2 權威指南》作者Nate Murray訪談問題徵集(圖靈訪談)AngularJS圖靈
- 《跟阿銘學Linux》作者阿銘訪談話題有獎徵集(圖靈訪談)Linux圖靈
- 《禽獸心理學》作者Anna Salter訪談問題有獎徵集(圖靈訪談)圖靈
- 《圖靈的祕密》作者Charles Petzold訪談問題徵集圖靈
- 《R包開發》作者Hadley Wickham訪談問題有獎徵集(圖靈訪談)圖靈
- 《用資料講故事》作者Cole Knaflic訪談話題有獎徵集(圖靈訪談)圖靈
- 《使用者思維+》作者Kathy Sierra訪談問題有獎徵集(圖靈訪談)圖靈
- 《Flask Web開發》作者Miguel Grinberg訪談問題有獎徵集(圖靈訪談)FlaskWeb圖靈
- Jolt大獎獲獎作者Venkat Subramaniam訪談問題有獎徵集(圖靈訪談)圖靈
- 譯後訪談《Scratch少兒趣味程式設計》作者阿部和廣(圖靈訪談)程式設計圖靈
- 《演算法的樂趣》作者王曉華:“玩”過就是收穫(圖靈訪談)演算法圖靈
- 專訪《AngularJS 2權威教程》作者Nate Murray:程式碼更像圖表,需要多維度把握(圖靈訪談)AngularJS圖靈
- 《Swift與Cocoa框架開發》作者Paris Buttfield-Addison有獎問題徵集(圖靈訪談)Swift框架圖靈
- 有獎 |《Lua設計與實現》作者codedump訪談話題徵集(圖靈訪談)圖靈
- 《演算法新解》作者劉新宇訪談問題有獎徵集(圖靈訪談)演算法圖靈
- 《精益資料分析》作者Alistair Croll訪談問題有獎徵集(圖靈訪談)AI圖靈
- 《JavaScript快速全棧開發》作者Azat Mardanov訪談問題有獎徵集(圖靈訪談)JavaScript全棧圖靈
- 《七週七併發模型》作者Paul Butcher訪談問題有獎徵集(圖靈訪談)模型圖靈
- 《CSS設計指南》作者Charles Wyke-Smith訪談問題有獎徵集(圖靈訪談)CSSMIT圖靈
- 《黑客與設計》作者David Kadavy訪談問題有獎徵集(圖靈訪談)黑客圖靈
- 《社會媒體挖掘》作者劉歡教授訪談問題有獎徵集(圖靈訪談)圖靈
- [英文版]專訪《AngularJS 2權威教程》作者Nate Murray: Code is More of A Graph Than A Document (圖靈訪談)AngularJS圖靈
- 《智慧增長》作者蔣凡:智慧化催生新的經濟增長力(圖靈訪談)圖靈