《Swift與Cocoa框架開發》作者Paris Buttfield-Addison:你的程式設計生涯可以從Swift開始!(圖靈訪談)
Paris Buttfield-Addison是Secret Lab的聯合創始人、移動應用工程師,以及遊戲設計師。Secret Lab是一家遊戲開發公司,他們致力於使技術變得簡單又有趣。Paris擁有計算學博士學位,同時也是一位歷史學士。他之前作為產品經理為矽谷的Meebo公司工作,這家公司在2012年被Google收購。他撰寫了一系列關於iOS和遊戲開發的技術書,其中包括《學習Objective-C與Cocoa框架》,《iOS遊戲開發攻略》,《Swift與Cocoa框架開發》,以及《Unity移動遊戲開發》。
問:作為一位歷史專業的學士,你是怎麼變成一位iOS高手以及遊戲開發專家的?
除了學習中世紀曆史外,我還有其他幾個計算專業的學位(榮譽學位以及博士學位)。我發現學習歷史的背景讓我對科技的理解和很多人都不一樣,我認為歷史很有趣。
問:在Swift 2.0之後,《Swift與Cocoa框架開發》這本書是否過時?書中有沒有哪些地方需要修改?
Swift 2.0有一些語法變化,但是這門語言的哲學卻沒有任何改變。《Swift與Cocoa框架開發》仍然很有用,如果出現任何過時的地方——我們會釋出一個針對這本書的變更日誌,當你用Swift 2.0進行程式設計時,這份日誌會告訴你有哪些地方和印在書中的程式碼不同,我們會在不久之後把這份變更日誌釋出在我們的部落格上(http://secretlab.com.au/blog/)。同時我們也在籌備另外一本書,叫做《學習Swift》,這本書是最新的,並且覆蓋了Swift 2.0的內容。
問:在你看來,開源會對Swift的生態環境以及它和Android的關係造成什麼影響?
我認為變化不會太大。上一個蘋果開發者語言Objective-C在iOS出現之前是非常晦澀的,而Swift吸取了很多經驗。我認為,如果說開源Swift會帶來任何變化的話,那就是人們可能會開始用Swift來寫伺服器軟體,這樣Swift就會形成一個更大、更好的社群。
我不認為這件事對於iOS和Android的關係會造成影響;現在來看,Java是一種很老的語言,甚至可以說是一種遺留語言,而Swift是現代的。如果Google把Android環境更新為現代化的語言(比如Swift)會是一件很酷的事——事實上,Google已經有了一種現代語言(Go),只是現在還沒把它用在Android上!
問:Swift從其他語言那裡吸取了哪些成分?你最喜歡Swift的哪些特性?
Swift從Rust和Python這樣的語言中借鑑了很多東西。我最喜歡的Swift特性是它在內在安全性方面做出的努力;要想用Swift犯錯並不容易,因為它強制執行了很多“優秀風格”。
Swift的設計初衷就是成為一門安全的語言。C語言中的許多缺陷(比如意外使用null指標)都很難在Swift中遇到。Swift非常重視強型別化,除了一些極為特殊的情況之外,它是不允許物件為null的。
問:為什麼很多公司還沒在生產環境中應用Swift?
因為Swift是嶄新的,而且正在經歷改變。Swift 2.0已經發布,我懷疑(但無法確定)蘋果不會再改動很多了,這就意味著Swift會被更多移動開發者用在他們的產品應用中。就像位元程式碼一樣,App Store自己會為下載或購買應用的使用者編譯和連線應用,所以可以說Swift對於未來應用來說是至關重要的。
問:Swift在未來會徹底取代Objective-C嗎?你建議初學者先學Objective-C還是先學Swift?
對於我們來說Swift已經完全取代Objective-C了!對於真正的開發者來說,這種替代隨時都可能發生。這是重要的一步。對於初學者來說,現在已經沒有必要再去學Objective-C了!
Objective-C曾經是一門功能非常強大的語言。它與C++的主要區別是它是一種動態語言。在任何一門物件導向的語言中,都需要將函式繫結到它們處理的具體資料,而這一繫結要麼在編譯程式碼時進行,要麼在執行時進行。C++使用靜態繫結,這會提高執行時效能,但降低了靈活性。Objective-C採用動態繫結,它要稍慢一些,但大大增強了語言的靈活性。
然而,Objective-C也有自己的問題。因為它是以C語言為基礎的,所以它從父語言那裡繼承了大量古怪的特性,比如前處理器和指標運算。這些功能儘管非常強大,但會降低程式碼的可讀性和安全性。蘋果公司在保持Objective-C的現代化方面做得非常出色,但即使是這門語言的死忠粉也認為這門語言有些過時了。
於是Swift應運而生了。Swift是一門新的語言,旨在讓iOS和Mac應用程式的開發變得更輕鬆、更快速、更安全。它的設計目標是更容易掌握,且在防範程式設計師錯誤方面比Objective-C做得更好;事實上,蘋果公司將它描述為“沒有C的Objective-C”。因為Swift是用LLVM(Objective-C使用的工具集)生成和編譯的,而且使用了Objective-C執行時,所以我們可以編寫一個同時使用C、Objective-C和Swift的App。
問:在學習Swift之前,是否有必要學習C語言?
不需要!你可以把Swift作為開始,這是一種偉大、有趣、簡單,而且安全的語言。當你想要理解程式的內在工作方式時,你可以稍後再學習C語言。
問:一位iOS開發高手需要掌握什麼樣的知識框架?
我也會做很多設計——構建好的移動應用(或者現今任何形式的應用)需要好的設計感!學習設計吧,因為設計能夠更好地影響他人。
更多精彩,加入圖靈訪談微信!
相關文章
- [英]《Swift與Cocoa框架開發》作者Paris Buttfield-Addison:你的程式設計生涯可以從Swift開始!(圖靈訪談)Swift框架程式設計圖靈
- 《Swift與Cocoa框架開發》作者Paris Buttfield-Addison有獎問題徵集(圖靈訪談)Swift框架圖靈
- Swift與Cocoa框架開發Swift框架
- 《Swift基礎教程》作者Boisy Pitre訪談問題有獎徵集(圖靈訪談)Swift圖靈
- Swift Review總結一:從 Swift Style 開始SwiftView
- 開源先驅魏永明:開源可以給你的(圖靈訪談)圖靈
- 《JavaScript Web應用開發》作者Nicolas Bevacqua訪談問題徵集(圖靈訪談)JavaScriptWeb圖靈
- 譯後訪談《Scratch少兒趣味程式設計》作者阿部和廣(圖靈訪談)程式設計圖靈
- 《R包開發》作者Hadley Wickham訪談問題有獎徵集(圖靈訪談)圖靈
- 《Flask Web開發》作者Miguel Grinberg訪談問題有獎徵集(圖靈訪談)FlaskWeb圖靈
- Swift開發開源框架KatanaSwift框架
- 有獎 |《Lua設計與實現》作者codedump訪談話題徵集(圖靈訪談)圖靈
- 《黑客與設計》作者David Kadavy訪談問題有獎徵集(圖靈訪談)黑客圖靈
- 《JavaScript快速全棧開發》作者Azat Mardanov訪談問題有獎徵集(圖靈訪談)JavaScript全棧圖靈
- 《程式碼本色》作者Daniel Shiffman:藝術家也程式設計(圖靈訪談)程式設計圖靈
- Microlern for Swift mac/程式設計學習開發SwiftMac程式設計
- 《釋出!》作者Michael Nygard:質疑軟體開發最基本的假設(圖靈訪談)圖靈
- 《從零開始學Swift》學習筆記(Day 65)——Cocoa Touch設計模式及應用之選擇器Swift筆記設計模式
- 《從零開始學Swift》學習筆記(Day 63)——Cocoa Touch設計模式及應用之單例模式Swift筆記設計模式單例
- 《Erlang程式設計(第2版)》作者Joe Armstrong訪談問題有獎徵集(圖靈訪談)程式設計圖靈
- 《黑客與設計》作者David Kadavy:我要解構設計的配方(圖靈訪談)黑客圖靈
- 《從零開始學Swift》學習筆記(Day 52)——Cocoa錯誤處理模式Swift筆記模式
- 《Docker開發實踐》作者曾金龍:迅雷雲的Docker開發實踐(圖靈訪談)Docker圖靈
- [英]《釋出!》作者Michael Nygard:質疑軟體開發最基本的假設(圖靈訪談)圖靈
- 30天從零開始學習SwiftSwift
- 《Java程式設計師修煉之道》作者Ben Evans訪談問題有獎徵集(圖靈訪談)Java程式設計師圖靈
- 《R包開發》作者Hadley Wickham:資料結構“神童”(圖靈訪談)資料結構圖靈
- [英]專訪《寫給大家看的設計書》作者Robin Williams(圖靈訪談)圖靈
- 鍾冠賢:iOS開發之路(圖靈訪談)iOS圖靈
- 程式設計師:開始程式設計生涯的5個建議程式設計師
- 《Java 8函數語言程式設計》作者Richard Warburton訪談問題有獎徵集(圖靈訪談)Java函數程式設計圖靈
- 《Android系統服務開發》作者金大佑訪談問題有獎徵集(圖靈訪談)Android圖靈
- 《JavaScript Web應用開發》作者Nicolas:恰巧,愛好變職業(圖靈訪談)JavaScriptWeb圖靈
- 《CSS設計指南》作者Charles Wyke-Smith訪談問題有獎徵集(圖靈訪談)CSSMIT圖靈
- 《我的第一本程式設計書》作者平山尚,訪談問題有獎徵集(圖靈訪談)程式設計圖靈
- 《認知與設計》作者Jeff Johnson:UI/UX設計的所以然(圖靈訪談)UIUX圖靈
- 《Python Web開發:測試驅動方法》作者Harry Percival訪談問題有獎徵集(圖靈訪談)PythonWeb圖靈
- 《從零開始學Swift》學習筆記(Day 1)——我的第一行Swift程式碼Swift筆記