Swift開源帶來的思考

>>>  創業先鋒 眾人拾柴火焰高  >>> 簡體     傳統



蘋果全球開發者大會總能掀起一股旋風,雖然今年大會的“猛料”不如往期,但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開源本身,當今編程語言的發展趨勢也值得我們認真思考。如果從完全理性的角度看待編程語言,那么編程語言無非就是一門編程語言:“選擇好適合自己的編程語言就是了”。但問題就在于如何選擇合適的編程語言呢?語言的魅力也許就像盲人摸象,你無法做到足夠理性,或者這世界就沒有銀彈,編程語言的比較和紛爭,將是一個永恒的話題,熱度無限......


CSDN 2015-08-23 08:56:35

[新一篇] Facebook首席運營官桑德伯格清華演講:命運偏愛勇者

[舊一篇] 游戲核心玩法設計指南(一)
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表