侯睿哲
摘要:Swift是為高效而強(qiáng)大的編程而創(chuàng)建的一種新的編程語(yǔ)言,它結(jié)合了C和Objective-C的優(yōu)點(diǎn)并且不受C兼容性的限制,充分利用現(xiàn)代化的Mac.iPhone和iPad的硬件,讓編程的流程大大縮短和簡(jiǎn)化。作為一種新的編程語(yǔ)言,它主要用于編寫iOS和Osx的應(yīng)用。相較于其他編程語(yǔ)言,其采用了安全的編程模式,并添加了許多現(xiàn)代功能,使得編程更加輕松,靈活和有趣,因此具有廣泛的運(yùn)用前景。
關(guān)鍵詞:Swift;編程語(yǔ)言;特點(diǎn);應(yīng)用
中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)03-0062-02
1 Swift語(yǔ)言的產(chǎn)生與發(fā)展
Swift是由蘋果公司在2014年全球開發(fā)者大會(huì)(WWDC)首次推出的由蘋果員工Chris Lattner開發(fā)的一種新的編程語(yǔ)言[1]。在此之前,蘋果公司為了更好地推廣Swift語(yǔ)言,其研發(fā)人員在“語(yǔ)言編譯器、調(diào)試器和構(gòu)建框架?!钡确矫孢M(jìn)行了優(yōu)化改進(jìn),避免了Objective-C難學(xué)且使用不便的缺陷,讓Swift語(yǔ)言在編程中相較于其他編程語(yǔ)言更加輕松、靈活和有趣。正是開發(fā)人員做好了這些基礎(chǔ)工作,所以,Swift編程語(yǔ)言一發(fā)布,立即受到廣大程序員的歡迎和好評(píng)。為了推廣使用Swift,2015年12月4日,蘋果公司宣布其Swift編程語(yǔ)言開放源代碼,長(zhǎng)達(dá)600多頁(yè)的The Swift Programming Language可以在蘋果官方Github在線免費(fèi)下載。由于Swift廣泛用于蘋果操作系統(tǒng)(iOS,macOS,wa-tchOS和tvOS),實(shí)際上隨著蘋果公司業(yè)務(wù)的增長(zhǎng),其以“令人難以置信的速度”增長(zhǎng)。2017年下半年,已在RedMonk的語(yǔ)言排名中攀升了44位。在不到四年的時(shí)間里,Swift以創(chuàng)紀(jì)錄的速度達(dá)到了編程語(yǔ)言前10名[2]。
2 Swift語(yǔ)言的特點(diǎn)
2.1 Swift語(yǔ)法更加簡(jiǎn)潔
Swift不僅吸收了C語(yǔ)言和Objective-C等編程語(yǔ)言的優(yōu)點(diǎn),而且改進(jìn)了Objective-C難學(xué)且使用不便的缺陷,并且在使用過程中還不受C語(yǔ)言兼容性的限制,由于它采用了實(shí)時(shí)編譯、持續(xù)跟蹤和及時(shí)警告語(yǔ)法錯(cuò)誤、提供設(shè)計(jì)建議和內(nèi)存管理等安全的編程模式,且自身帶有預(yù)定義的庫(kù),使得Swift的API更容易閱讀和維護(hù)。它不僅具有C或C++等基礎(chǔ)編程語(yǔ)言的功能,還具備C#或JavaScript等高級(jí)語(yǔ)言的流暢性。以下代碼片段的比較和圖1、圖2示例能夠直觀地感受到Swift語(yǔ)法簡(jiǎn)潔和流暢性的特點(diǎn)。
Objective-C代碼:
const int count= 10;
double price= 23.55;
NSString *firstMessage = @"Swift is awesome. ";
NSString *secondMessage = @"What do you think? ";
NSString *message = [NSString stringWithFormat: @"o-/o @o-/o@". firstMessage, secondMessage];
NSLog(@"o-/o@", message);
Swift代碼:
let count = 10
var price = 23.55
let firstMessage = "Swift is awesome. "
let secondMessage = "What do you think?"
var message = firstMessage + secondMessage
print(message)
2.2 Swift的伸縮性強(qiáng)
Swift具有較強(qiáng)的可伸縮性,可以在Swift的基礎(chǔ)上發(fā)展為Swift/T.較好地避免了以前開發(fā)的Swift實(shí)現(xiàn)集中式單節(jié)點(diǎn)評(píng)估模型限制的缺陷[3]。Swift/T是一種新的數(shù)據(jù)流語(yǔ)言實(shí)現(xiàn),旨在實(shí)現(xiàn)極高的可伸縮性。其技術(shù)創(chuàng)新包括分布式數(shù)據(jù)流引擎,該引擎使用數(shù)據(jù)流驅(qū)動(dòng)的模式來平衡大量節(jié)點(diǎn)的程序評(píng)估。Swift/T擴(kuò)展了Swift數(shù)據(jù)流編程模型,使系統(tǒng)以分布式方式運(yùn)行,從而使系統(tǒng)在完成一項(xiàng)繁重的任務(wù)時(shí)效率更高,速度更快?!耙虼?,Swift/T提供了可伸縮的并行編程模型,以高效地表達(dá)高度并行的多任務(wù)應(yīng)用程序的外部層次[4]?!眻D3顯示了考慮Swift原有的單數(shù)據(jù)流結(jié)構(gòu)。
在以前,單節(jié)點(diǎn)Swift引擎將以小于500個(gè)任務(wù)/秒的速度將這些子函數(shù)發(fā)送到分布式CPU中執(zhí)行。與之相反,新的Swift/T架構(gòu)可以將外部循環(huán)的任務(wù)分配給許多CPU,每個(gè)CPU可以依次將內(nèi)部循環(huán)的任務(wù)分配給許多其他CPU。這個(gè)例子清楚地顯示了Swift/T如何使系統(tǒng)高效地運(yùn)行。我們的測(cè)試結(jié)果表明,對(duì)于一個(gè)lOOs的任務(wù),Swift/T可以將128k的處理器效率提高85%。
3 Swift語(yǔ)言的應(yīng)用分析
為了說明Swift編程語(yǔ)言的應(yīng)用前景和優(yōu)勢(shì),下面筆者將Swift編程語(yǔ)言與目前較為流行的Java語(yǔ)言進(jìn)行對(duì)比說明。一般情況下,使用Java進(jìn)行程序構(gòu)建時(shí),應(yīng)牢記5個(gè)主要目標(biāo):1)應(yīng)該使用面向?qū)ο蟮木幊谭椒?2)應(yīng)該允許同一程序在多個(gè)操作系統(tǒng)上執(zhí)行;3)應(yīng)該包含使用計(jì)算機(jī)網(wǎng)絡(luò)的內(nèi)置支持;4)應(yīng)該設(shè)計(jì)為可以安全地從遠(yuǎn)程源執(zhí)行代碼;5)通過選擇被認(rèn)為是其他面向?qū)ο笳Z(yǔ)言的組成部分,應(yīng)該易于使用。
而Swift的主要目標(biāo)是大大簡(jiǎn)化軟件工程流程:1)不需要分號(hào);2)沒有頭文件需要管理;3)鍵入推斷;4)函數(shù)是第一的要素,不會(huì)發(fā)生空指針異常;5)不允許C語(yǔ)言風(fēng)格的枚舉(int i=0;i
設(shè)計(jì)用戶界面:除語(yǔ)法語(yǔ)義外,Swift的最大優(yōu)勢(shì)之一是設(shè)計(jì)用戶界面。對(duì)大多數(shù)開發(fā)人員說,iOS開發(fā)的美麗之處在于代碼(.Swift文件)和用戶界面(.storyboards)的分離。首先,使用者可以選擇任何UI對(duì)象,然后將它們拖放到視圖中。然后建立源代碼和用戶界面之間的關(guān)系。按下控制鍵就可將其拖動(dòng)到“視圖控制器”圖標(biāo)。然后,就可以選擇一個(gè)彈出窗口以連接代碼。這就是Swift將UI與源代碼連接的方式。對(duì)于開發(fā)人員來說,設(shè)計(jì)用戶界面非常方便。
3.2 Java的優(yōu)勢(shì)
具有更多庫(kù):Java作為世界上五大編程語(yǔ)言之一,比Swift擁有更悠久的歷史。Swift是一種新興的語(yǔ)言,比Java更“現(xiàn)代”,但Java的優(yōu)勢(shì)在于它的歷史。作為經(jīng)過長(zhǎng)期開發(fā)的語(yǔ)言,Java比Swift具有更多的第三方庫(kù)。用戶可以找到幾乎所有需要的Java語(yǔ)言庫(kù)。世界上很少有像Java這樣的具有深度庫(kù)的語(yǔ)言。
更多支持:當(dāng)用戶嘗試構(gòu)建應(yīng)用程序時(shí),錯(cuò)誤和異常是不可避免的,這時(shí)就能顯現(xiàn)出Java的優(yōu)勢(shì)。編程過程中總會(huì)有一些細(xì)節(jié)錯(cuò)誤或編譯異常,用戶無法在書中找到具體的解決方案,然后就需要在線尋求支持。由于Java開發(fā)人員的數(shù)量遠(yuǎn)遠(yuǎn)超過Swift,因此用戶會(huì)發(fā)現(xiàn),獲得Java支持遠(yuǎn)比Swift容易得多。這可以幫助用戶更快,更輕松地解決問題。
3.3 兩者比較的意義
在現(xiàn)實(shí)中,兩種語(yǔ)言并沒有真正競(jìng)爭(zhēng)。如果要制作iOS應(yīng)用程序,則需要Swift。如果要進(jìn)行Android開發(fā),則選擇Java。兩種語(yǔ)言都有自己的用途和適用情況。但是,兩種語(yǔ)言的比較并非沒有意義。如今的移動(dòng)設(shè)備在我們的生活中占據(jù)了越來越多的空間,無論是Android還是iOS開發(fā)都很流行。如果開發(fā)人員想在它們之間進(jìn)行選擇,那么對(duì)他來說,了解它們之間的比較很重要。另一方面,如果開發(fā)人員只熟悉其中的一個(gè),那么比較可以幫助他更快,更輕松地學(xué)習(xí)另一個(gè)。
3.4 Swift前景分析
Swift作為一種新興的“現(xiàn)代”編程語(yǔ)言,它具有“語(yǔ)法、代碼簡(jiǎn)潔、可讀性強(qiáng),對(duì)用戶友好且易于學(xué)習(xí)”等諸多優(yōu)勢(shì),因此,對(duì)于初學(xué)程序開發(fā)的人員具有較強(qiáng)的吸引力。特別是Swift使用Playground編寫模式,使編寫語(yǔ)言代碼難以置信的簡(jiǎn)單和有趣。輸入一行代碼,結(jié)果立即出現(xiàn)。如果您的代碼通過一個(gè)循環(huán)運(yùn)行一段時(shí)間你可以看它在時(shí)間軸助理進(jìn)展。在時(shí)間線中的圖表顯示變量,組成一個(gè)視圖時(shí)繪制每一步,并能起到一個(gè)動(dòng)畫SpriteKit現(xiàn)場(chǎng)。當(dāng)你在Playground上完善你的代碼,只需將代碼運(yùn)行在項(xiàng)目中。有了Playground,用戶可以:設(shè)計(jì)一種新的算法,看其工作的每一步,創(chuàng)建新的測(cè)試,驗(yàn)證他們推動(dòng)到你的測(cè)試套件前工作,嘗試新的API來磨煉你的Swift的編碼技巧,同時(shí)可以消除不安全的代碼。
當(dāng)然,Swift作為一種不斷發(fā)展完善的編程語(yǔ)言,需要在用戶數(shù)量和庫(kù)的擴(kuò)展方面進(jìn)一步仍提高,同時(shí)亟待改變其特定的編譯環(huán)境等不足、缺陷和局限性,它不僅需要蘋果公司而且也需要更多的開發(fā)人員進(jìn)行持續(xù)的開發(fā),增強(qiáng)其兼容性。Swift/T是開發(fā)Swift的很好的例子。我們相信隨著開發(fā)人員貢獻(xiàn)的不斷加入,Swift將變得更加完善,因此具有廣泛的運(yùn)用前景。
參考文獻(xiàn):
[1] Beginning iOS 12 Programming Swift[EB/OL]. (2014-11-16).https://www.appcoda.com/learnSwift/.
[2] Developing an iOS Application for Value Estream Mapping withSwift[EB/OL]. https://pdfs. emanticscholar. org/7662/07e79d5b1882e3eclac98dbc270e59bb6078.pdf.
[3] Open Sourcing Programming Language - Case Apple Swift[EB/OL]. https://pdfs. semanticscholar. orq34e5/6a279f1175141314c3f8db8c6807d63lla33.pdf.
[4] Swift/T: Scalable Data Flow Programming for Many-Task Ap-plications[EB/OL]. http://citeseerx. ist. psu. edu/viewdoc/down-load?doi=10.1. 1.718.2708&rep=repl&type=pdf.