10
| 本文作者: 伍星 | 2015-12-07 15:20 |
【編者按】在2015 WWDC 大會上,軟件工程資深副總裁 Craig Federighi 說Swift 將會變成開源。直到今天,蘋果已經兌現承諾實現開源。本文來自Swift社區的伍星,是國內最早實戰推廣Swift的開發者之一,文章是6月份作者為雷鋒網獨家分析Swift語言的文章,原標題為《擁抱Swift 吧,騷年》——
蘋果將Swift 開源,這意味著什么,Objective-C已經是過去時?

在閱讀本文之前,先看看此前蘋果官網對于Swift開源的說明:

(截圖來自:Swift 2.0 - Swift Blog)
編者提取下要點:
具體的開源許可證沒有確定(現已正式宣布開源,確定為 Apache License);
蘋果官方支持的系統,除了蘋果自家OS X,iOS以外,還有Linux;開源的是編譯器和標準庫。
這里擴展一下,其實根據Chris Lattner( LLVM 和 Swift 的作者 ,下文有介紹) 的說法,早在2015 WWDC 大會之前,Swift 背后的 LLVM就一直是開源的,Chris Lattner 本人曾寫過一篇 LLVM 介紹: 《The Architecture of Open Source Applications: LLVM》,有興趣的童鞋可以去看看。當然,這些并不意味著可以在 Windows上開發 iOS 應用的,但是,Swift 語言的開源的真正意義并在此。

【以下是正文】
推出 Swift 語言,蘋果的商業目的是什么?
為了提高開發者們的編程效率,將更多的開發者吸引入蘋果的開發者陣營,在去年2014年的WWDC上,蘋果推出了一套新的語言 Swift。在這一年中,Swift 經歷了不下十次版本更新,開始成為一門相對成熟穩定的編程語言。也以其語法簡潔、安全為廣大開發者使用,在這一年中,國外的Swift iOS書籍、教程和培訓,無一例外已全部采用 Swift 來編寫。在國內,Swift 書籍、培訓也正在興起,公司也在接納這門新的編程語言,比如優才學院還推出了iOS全棧工程師培訓課程 。
如今一年過去,蘋果又做出驚人之舉。在今天的2015 WWDC 發布會上,除了發布 Swift 2,Swift 2.0增加的主要特性包括泛型、更快的調試模式、更快的編譯、錯誤處理機制、C函數指針API、注釋里Markdown格式等等。更重要的是,軟件工程資深副總裁 Craig Federighi 正式宣布 Swift 將會變成開源。「我們認為 Swift 應該成為所有人都能使用的語言。」他在臺上這么說道。 這讓整個開發者社區為之點贊和歡呼。

其實Swift 語言開源,既在意料之外,又在情理之中。以蘋果之強勢,對核心產品開源看似不可以理解,這是意料之外。情理之中則在于:
1、Swift 出自開源大神 Chris Lattner之手。
Chris Lattner在編譯器方面,為開源所做的貢獻,可謂居功至偉。他是 LLVM 項目的主要發起人與作者之一,Clang 編譯器的作者。簡單做一個介紹,LLVM 編譯器是一個雄心勃勃的項目,其目的是要建一個可重用的編譯器組件系統,可用于構建各種工具,包括編譯器、調試器、JIT系統、優化器、靜態分析系統等 等。LLVM 常用作 C 和 C++ 的優化器,能生成用于多種不同架構的機器碼。Clang 項目目前是業內領先的 C、Objective-C 和 C++ 編譯器,廣泛用于學術界和業界。在語言支持和其他特性方面,LLDB 調試器(LLDB Debugger)開創了先河。LLVM 正在多方面擴展和改進,以支持新優化、新目標、新領域和新特性。所以Swift不開源,Swift他爸爸不答應啊,是不是?
2、看看蘋果推出 Swift 語言的背后商業目的。
以蘋果之精明,不會純粹為了開發社區貢獻技術。更重要的是其商業原因,Objective-C 出現30多年來,其語法、冗長的寫法,并不為大量的開發者所習慣,尤其是已經熟悉過像Java、PHP類似的開發者,想轉到Objective-C,倒不說學習曲線,心理上的門檻就挺高的。而Swift 的出現,讓這個轉換的門檻成為歷史,可以想見的是,Swift 語言的出現,再加上開源,更多的開發者將熟悉和使用 Swift 語言,意味著在蘋果的視野之中,增強了大量的,數以百萬計的開發者的支持。

那么,Swift 發展到今天并開源,對于我們開發者的選擇,有什么影響呢?
1、Swift 開源意味著什么呢?
今天一早,在技術群里就有人討論這個問題。個人的感覺是Swift 開源,必然導致眾多開發者對其本身的深入參與,以Swift 目前的優良特性,會有牛人把它遷移至Linux、Windows甚至 Android等平臺。屆時,Swift 也許會成為一門真正全棧式的編程語言。有了更多開發者的參與,Swift 開發庫不足的情況,會快速緩解,據筆者統計,過去一年中,在github上,有13357開源項目被創建。

2、那么Swift 會不會替換Objective-C呢?
這是一個特別多朋友都關注的問題。個人使用Swift 一年以來的感覺是:蘋果官方目前沒有說要用Swift 代替Objective-C,但是做iOS開發的默認語言就是Swift了。其次來講,語言的選擇是一個開發者用腳投票的過程,我想下面的這個趨勢圖,應該說明了這點。所以我的建議是,如果想了解Swift ,請盡早,新事物的窗口期就是那么長時間。

編者注:
關于Objective-C介紹,可以看這篇文章:《擁抱Swift吧,Objective-C已經是過去時》。為方便理解,摘錄其中的一段話:
目前iOS中的很多應用框架都還是Objective-C的,調用的方式是使用橋接頭文件,但未來會出現更多基于Swift的框架,今后的調用也會變為更加簡潔的方式,蘋果正在努力實現這個艱巨的任務,因為需要轉換的框架有很多。
不過很快,我們就會看到專屬于Swift的新框架,這樣的框架在Objective-C中甚至都找不到同類。這種情況的發生也會對Objective-C的后續使用造成很大的影響。
3、Swift 穩定成熟了嗎?
在去年剛發布時,雖然已經可以兼容現有的庫和支持Objective-C互操作,能真正開發出iOS產品,但是Swift 確實有很多的不足,比如最坑爹的就是編譯速度很慢,最早時,有更新,所有文件要編譯,這是工程上無法忍受的,但是到了今天,語法本身完善了,工程上的開發效率問題也得到了解決,就差庫了。而對庫的提供,這不正是開源社區所擅長的么?
所以,擁抱Swift吧,騷年!
【作者介紹】伍星,優才無限、優才學院(原優才網)創始人,現主導優才無限教學、研發工作。是開心網早期創始團隊成員,架構師。是國內最早實戰推廣Swift的開發者,國內最暢銷的《Swift語言實戰入門》主編,并國內首家推出Swift iOS全棧工程師培訓,為IBM、北京公交集團、動批網、OneAPM、創新工場系等提供培訓咨詢服務。
雷峰網特約稿件,未經授權禁止轉載。詳情見轉載須知。