《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設計技巧也會越來越好。
更多精彩,加入圖靈訪談微信!![](https://i.iter01.com/images/99e915f73c3f952b132e1004620a90b8d3eaa1a20e62d28f0ea4a6ccbe296abb.jpg)
相關文章
- 《矽谷之火》作者訪談
- 圖靈訪談系列之一:陳世欣談產品經理與社群圖靈
- [譯] Rust 2018 已經發布……但它到底是什麼呢?Rust
- 業務和IT分離的時代已經過去! - OSKAR
- 業務和IT分離的時代已經過去? - OSKAR
- Objective-C 基礎教程第五章,複合Object
- android經典原始碼,很不錯的開源框架Android原始碼框架
- 緬懷AI之父圖靈,談論人工智慧電話的過去和現在AI圖靈人工智慧
- Objective-C 基礎教程第六章,原始檔組織Object
- Objective-C 基礎教程第九章,記憶體管理Object記憶體
- Objective-C 基礎教程第三章,物件導向程式設計基礎知識Object物件程式設計
- 圖靈訪談系列之九:CNode社群談Node.js技術及生態圖靈Node.js
- Objective-C和Swift混編ObjectSwift
- 羅梅洛夫婦專訪:談談過去二十年間的遊戲行業遊戲行業
- AI數學基礎之:確定圖靈機和非確定圖靈機AI圖靈
- 幽默:微積分可能已經過時 - AlejandroPiad
- 時代拓靈AI降噪SDK整合除錯過程AI除錯
- DataGirls社群創始人 Aislinn:做勇敢的少數派(圖靈訪談)AI圖靈
- Xcode Instruments除錯swift入門教程XCode除錯Swift
- Spring Boot 2.x基礎教程:使用JdbcTemplate訪Spring BootJDBC
- java學習——基礎語法篇(適合已經學過c++的人群)JavaC++
- 如何轉載部落格,很不錯的
- 很不錯的免費伺服器伺服器
- Swift之SQLite的基礎使用SwiftSQLite
- Xamarin圖表開發基礎教程(1)
- 談談JVM(基礎模型)JVM模型
- 談談Objective-C中的協議Object協議
- 談談Objective-C的物件拷貝Object物件
- GStreamer基礎教程05 - 播放時間控制
- Objective-C基礎之四(深入理解Block)ObjectBloC
- 工作中後端是如何將API提供出去的?swaggo很不錯後端APIGo
- 基礎設施即程式碼的過去和未來
- 帶你深入理解圖靈機--什麼是圖靈機、圖靈完備圖靈
- 圖靈訪談1025 | 美團攻城獅:用技術創造歷史,用走過的路寫一本書圖靈
- 2018 跟著圖靈聽課去(11月)圖靈
- 2019 跟著圖靈聽課去(4月)圖靈
- 2018 跟著圖靈聽課去(12月)圖靈
- 2018 跟著圖靈聽課去(8月)圖靈
- 2018 跟著圖靈聽課去(5月)圖靈