《Swift與Cocoa框架開發(fā)》作者:你的編程從Swift開始!
Paris Buttfield-Addison是Secret Lab的聯(lián)合創(chuàng)始人、移動應(yīng)用工程師,以及游戲設(shè)計師。Secret Lab是一家游戲開發(fā)公司,他們致力于使技術(shù)變得簡單又有趣。Paris擁有計算學(xué)博士學(xué)位,同時也是一位歷史學(xué)士。他之前作為產(chǎn)品經(jīng)理為硅谷的Meebo公司工作,這家公司在2012年被Google收購。他撰寫了一系列關(guān)于iOS和游戲開發(fā)的技術(shù)書,其中包括《學(xué)習(xí)Objective-C與Cocoa框架》,《iOS游戲開發(fā)攻略》,《Swift與Cocoa框架開發(fā)》,以及《Unity移動游戲開發(fā)》。
問:作為一位歷史專業(yè)的學(xué)士,你是怎么變成一位iOS高手以及游戲開發(fā)專家的?
除了學(xué)習(xí)中世紀(jì)歷史外,我還有其他幾個計算專業(yè)的學(xué)位(榮譽學(xué)位以及博士學(xué)位)。我發(fā)現(xiàn)學(xué)習(xí)歷史的背景讓我對科技的理解和很多人都不一樣,我認(rèn)為歷史很有趣。
問:在Swift 2.0之后,《Swift與Cocoa框架開發(fā)》這本書是否過時?書中有沒有哪些地方需要修改?
Swift 2.0有一些語法變化,但是這門語言的哲學(xué)卻沒有任何改變。《Swift與Cocoa框架開發(fā)》仍然很有用,如果出現(xiàn)任何過時的地方——我們會發(fā)布一個針對這本書的變更日志,當(dāng)你用Swift 2.0進行編程時,這份日志會告訴你有哪些地方和印在書中的代碼不同,我們會在不久之后把這份變更日志發(fā)布在我們的博客上(http://secretlab.com.au/blog/| e9b49d8ef7816e77c1d19efe698550cb6 |)。同時我們也在籌備另外一本書,叫做《學(xué)習(xí)Swift》,這本書是***的,并且覆蓋了Swift 2.0的內(nèi)容。
問:在你看來,開源會對Swift的生態(tài)環(huán)境以及它和Android的關(guān)系造成什么影響?
我認(rèn)為變化不會太大。上一個蘋果開發(fā)者語言O(shè)bjective-C在iOS出現(xiàn)之前是非常晦澀的,而Swift吸取了很多經(jīng)驗。我認(rèn)為,如果說開源Swift會帶來任何變化的話,那就是人們可能會開始用Swift來寫服務(wù)器軟件,這樣Swift就會形成一個更大、更好的社區(qū)。
我不認(rèn)為這件事對于iOS和Android的關(guān)系會造成影響;現(xiàn)在來看,Java是一種很老的語言,甚至可以說是一種遺留語言,而Swift是現(xiàn)代的。如果Google把Android環(huán)境更新為現(xiàn)代化的語言(比如Swift)會是一件很酷的事——事實上,Google已經(jīng)有了一種現(xiàn)代語言(Go),只是現(xiàn)在還沒把它用在Android上!
問:Swift從其他語言那里吸取了哪些成分?你最喜歡Swift的哪些特性?
Swift從Rust和Python這樣的語言中借鑒了很多東西。我最喜歡的Swift特性是它在內(nèi)在安全性方面做出的努力;要想用Swift犯錯并不容易,因為它強制執(zhí)行了很多“優(yōu)秀風(fēng)格”。
Swift的設(shè)計初衷就是成為一門安全的語言。C語言中的許多缺陷(比如意外使用null指針)都很難在Swift中遇到。Swift非常重視強類型化,除了一些極為特殊的情況之外,它是不允許對象為null的。
問:為什么很多公司還沒在生產(chǎn)環(huán)境中應(yīng)用Swift?
因為Swift是嶄新的,而且正在經(jīng)歷改變。Swift 2.0已經(jīng)發(fā)布,我懷疑(但無法確定)蘋果不會再改動很多了,這就意味著Swift會被更多移動開發(fā)者用在他們的產(chǎn)品應(yīng)用中。就像比特代碼一樣,App Store自己會為下載或購買應(yīng)用的用戶編譯和連接應(yīng)用,所以可以說Swift對于未來應(yīng)用來說是至關(guān)重要的。
問:Swift在未來會徹底取代Objective-C嗎?你建議初學(xué)者先學(xué)Objective-C還是先學(xué)Swift?
對于我們來說Swift已經(jīng)完全取代Objective-C了!對于真正的開發(fā)者來說,這種替代隨時都可能發(fā)生。這是重要的一步。對于初學(xué)者來說,現(xiàn)在已經(jīng)沒有必要再去學(xué)Objective-C了!
Objective-C曾經(jīng)是一門功能非常強大的語言。它與C++的主要區(qū)別是它是一種動態(tài)語言。在任何一門面向?qū)ο蟮恼Z言中,都需要將函數(shù)綁定到它們處理的具體數(shù)據(jù),而這一綁定要么在編譯代碼時進行,要么在運行時進行。C++使用靜態(tài)綁定,這會提高運行時性能,但降低了靈活性。Objective-C采用動態(tài)綁定,它要稍慢一些,但大大增強了語言的靈活性。
然而,Objective-C也有自己的問題。因為它是以C語言為基礎(chǔ)的,所以它從父語言那里繼承了大量古怪的特性,比如預(yù)處理器和指針運算。這些功能盡管非常強大,但會降低代碼的可讀性和安全性。蘋果公司在保持Objective-C的現(xiàn)代化方面做得非常出色,但即使是這門語言的死忠粉也認(rèn)為這門語言有些過時了。
于是Swift應(yīng)運而生了。Swift是一門新的語言,旨在讓iOS和Mac應(yīng)用程序的開發(fā)變得更輕松、更快速、更安全。它的設(shè)計目標(biāo)是更容易掌握,且在防范程序員錯誤方面比Objective-C做得更好;事實上,蘋果公司將它描述為“沒有C的Objective-C”。因為Swift是用LLVM(Objective-C使用的工具集)生成和編譯的,而且使用了Objective-C運行時,所以我們可以編寫一個同時使用C、Objective-C和Swift的App。
問:在學(xué)習(xí)Swift之前,是否有必要學(xué)習(xí)C語言?
不需要!你可以把Swift作為開始,這是一種偉大、有趣、簡單,而且安全的語言。當(dāng)你想要理解程序的內(nèi)在工作方式時,你可以稍后再學(xué)習(xí)C語言。
問:一位iOS開發(fā)高手需要掌握什么樣的知識框架?
我也會做很多設(shè)計——構(gòu)建好的移動應(yīng)用(或者現(xiàn)今任何形式的應(yīng)用)需要好的設(shè)計感!學(xué)習(xí)設(shè)計吧,因為設(shè)計能夠更好地影響他人。



























