擁抱Swift吧,Objective-C已經(jīng)是過去時(shí)

Swift 是蘋果在 WWDC2014 發(fā)布的一門編程語言,用來撰寫 OS X和 iOS 應(yīng)用程序。2010 年 7 月,LLVM 編譯器的原作者暨蘋果開發(fā)者工具部門總監(jiān)克里斯·拉特納(Chris Lattner)開始著手 Swift 編程語言的工作。除此之外,還有一個(gè) dogfooding 團(tuán)隊(duì)也大力參與其中。歷時(shí)四年,Swift 才得以與用戶見面。

蘋果宣稱,Swift 編程語言具有“快速、現(xiàn)代、安全、互動(dòng)”的特點(diǎn),它基于C和 Objective-C,而卻沒有C的一些兼容約束。Swift 采用了安全的編程模式和添加現(xiàn)代的功能來使得編程更加簡單、靈活和有趣,而它的界面則基于 Cocoa 和 Cocoa Touch 框架,展示了軟件開發(fā)的新方向。

Xcode Playgrounds 功能是 Swift 為蘋果開發(fā)工具帶來的最大創(chuàng)新,該功能提供強(qiáng)大的互動(dòng)效果,能讓 Swift 源代碼在撰寫過程中能實(shí)時(shí)顯示出其運(yùn)行結(jié)果。

作為資深蘋果開發(fā)專家的 Boisy G. Pitre 曾任 Siri 語音識(shí)別技術(shù)提供方 Nuance 公司 Mac 產(chǎn)品小組的資深軟件工程師,參與開發(fā)了語音識(shí)別軟件 Dragon Dictate。如今,他在情緒識(shí)別公司 Affectiva 任職移動(dòng)遠(yuǎn)景規(guī)劃師。

Boisy Pitre 十分青睞 Swift 語言,他還撰寫了一本針對(duì)初學(xué)者的《Swift 基礎(chǔ)教程》,從變量、類型、函數(shù)、閉包等基本概念入手,結(jié)合 Swift 示例,一步步指導(dǎo)讀者使用 Swift 開發(fā) App,他在書的最后還給出了一個(gè) App 開發(fā)全流程。

Swift 語言對(duì) iOS 和Android開發(fā)的影響

當(dāng)蘋果引入 Swift 時(shí),我就知道這門語言會(huì)在幾年之內(nèi)成為計(jì)算機(jī)語言版圖中的重要一塊。

我很難預(yù)測作為開源語言的 Swift 會(huì)如何影響 Android 開發(fā)。Google 在語言初創(chuàng)方面有 Go 語言,Go 對(duì)于 Android 來說就像是 Swift 之于 iOS。不過我很期待會(huì)有人用 Swift 寫 Android 應(yīng)用,這就像是有人用 Go 寫 iOS 應(yīng)用一樣。

一種語言會(huì)比另一種語言更成功嗎?各自平臺(tái)的語言一定會(huì)依附在它們本來的平臺(tái)上嗎?只有時(shí)間能告訴我們。但是蘋果開源 Swift 語言的決定肯定會(huì)讓各種變化朝更好的方向發(fā)展。

Objective-C 很不錯(cuò),但它已經(jīng)過時(shí)了

所有計(jì)算機(jī)語言都會(huì)從其他語言身上借鑒一些東西。對(duì)于 Swift 來說也是如此。從語法和存儲(chǔ)模型的角度上說,Swift 上就有很多 Rust 的影子。此外,Swift 對(duì)于安全的強(qiáng)調(diào)使其與C和 C++ 保持了一定距離,所以它們之間的共同點(diǎn)比較少。我相信蘋果很努力想讓 Swift 成為自己的語言。

目前 iOS 中的很多應(yīng)用框架都還是 Objective-C 的,調(diào)用的方式是使用橋接頭文件,但未來會(huì)出現(xiàn)更多基于 Swift 的框架,今后的調(diào)用也會(huì)變?yōu)楦雍啙嵉姆绞?,蘋果正在努力實(shí)現(xiàn)這個(gè)艱巨的任務(wù),因?yàn)樾枰D(zhuǎn)換的框架有很多。不過很快,我們就會(huì)看到專屬于 Swift 的新框架,這樣的框架在 Objective-C 中甚至都找不到同類。這種情況的發(fā)生也會(huì)對(duì) Objective-C 的后續(xù)使用造成很大的影響。

我認(rèn)為 Swift 在未來有可能會(huì)取代 Objective-C,沒有人知道這會(huì)花多長時(shí)間,但是應(yīng)該是在 5 年之內(nèi)。不過,計(jì)算機(jī)語言的生命很長,C語言到現(xiàn)在已經(jīng)有 40 歲了,所以 Objective-C 也不會(huì)徹底消失,它只是將在語言世界中所占的份額變得非常小。

Objective-C 是一門很不錯(cuò)的語言,但是它帶有C語言的遺留問題和包袱。對(duì)于編寫應(yīng)用來說,Objective-C 在未來會(huì)變得越來越脫節(jié)。拿我自己舉例來說,我現(xiàn)在就已經(jīng)不再用 Objective-C 來開啟任何一個(gè)新的 iOS 或 OS X項(xiàng)目了,對(duì)于新項(xiàng)目來說,我只使用 Swift 來開發(fā)。

如何選擇學(xué)習(xí)哪種編程語言?

初學(xué)者完全可以先學(xué)習(xí) Swift。Swift 最讓我青睞的特性是其語法的清晰度。用關(guān)鍵字“l(fā)et”建立一個(gè)常量變量,和用關(guān)鍵字“var”建立一個(gè)可變變量相比,很大程度上簡化了C/C++風(fēng)格的語法。用執(zhí)行命名參數(shù)可以清晰地寫函數(shù)(如 Objective-C),而創(chuàng)建和使用閉包也變得更簡單。

而對(duì)于已經(jīng)掌握一兩門編程語言的程序員來說,他的選擇則要取決于“已有的一兩種語言”是什么。如果這兩種語言是 Objective-C 和 Swift,或者C和C++,或者其中任何組合,為了挑戰(zhàn)思維,他可以去學(xué)習(xí)一種完全不同的語言,比如一種函數(shù)式語言(舉例:Scheme)。

C、C++、Objective-C 以及 Swift 這樣的命令式語言都遵循著相同的模型,學(xué)習(xí)同類語言很簡單,因此就需要讓自己多接觸不同的語言泛型。雖然他可能并不會(huì)用這種語言來寫應(yīng)用,但這會(huì)有利于全面開啟他對(duì)于計(jì)算機(jī)語言的理解。

有必要掌握所有 API 嗎?

關(guān)于何時(shí)接觸大量的庫和 API,以及是否需要學(xué)習(xí)所有 API 的問題,我經(jīng)常會(huì)用木匠的工具腰帶做類比。

大家可以想象一下,一個(gè)木匠的工具腰帶中會(huì)裝有所有你能想象得到的工具嗎?結(jié)論當(dāng)然是否,他只會(huì)裝上那些經(jīng)常使用的工具。當(dāng)他需要特殊工具的時(shí)候,他會(huì)來到卡車前或者庫房里,打開里面的大工具箱,把需要的特殊工具找出來使用,然后再把它放回去。而這種使用頻率往往在很長一段時(shí)間里也只有一次到兩次。

對(duì)于編程語言和 API 來說也是如此。雖然知道的 API 越多,你就越能更好地解決問題,但是有多少人能完整地了解所有的 API 呢?我的建議是,先比較完整地學(xué)習(xí)一門語言,然后再繼續(xù)研究這種語言的細(xì)微之處,也就是開始接觸這門語言中可以用來創(chuàng)建有用應(yīng)用的框架和 API。然后可以按照一定頻率(比如每周一次,每次3-5 小時(shí))去選擇一個(gè)新的 API 來學(xué)習(xí)它的功能。你可能并不會(huì)經(jīng)常使用這個(gè) API,但是你了解它,當(dāng)需要用到時(shí),你就會(huì)知道“從哪里把它取出來使用”。

iOS 開發(fā)專家的知識(shí)框架是什么樣的?

一個(gè)全面的 iOS 專家必須掌握這四樣?xùn)|西:

用來寫應(yīng)用的語言(Swift / Objective-C);

對(duì)創(chuàng)建軟件的工具的控制(Xcode);

關(guān)于 iOS 應(yīng)用基礎(chǔ)框架和 API 的強(qiáng)大知識(shí)儲(chǔ)備;

鑒別好的 UI 設(shè)計(jì)的能力。

他可能要經(jīng)歷很多應(yīng)用和上百小時(shí)的編程才能達(dá)到這個(gè)水平,每個(gè)應(yīng)用都有自身的要求和需要的 API。只要你寫的應(yīng)用越多,就能越廣地接觸到各式蘋果框架,UI 設(shè)計(jì)技巧也會(huì)越來越好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,608評(píng)論 4 61
  • 在喧鬧過后,你可否聽過安靜的交響,那是我們聽不見的聲音在默默的共鳴,不要嫌棄太多的庸俗,世事無常,不要太多的抱怨,...
    l安閱讀 239評(píng)論 0 0
  • 暑假的核心 英語聽力學(xué)習(xí)(說英文的自信)(英語的接觸)(通過91外教學(xué)習(xí)英語口語) 準(zhǔn)備FRM(培訓(xùn)班) 看moo...
    魔劍小白閱讀 217評(píng)論 0 1
  • 有句話說的好,痛苦來自你清醒卻無能為力的現(xiàn)狀。 一個(gè)人最彷徨的時(shí)候是什么時(shí)候?來自他人最輝煌的時(shí)候。 我不否認(rèn)我是...
    小要咩閱讀 326評(píng)論 1 0
  • 從小到大經(jīng)歷過一些會(huì)讓我落淚的感動(dòng)場面,今天偶爾想起一次,小學(xué)四年級(jí)數(shù)學(xué)老師把我們?nèi)喽几袆?dòng)哭的事。 我竟然笑了。...
    筱阿誠閱讀 249評(píng)論 0 0

友情鏈接更多精彩內(nèi)容