非商業轉載請註明做譯者、出處,並保留本文的原始連接:http://www.ituring.com.cn/article/205611程序員
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/| e9b49d8ef7816e77c1d19efe698550cb6 |)。同時咱們也在籌備另一本書,叫作《學習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開發高手須要掌握什麼樣的知識框架?
我也會作不少設計——構建好的移動應用(或者現今任何形式的應用)須要好的設計感!學習設計吧,由於設計可以更好地影響他人。