Swift開源帶來的思考

釋懷發表於2015-07-06



蘋果全球開發者大會總能掀起一股旋風,雖然今年大會的“猛料”不如往期,但Swift在今年晚些時候開源的訊息,卻足以賺足開發者眼球。

其實蘋果的行事風格,我還是蠻喜歡的:“蘋果把自家的事情做好,給使用者最酷的體驗,他的實力就是我行我素的資本,而使用者也欣然接受這樣的蘋果。”不過,蘋果有自己的平臺、軟硬體,Swift也才釋出將近一年的時間,這麼快就開源Swift?

關於蘋果為什麼開源Swift的分析已是鋪天蓋地,就無需多言,我覺得最重要的一點還是——通過吸引更多的開發者使用Swift,獲得更多的支援以及創意,能夠為蘋果帶來更大的商業利益。

在這裡,我更想由此思考一下語言發展的趨勢及伴隨的現象。

一、語言/工具的封閉模式已經落伍了

十來年前的軟體公司還有封閉資本,那時候的VB、Delphi足夠好用,儘管盜版也很普遍,但光靠賣這些工具就能賺到盆滿缽滿。到了後來,Delphi幾經掙扎還是沒落了。當年李維在《Borland傳奇》裡將主要原因歸咎於管理層接二連三失策,而從歷史軌跡來看,靠封閉單一的工具類產品支撐業務發展,路口必將越收越窄。再來看看偌大的微軟帝國,其產品和技術的覆蓋面遍佈各個角落,但最終也於2014年年底宣佈開源.NET開發框架。

回首Java的二十年曆程,JDK是開源的(你只要開啟Src.zip,就能看到原始碼),有開源免費的Eclipse和NetBeans的支援,同時藉著“一次編寫四處執行”的宣傳語吸引無數開發者積極投入,構建出了一個龐大的Java社群,至今仍雄霸天下,這就是開源力量。

在這十多年裡,不得不提的當然還有PHP、Python、Ruby等一大波開源動態語言的盛行,這些早已為業務所證明是成熟而穩定的解決方案。網際網路上,用PHP、Django或RoR構建的網站比比皆是。

看看TIOBE語言榜就知道,開源的程式語言是多麼流行!

隨著網際網路/移動網際網路的發展,“免費”已經是經典的商業盈利模式,現在網際網路的盈利點越來越集中在雲平臺/雲業務租賃、各種增值服務、流量、訂閱和廣告上,越大的使用者量,盈利越明顯。而越多的開發者支援,創新點就越多,產品也越豐富。因此,我認為作為開發支撐基礎的程式語言和工具,其開源和免費趨勢將逐漸成為主流。畢竟,使用者資源和開發者資源,都是事關產品生存的生命線。

但為何仍有這麼多不開源的產品,比如不少資料庫產品都不是開源的?其實,開源是一種模式,商業也是一種模式,看看著名的《大教堂與集市》就會有更多感悟。君不見,開源的大資料、NoSQL解決方案已經對商用資料庫造成了不小衝擊,而是否開源,也是商業公司的一種選項,比如微軟開源.NET框架、蘋果開源Swift。商業公司的選擇總是考慮利益第一,有可能是短期,也可能是長期的,但無論如何,千萬別把商業公司當作開源的天敵,在合適時機做出合適的選擇,如果需要開源,也未嘗不可。要知道,微軟、蘋果其實也為開源做出了不小貢獻!

二、語言的發展

有時候還是蠻懷念十幾、二十年前的軟體開發環境,好像你只要會C或C++就可以了。但時光早已不同,尤其是近年的語言趨勢更是呈現出許多新特性。這些新特性的流行,得益於2000年代的動態語言,比如前面提到的PHP、Python、Ruby。而這些語言的日益流行,又得益於網際網路應用的興起。PHP在網站構建方面佔據大半壁江山,Python因應網際網路資料量的噴發在科學計算領域得以重用,而RoR成就了多少初創公司的創業榮光。當年被人不看好的小指令碼,卻在網際網路時代找到了大展身手的好時機。現在你不會一門動態語言都不好意思說自己是程式設計師了。

還必須提一下JavaScript,當年幾乎人人不待見的醜小鴨,誰能想到今天的地位如此突出呢?甚至還延伸出了Node.js這樣一個優質平臺。一時間多少JavaScript開發者希望藉助它實現心中的“全棧”夢想。同樣,沒有網際網路,也就不會有JavaScript的大行其道。我認為,JavaScript在當代的價值,不會輸給十幾年前的Java。

動態語言的流行,也讓許多組織和個人認識到了其存在的價值——那就是開發效率大大提升。以前程式設計需要為1M、甚至幾百K的記憶體絞盡腦汁,運用各種Hack技巧。但遵從摩爾定律,硬體的發展速度非常快,於是,開發者逐漸將眼光轉到了開發效率上。動態語言中廣泛應用的filter、map和reduce等具有濃郁函式式風格的高階函式,被認為是提升開發效率的有效手段。當然,蘋果的Swift,同樣也大量應用了這些特性。

就目前程式設計語法發展過程的幾個關注點,我的理解如下:
  • 不止是物件導向,函式式的迴歸正在進行時。過去十幾年時間裡,Java和C#兩種語言佔據主流,物件導向程式設計被賦予至高無上地位。但現在大家越來越認識到,物件導向程式設計達到一定規模時,複雜度也伴之而來。因此,舊有的函式式風格又重出江湖,特別是一些函式式特性在動態語言中得到了良好驗證。現在,開發者對待物件導向與函式式兩種風格,已經不是非此即彼的印象了,而是認識到它們是可以相輔相成的,比如Scala。即使是Java,也開始引入一些函式式特性,更不用說先行一步的C#。再進一步,拋開風格之爭,遵從應用為先,從而採取實用的程式設計模式,比如Golang、Rust。
  • 併發特性的增強。多核及大資料時代的來臨,現實對併發特性提出了新需求。新出現的系統級語言如Scala、Clojure、Erlang、Go及剛正式釋出的Rust,都對併發特性給予極大關注,並各有各的解決方案。即使是動態語言如PHP、Python和Ruby等,也在這方面不斷嘗試。同樣的,函式式語言中的不可變性概念,能夠較好地符合併發實現的現實需求。
三、語言營銷、語言魅力

語言間的各種對比、爭論由來已久,而且還歷久不衰,這其實也說明了語言的流行除了客觀條件,還存在一定主觀因素的影響。確切地說,這些主觀因素中很重要的兩點是:
  • 語言的官方組織或作者希望進一步擴大該語言影響力而採取的宣傳攻勢;
  • 愛好者出於對該語言的熱愛而釋放出的讚譽之詞,反過來還有反對者的不滿宣洩。
因此,語言是有“營銷”因素存在的,也許這也算是各種程式語言的魅力之一。當然,在語言營銷過程中,利益關係往往緊隨其後。舉個例子,我印象最深刻的一個語言營銷例子就是每年推出的Java短片,其中可以看到暗喻語言的各種惡搞,無形中讓人對Java產生了不小興趣。此外,當下流行的各種語言/技術大會,姑且不言參會價值,同樣是一種典型的語言/技術營銷手段。

Swift開源的訊息在WWDC 2015大會上釋出,可謂天時地利人和,算是一種成功的營銷。加上Swift具備的現代語言特性,Swift開源的策略可謂一炮打響,足以讓粉絲激動許久。

一門語言,如果有幾個業內知名大牛支援,有一個實力雄厚的組織和平臺,具備一定優質特性,再加上合適的營銷策略,就很容易吸引眾多粉絲。

你我皆凡人,都有衝動之後就嚷嚷“再買就剁手”的經歷,可見營銷的影響力簡直無孔不入。而開發者對語言的追求,一是現實剛需,二是自我興趣,三是利益契合,如果光靠一時衝動,那麼早晚會迷失自我,如何在感性和理性的平衡中選擇自己的語言方向?這很重要,但也許是另一個話題了。

四、Swift開源帶來了什麼?

從技術角度來思考,Swift開源能帶給我們什麼?我覺得主要有以下幾個方面:
  • 除了蘋果自家的平臺,以後也能在Linux上用Swift開發應用了,這樣可以吸收更多Linux平臺上的Swift開發者;
  • 基於Swift的應用會更加豐富,有了開發者對Swift的普遍熱情,以後也許會出來各種Swift的Web框架或其他什麼有趣、有用的應用;
  • Windows平臺雖然不在此列,而官方並不反對把Swift移至到其他平臺,但需要有人做這件事。嗯,微軟應該不會忽略Swift?總之,只要機會之門開啟,一切皆有可能;
  • 蘋果的私房菜Cocoa並未開源,開源的是Swift編譯器和標準庫,要在非蘋果官方平臺開發iOS應用,暫時還不太可能;
  • Swift開源後的成功,特別是在不同平臺上的成功,很大程度上取決於生態的建立、有多少框架/第三方庫的支援。同時,也直接受Swift最終採用何種開源許可的影響。
總而言之,Swift開源是大大前進了一步。而超越Swift開源本身,當今程式語言的發展趨勢也值得我們認真思考。如果從完全理論
的角度看待程式語言,那麼程式語言無非就是一門程式語言:“選擇好適合自己的程式語言就是了”。但問題就在於如何選擇合適的程式語言呢?語言的魅力也許就像盲人摸象,你無法做到足夠理性,或者這世界就沒有銀彈,程式語言的比較和紛爭,將是一個永恆的話題,熱度無限......
相關閱讀
評論(1)

相關文章