據(jù)國外媒體報道,《連線》雜志日前撰文解析了蘋果新編程語言Swift的諸多優(yōu)勢。文章表示,由于這門語言易于上手,吸收了編譯型語言與解釋型語言的長處,而且有諸多蘋果產(chǎn)品為依托,Swift的普及速度會讓其他語言望塵莫及。
以下為《連線》“蘋果Swift將很快改變編程的三大理由”一文:
克里斯·拉特納(Chris Lattner)花了一年半時間打造了一套新的編程語言。他沒有向任何人提起這件事,甚至連他最親密的朋友和同事也不知道。
他利用晚上和周末的時間進行這項工作,從2010年夏天開始一直干到第二年年末,將這門編程語言的骨架搭建完畢,然后向公司高管透露了自己的秘密。這個項目得到了高管們的重視,數(shù)名資深工程師加入了進來。18個月之后,該項目成為了公司主要關(guān)注的對象,項目團隊規(guī)模擴大了不少。
拉特納工作的公司,就是蘋果。
這門語言叫做“Swift”。蘋果認為這是一個更快速、更有效開發(fā)iPhone、iPad以及Mac電腦軟件應(yīng)用的工具。今年6月2日,蘋果向公司外部的程序員發(fā)布了一個測試版本。即便是在這個時候,也就是在拉特納首次設(shè)想這門語言4年之后,它也只是在蘋果內(nèi)部圈子里產(chǎn)生了影響。拉特納在伊利諾伊大學香檳分校的研究生導師維克拉姆·艾德福(Vikram Adve)幫助他完善了Swift語言的基礎(chǔ)。和其他人一樣,艾德福對自己的學生花了這么長的時間打造一門新的編程語言這件事也感到吃驚。“蘋果公司口風很緊,克里斯真是貫徹了這一點,”艾德福笑著說。“我知道他在一個項目上花了很多時間,僅此而已。”
通常來說,像這樣面世的一款新編程語言,通常需要多年時間才能獲得大規(guī)模采用——即便有蘋果這種規(guī)模的科技巨頭支持也不例外。谷歌在2009年推出過一門名叫“Go”的語言。雖然這門語言的設(shè)計者在業(yè)內(nèi)鼎鼎有名,但它仍然沒有在全球范圍內(nèi)成為主流。
不過Swift就是另一回事了。等到今年秋天正式發(fā)布時,它可能會以前所未見的速度很快獲得程序員的青睞,甚至有可能超越Sun的Java語言,以及微軟的C#語言在20世紀90年代末與21世紀初的風頭。
Swift的部分優(yōu)勢在于,它是為普通程序員打造的。這門語言設(shè)計用來編寫最簡單的手機應(yīng)用,而且配有一個被蘋果稱之為“操場”(Playground)的智能工具。該工具提供了一種相當有效的“自學”編程方式。
此外,Swift之所以可能風靡起來,還有一個更直接的理由。在今天,成千上萬的開發(fā)者使用一種名叫“Objective-C”的語言,為iPhone和iPad打造應(yīng)用,考慮到蘋果設(shè)備的普及程度,這些程序員會一直開發(fā)此類應(yīng)用。而和Objective-C相比,Swift在很多方面提供了重大的改進,這意味著龐大的蘋果開發(fā)者社區(qū)肯定會在未來數(shù)月接受這種新語言。
Tiobe指數(shù)(這是一個用來衡量編程語言流行程度的指標)的編纂者、關(guān)注編程語言發(fā)展近15年的保羅·詹森(Paul Jansen)表示:“就谷歌Go來說,沒有什么真正的激勵因素來使用它。相比之下Swift可以提供這樣的激勵。”
到目前為止,即便使用的人數(shù)非常有限,在流行的編程網(wǎng)站GitHub上,與Swift相關(guān)的項目也超過了2400個。而且在本月,Swift在Tiobe全球編程語言熱門排行榜上排名第16。谷歌Go在2009年發(fā)布時的情況與之類似,不過在之后排名便下降了很多。但就Swift來說,詹森口中的激勵因素只會推高其排名。
Facebook的開發(fā)元老安德雷·亞歷山德雷斯庫(Andrei Alexandrescu)指出,考慮到Swift在蘋果產(chǎn)業(yè)鏈中獨一無二的核心地位,“只要不胡搞”肯定就不會失敗。何況這門語言的學習門檻非常低。“人們會搶著學習這門新語言,因為用它變成很容易,”詹森表示。“程序員可以用Objective-C,也可以用Swift,大部分人都將轉(zhuǎn)向Swift。”
不只是一門語言
拉特納負責監(jiān)督蘋果所有的開發(fā)工具——正是這些工具讓蘋果的工程師和外部的程序員為這家公司的電腦、筆記本、智能手機與平板電腦開發(fā)軟件。在艾德福的指導下,這位伊利諾伊大學香檳分校的研究生曾設(shè)計過一套名為LLVM的元編程工具。該工具是蘋果軟件開發(fā)主要工具Xcode的基礎(chǔ),后者最新版本的下載次數(shù)已經(jīng)超過了1400萬。簡單說,LLVM是生成并運行新應(yīng)用的一種方式,可以和所有編程語言配套使用。
拉特納在2005年加入蘋果。這之后蘋果用LLVM重塑了開發(fā)者使用Objective-C開發(fā)應(yīng)用的方式。5年后,拉特納又把LLVM作為Swift的基礎(chǔ)。拉特納拒絕了媒體的采訪,但在他的個人主頁上有對Swift演化過程的簡要介紹。不管這個長期項目多么與眾不同,實際上Swift還是要與蘋果現(xiàn)有的開發(fā)工具共同工作——雖說它提供了一種替代Objective-C的選擇。
換言之,Swift不光是一門編程語言。它與開發(fā)人員打造軟件所需要的所有東西都緊密地結(jié)合在一起。這里不光是指集成開發(fā)環(huán)境(IDE),也包括調(diào)試器這樣的其他工具。這些工具大多被蘋果開發(fā)者所熟悉。換言之,對成千上萬為iPhone、iPad以及Mac電腦開發(fā)應(yīng)用的程序員來說,Swift很容易上手。
還是要有充分的理由才能讓程序員從Objective-C轉(zhuǎn)投Swift,畢竟他們過去從未用過Swift。“我是第一個,也是唯一一個具備4年Swift編程經(jīng)驗的人,”拉特納在Twitter上寫到。學習這樣一門語言是需要犧牲一定時間的,這通常是個大障礙。為蘋果硬件開發(fā)了15年軟件產(chǎn)品的麥克·艾什(Mike Ash)說道:“只有很少一些語言能獲得足夠關(guān)注,大部分語言吸引使用者的時間都很長。”艾什現(xiàn)在正在鉆研公司的這門新語言。
好在拉特納和蘋果已經(jīng)給出了充分的理由。就其本身來說,Swift和C#、Ruby、Python等編程語言比起來沒有太多吸引力,但與Objective-C相比有很大的進步。后者的歷史可以追溯到上世紀80年代中期,平心而論不如更現(xiàn)代的編程語言易用。艾什表示:“許多人因為Objective-C和它那不常見的語法放棄了。Swift的語法更標準、更常見,這有助于吸引感興趣的人。”
對現(xiàn)在的程序員來說,Swift不僅更熟悉——它有“泛型”這樣的設(shè)計,也就是可以重復使用的基礎(chǔ)模組——而且還有用來避免程序員出錯的工具。它能提供一種叫做“推測輸入”的功能,憑借這種功能程序員就不用花費太多時間來定義所用變量的類型。艾什表示:“它可以提供很多幫助,可以更好地理解你在做什么,也能讓電腦幫助你把事情想得更清楚。它能讓程序員更有效率,用更短的時間完成更多的事情。”
還有就是“操場”,包括艾德福在內(nèi)的很多人都認為,這是該語言中最有趣的地方。
操場之中
按照拉特納個人主頁上的說法,“操場”是要讓編程“更具交互性更直觀。”他解釋稱,“操場”在很大程度上受到了蘋果設(shè)計師布雷特·維克多(Bret Victor)以及一個叫做Light Table的交互編程系統(tǒng)的影響。和Light Table類似,Swift的“操場”可以讓用戶在屏幕一側(cè)寫代碼,在另一側(cè)看到運行的效果。
在6月初蘋果開發(fā)者大會上介紹Swift的時候,拉特納演示了如何用“操場”實時修改一款游戲。簡單說,該工具可以向軟件中加入新代碼,而不用重新編譯或讓整個程序重啟。Light Table的創(chuàng)建者克里斯·格朗閣(Chris Granger)表示:“它可以把修改的東西注入到一個正在運行的進程中——放到正在運行的程序中。”
這樣做不僅是讓編程更容易,而且提供了一種更好的學習編程的方法——讓人人都學會這種技能。“希望更直觀有趣的編程工作可以吸引下一代程序員,并重新定義計算機科學的教學方式,”拉特納寫到。
Light Table做的事情和這差不多——而且可以用多種語言實現(xiàn)這一點,例如Python、Clojure和Javascript。但對格朗閣來說,“操場”更為實用,因為Swift為此進行了專門的優(yōu)化。他說:“因為他們控制了語言——這是他們創(chuàng)建的語言——他們的目標就是做到這一點。他們能做那些我們用其他語言無法做到的事情。”
這也是一個立竿見影的激勵因素。妨礙編程語言普及的一大因素就是程序員沒有時間去學習。“操場”則具有減少學習時間的能力。按照艾什的說法,“操場”現(xiàn)在還有些bug,但具備了讓編程更流暢的潛力。“一般來說,編程工作很耗時——要花時間看反饋——弄明白自己在做什么。但‘操場’提供的反饋是實時的,這可以吸引很多新人。”
速度
“操場”體現(xiàn)出了Swift的另一個優(yōu)勢,那就是反應(yīng)迅速。它編譯起來很快,這意味著從源代碼到可執(zhí)行應(yīng)用的轉(zhuǎn)變時間很短;編譯后出爐的應(yīng)用執(zhí)行起來也很快,這意味著程序可以在手機或平板電腦上高速運行。這也是Swift與其他編程語言不同的地方。
過去,像Objective-C和C++這樣的編譯型語言與Python、Ruby以及PHP這樣的解釋型語言兩者間存在區(qū)別。編譯型語言在寫完代碼之后,必須要等待編譯器將其轉(zhuǎn)化為可執(zhí)行的軟件。不過一旦這一工作完成,可執(zhí)行的軟件運行的速度很快。解釋型語言則可以幾乎實時地測試程序,但成品的運行速度沒有那么快。
Swift取長補短。這種新語言在開發(fā)和運行時不會犧牲速度。正如艾什指出的那樣,Swift“既對程序員友好,也對機器友好”。他表示:“具體的運行效果如何還要再看,不過到目前為止看上去還不錯。”
這一領(lǐng)域并非只有蘋果。Facebook也在通過“Hack”語言和“D”語言做類似的嘗試,谷歌則是“Go”語言,火狐瀏覽器的開發(fā)商Mozilla用的是“Rust”。從某些方面看,這些語言的發(fā)展都要快過Swift。Facebook已經(jīng)在使用“Hack”重建自己的大型網(wǎng)絡(luò)服務(wù),谷歌則使用“Go”改進內(nèi)部業(yè)務(wù)。
更重要的是,這些語言大多數(shù)都是開源的。這意味著它們背后的代碼可以被全世界免費使用。從理論上說,它們可以更輕松地在其他公司的設(shè)備或服務(wù)上運行。Swift并不開源——至少現(xiàn)在還不是——而且考慮到蘋果緊緊控制自己軟硬件產(chǎn)品的歷史,自然會有這家公司是否會限制該語言發(fā)展的擔憂。艾什表示:“有人擔心蘋果會限制該語言發(fā)展的方向——也就是能否撰寫跨平臺的代碼以及類似的事情。”
即便如此,Swift的普及速度恐怕也是其他語言無法企及的。艾什相信,蘋果最終會將Swift開源,而且他也相信該語言會在蘋果的控制之外發(fā)展壯大——因為該語言的開發(fā)者拉特納有著很深的開源情節(jié)。“有他在掌舵,我覺得他會做出正確的選擇”。在開發(fā)Swift之前,拉特納曾打造過一個叫做“Clang”的編譯程序。“Clang”就是開源的,現(xiàn)在被包括谷歌在內(nèi)的很多公司使用。
就算Swift被蘋果牢牢控制,它的影響可能也會超過近年來涌現(xiàn)的其他語言,而且它的普及速度可能也會快過現(xiàn)代歷史上所有的語言。這就是擁有iPhone、iPad以及Mac電腦的優(yōu)勢。
的確,Swift能做的事情,其他許多軟件也能做——有些甚至做得更好。Light Table甚至就有“操場”的替代品。
但Swift是獨一無二的。