蘋(píng)果在今年六月的WWDC大會(huì)上推出了Swift2.0,并宣布將于今年年底前開(kāi)放源代碼。而蘋(píng)果也在近日正式將Swift語(yǔ)言轉(zhuǎn)成了開(kāi)源編程語(yǔ)言,并將其放到代碼托管網(wǎng)站Github中以供更多開(kāi)發(fā)者共同開(kāi)發(fā)。蘋(píng)果公司高級(jí)副總裁克雷格·費(fèi)德里希最近接受了外媒的采訪(fǎng),對(duì) Swift 開(kāi)源這一行為進(jìn)行了說(shuō)明。
開(kāi)源的基礎(chǔ)
據(jù)悉,Swift的編程語(yǔ)言將在A(yíng)pache 2.0許可的基礎(chǔ)上推出,Apache 2.0也是微軟去年在.NET框架開(kāi)源時(shí)所使用的許可,軟件開(kāi)發(fā)者將可以對(duì)這款新編程語(yǔ)言根據(jù)自己的需要進(jìn)行修改。該代碼將被放在GitHub上托管,其中包括編譯器、LLDB調(diào)試器以及REPL命令行環(huán)境、標(biāo)準(zhǔn)核心庫(kù)以及代碼配套工程等。在Swift(包括開(kāi)源部分)中新加入了Swift軟件包管理器,該管理器將作為用于存儲(chǔ)Swift模塊的早期項(xiàng)目。
雖然其中的絕大部分都符合Apache許可標(biāo)準(zhǔn),但費(fèi)德里希表示,蘋(píng)果還提供了一種更高的許可運(yùn)行機(jī)制——如果開(kāi)發(fā)者在Swift上創(chuàng)建了代碼,而且其中的部分代碼是從Swift庫(kù)中調(diào)用的話(huà),開(kāi)發(fā)者將不必再提供該代碼的來(lái)源。
蘋(píng)果的工程師正在著手把Swift改為使用GitHub repos來(lái)以開(kāi)源的方式開(kāi)發(fā)語(yǔ)言。
“Swift將在GitHub上完成開(kāi)源工作,” 費(fèi)德里希說(shuō),“Swift團(tuán)隊(duì)正在加緊修改的工作進(jìn)程,其中也包括對(duì)Swift 3.0的開(kāi)發(fā),所有的工作進(jìn)展都會(huì)在GitHub上開(kāi)放。”
所以,Swift 3.0將不會(huì)再像今年6月公布Swift 2.0那樣在WWDC上得到大量關(guān)注,3.0將不會(huì)在WWDC 2016上出現(xiàn),開(kāi)發(fā)者更不會(huì)得到Xcode上的beta版。相對(duì)的,開(kāi)發(fā)者能夠在WWDC之前就拿到最新版的Swift語(yǔ)言,體驗(yàn)到下一代Swift的新變化。
盡管代碼將在GitHub上提供,但Swift社區(qū)同樣也是Swift.org的家。在這里,開(kāi)發(fā)者將能夠提交bug并使用bug追蹤系統(tǒng),也能夠使用郵件列表或是與Swift工程的博客(蘋(píng)果官方博客)進(jìn)行交流,獲取社區(qū)指南、Swift教程文檔或是開(kāi)發(fā)與API設(shè)計(jì)指南等。換句話(huà)說(shuō),你所能想到的任何開(kāi)源編程語(yǔ)言社區(qū)中所提供的服務(wù)這里應(yīng)有盡有。
將不僅限于支持OS X和Linux平臺(tái)
蘋(píng)果官方聲稱(chēng)Swift將不僅能夠支持蘋(píng)果自家的平臺(tái)還能夠支持Linux,而這正像蘋(píng)果在6月份的時(shí)候所承諾的那樣。這已經(jīng)涵蓋了大量的Swift開(kāi)發(fā)者(他們通常都會(huì)運(yùn)行OS X系統(tǒng))以及大部分的大眾開(kāi)發(fā)者(他們使用Linux的頻率要遠(yuǎn)高于一般用戶(hù))。蘋(píng)果的Linux工具包括全新的封包管理器、LLDB調(diào)試器以及REPL命令行環(huán)境。
至于Windows等其他平臺(tái),如果需求較多的話(huà),至少在一開(kāi)始蘋(píng)果將會(huì)依靠社區(qū)來(lái)提供支持。
“(對(duì)于Windows平臺(tái)的支持)在Swift開(kāi)源的初版中,這并不是我們所首要考慮的問(wèn)題,” 費(fèi)德里希說(shuō),“我們認(rèn)為對(duì)Linux和我們自家的平臺(tái)的支持才能夠?yàn)槌醢娲蛳乱粋(gè)很好的基礎(chǔ)。但是實(shí)際上,我們已經(jīng)具備了把Swift開(kāi)源移植到其他平臺(tái)的能力,LLVM、Clang以及LLDB這些Swift的基礎(chǔ)技術(shù)其實(shí)已經(jīng)完全可以移植到Windows平臺(tái)上。我認(rèn)為這是可以預(yù)見(jiàn)的——社區(qū)中的某個(gè)人——無(wú)論是微軟的領(lǐng)導(dǎo)者還是其他的人,早晚都會(huì)這樣去做。“
為何開(kāi)源?
Swift 開(kāi)源蘋(píng)果公司主要有兩個(gè)目的。第一個(gè)目的就是讓 Swift 編程更加通用、更加多樣化——除了蘋(píng)果平臺(tái)的應(yīng)用,開(kāi)發(fā)者也可以在其他項(xiàng)目中使用這個(gè)編程語(yǔ)言。
另外蘋(píng)果也非常有遠(yuǎn)見(jiàn),很有野心。費(fèi)德里希表示:“我們認(rèn)為未來(lái) 20 年 Swift 將成為編程的標(biāo)準(zhǔn)語(yǔ)言。我們認(rèn)為它將成為未來(lái)主要的編程語(yǔ)言之一。”
“一些開(kāi)發(fā)者,包括 IBM 的企業(yè)開(kāi)發(fā)者很早之前就開(kāi)始在 Swift 中開(kāi)發(fā)他們的移動(dòng)應(yīng)用,他們就希望能夠?qū)㈤_(kāi)發(fā)者開(kāi)發(fā)的東西、還有一些代碼等部署在云中。” 費(fèi)德里希說(shuō),“而我們認(rèn)為要想在這方面給他們提供支持的話(huà),最好的辦法就是開(kāi)源。”
而蘋(píng)果的另外一個(gè)目的則與教育相關(guān):當(dāng)開(kāi)發(fā)者花時(shí)間來(lái)學(xué)習(xí)Swift 時(shí)(或者教育工作者教授 Swift 使用方法時(shí)),蘋(píng)果希望這些技術(shù)能夠?yàn)楦嗳怂谩?/p>
“我們與教育工作者合作,很多教授都有意教授 Swift,因?yàn)樗且环N富有表現(xiàn)力的語(yǔ)言,能夠引入各種編程概念。Swift 開(kāi)源能夠讓教育工作者盡快地將其整合,讓它成為核心課程的一部分。”
在今年6月份,蘋(píng)果向開(kāi)發(fā)者了解他們過(guò)去一年使用 Swift 的體驗(yàn)時(shí),他們就發(fā)現(xiàn) Swift 的可傳授性強(qiáng)是它最大的賣(mài)點(diǎn)。Swift 不僅能夠用于交流編程創(chuàng)意,而且還能夠?qū)⑺南嚓P(guān)知識(shí)利用到更多場(chǎng)合。
“當(dāng)你第一次學(xué)習(xí)時(shí),通常會(huì)出現(xiàn)的問(wèn)題是:你的代碼是否被編譯過(guò)。而我喜歡Swift的一點(diǎn)就是,在某些情況下,你根本不用去想這些事情,直接輸入代碼就好。希望這將有助于更好地理解正在發(fā)生的事情,不再讓人感到頭疼。”
——iOS開(kāi)發(fā)者,APP Camp教師 萊斯利·貝克
雖然開(kāi)源后給開(kāi)發(fā)者帶來(lái)了諸多便利,不過(guò)遺憾的是,根據(jù)Swift.org中的表述,開(kāi)發(fā)者在把應(yīng)用程序提交給蘋(píng)果的應(yīng)用程序商店時(shí)仍需要在Mac上使用Xcode。
開(kāi)源會(huì)對(duì)編程語(yǔ)言帶來(lái)什么影響?
在Swift開(kāi)源并在此基礎(chǔ)上開(kāi)發(fā)新版本的同時(shí),不但能夠使開(kāi)發(fā)人員更容易地看到蘋(píng)果公司在做什么,同樣也使他們能夠更容易直接對(duì)該項(xiàng)目作出貢獻(xiàn)。蘋(píng)果表示,從Swift 1.0到2.0,開(kāi)發(fā)者的反饋為開(kāi)發(fā)工作做出了相當(dāng)大的貢獻(xiàn)。但是同樣的,至少?gòu)睦碚撋现v,公司將不再成為Swift語(yǔ)言的唯一仲裁者——開(kāi)發(fā)者可以提交引入請(qǐng)求。Swift.org概述中也提到了當(dāng)開(kāi)發(fā)人員要提出修改時(shí)的工作流程。
“如果你注意到我們的 Swift 2.0 的語(yǔ)言特性的話(huà),你就會(huì)發(fā)現(xiàn)在錯(cuò)誤處理、保護(hù)信息、可用性和控制上,均是基于開(kāi)發(fā)者使用 Swift 來(lái)開(kāi)發(fā)應(yīng)用的對(duì)話(huà)來(lái)完成的。我們認(rèn)為,Swift 開(kāi)源后將獲得進(jìn)一步發(fā)展,這將有利于進(jìn)一步深化交互。”
Swift雖然只是一個(gè)很“年輕”的語(yǔ)言,但是自問(wèn)世以來(lái)卻一直廣受歡迎。而這也使得試圖開(kāi)發(fā)和維護(hù)的代碼的開(kāi)發(fā)人員產(chǎn)生了小小的挫敗感。Swift 1.x在半年甚至一年前所創(chuàng)建的代碼可能也不會(huì)在今天的Xcode的最新版本中編譯,所以如果有問(wèn)題的話(huà)蘋(píng)果肯定是知道的。
“在為開(kāi)發(fā)者提供源發(fā)展工具方面,我們是非常開(kāi)放的。所以如果開(kāi)發(fā)者選擇在Swift中編程的話(huà),我們也會(huì)在不斷發(fā)展語(yǔ)言的過(guò)程中給他們提供適合的工具來(lái)幫他們發(fā)展源代碼。”
不過(guò)蘋(píng)果公司也在計(jì)劃解決更大的問(wèn)題,如今有越來(lái)越多的開(kāi)發(fā)者正在為該語(yǔ)言的發(fā)展做出著貢獻(xiàn),所以蘋(píng)果就更要去積極解決問(wèn)題。蘋(píng)果計(jì)劃在 Swift 3.0 中進(jìn)一步完善源兼容特性。
Swift 會(huì)對(duì) Objective-C 產(chǎn)生什么影響?
對(duì)于Objective-C,Swift的開(kāi)源并沒(méi)有改變其在蘋(píng)果的生態(tài)系統(tǒng)中的位置。它已經(jīng)存在了好幾年了,它仍然被用來(lái)編寫(xiě)蘋(píng)果的平臺(tái)上運(yùn)行的諸多應(yīng)用程序(包括蘋(píng)果自己的),這個(gè)數(shù)字截至目前仍在持續(xù)增加,因?yàn)檫@的確是有必要的。但Swift顯然是Objective-C未來(lái)的發(fā)展方向,所以蘋(píng)果仍然希望開(kāi)發(fā)者可以用Swift來(lái)啟動(dòng)他們的新項(xiàng)目。
“Objective-C 將不會(huì)就此消失。我們還是非常喜歡 Objective-C 這種語(yǔ)言,我們還需要依賴(lài) Objective-C,在蘋(píng)果公司有很多工作都需要通過(guò)Objective-C來(lái)完成。我們會(huì)繼續(xù)支持Objective-C,繼續(xù)完善這種語(yǔ)言,以適應(yīng)這個(gè)不斷變化的世界。不過(guò)對(duì)于即將進(jìn)入我們的平臺(tái),想要開(kāi)發(fā)應(yīng)用的開(kāi)發(fā)者,我們認(rèn)為Swift更適合他們。我們覺(jué)得從 Swift 入手是非常正確的。但是在可預(yù)見(jiàn)的未來(lái),我們會(huì)繼續(xù)維護(hù)、完善和支持 Objective-C 。”
開(kāi)發(fā)者們?cè)谡劦絊wift和Objective-C的使用情況時(shí)通常都會(huì)這么說(shuō):有些人堅(jiān)持使用Objective-C,因?yàn)樗麄円呀?jīng)熟悉該語(yǔ)言或是因?yàn)樗麄儾幌M旌鲜褂肙bjective-C代碼和Swift代碼,但越來(lái)越多的消息顯示,無(wú)論是新項(xiàng)目還是老項(xiàng)目,新數(shù)據(jù)塊都在逐漸被Swift代碼所取代。
似乎蘋(píng)果未來(lái)將繼續(xù)為Objective-C提供支持,但蘋(píng)果何時(shí)會(huì)停止支持目前并沒(méi)有一個(gè)確切的消息。不過(guò),沒(méi)有人會(huì)想被打個(gè)措手不及。Swift的日益成熟、Swift 3.0所承諾的源代碼兼容性、開(kāi)源版本更加廣泛的應(yīng)用場(chǎng)景都旨在推動(dòng)開(kāi)發(fā)者更為舒服的過(guò)渡到Swift陣營(yíng)。
Via arstechnica