引子
首先我要認(rèn)個(gè)錯(cuò),其實(shí)嚴(yán)格來(lái)說(shuō),編程語(yǔ)言是不存在開源一說(shuō)的,語(yǔ)言是一種規(guī)范,是一個(gè)標(biāo)準(zhǔn),任何人都可以實(shí)現(xiàn)這種規(guī)范,我們通常說(shuō)的開源語(yǔ)言,其實(shí)指的是它的官方基礎(chǔ)類庫(kù)、開發(fā)工具、編譯器、解釋器、運(yùn)行時(shí)環(huán)境等等,所以咱就不深究措辭了哈。
昨天蘋果的 WWDC 大會(huì)上爆出的一條消息讓我被強(qiáng)制刷屏,感受到了“視覺(jué)疲勞”——Swift 2.0 開源,據(jù)說(shuō)當(dāng)時(shí)現(xiàn)場(chǎng)響起了最熱烈的掌聲?!白睢边@個(gè)字用地很好很微妙,也從某種程度上反映出開發(fā)者們?cè)谔O果長(zhǎng)期以來(lái)相對(duì)封閉的生態(tài)圈里看到了一絲開放的苗 頭。索性咱們就聊聊幾個(gè)語(yǔ)言的開源故事。
Swift
先說(shuō)說(shuō)風(fēng)口上的飛豬——Swift,剛剛一周歲的小家伙,由于出身蘋果的正統(tǒng)名門,一出生就受到了移動(dòng)開發(fā)者的強(qiáng)烈關(guān)注,學(xué)習(xí)的人很多,實(shí)踐的 例子也有,但是由于 Object-C 多年積累的成熟生態(tài)圈的固守,所以生產(chǎn)環(huán)境中的應(yīng)用比例一直不是很高(之前看過(guò)一個(gè)報(bào)告,貌似在 10-20% 左右)。這一年蘋果為了推廣 Swift 也是拼了,各種優(yōu)先規(guī)則都用上了,開源也是最新的大招。為啥,簡(jiǎn)單解釋下:
開源本身就是一種營(yíng)銷策略。鋪天蓋地的新聞報(bào)道已經(jīng)是明證,特別是對(duì)于蘋果這樣的企業(yè)來(lái)說(shuō),一點(diǎn)廣告費(fèi)不用花,Swift 已經(jīng)名聲在外了。
開源表明一種開放的態(tài)度,有利于吸引開發(fā)社區(qū)的參與。現(xiàn)在不玩開源的企業(yè)都已經(jīng) out 了,技術(shù)選型的重要標(biāo)準(zhǔn)之一就是是否開源。所以 Swift 的開源讓開發(fā)者特別是蘋果生態(tài)圈的其他公司更加放心,雖然我打賭沒(méi)有多少開發(fā)者或者公司會(huì)去查閱哪怕一行 Swift 源代碼,但是放在那里看著也安心,對(duì)吧。
開源有利于生態(tài)圈的快速發(fā)展。沒(méi)開源之前,Swift 的各種工具基本都依賴于蘋果原創(chuàng),但是開源之后,社區(qū)就可以提供各種開發(fā)工具,生態(tài)系統(tǒng)可以快速構(gòu)建起來(lái)。
總之,蘋果的目的就是讓更多的開發(fā)者趕緊用 Swift,麻溜的,讓你沒(méi)有不用的理由,就是這么任性,而且還支持 Linux,目的是“成為主流開發(fā)語(yǔ)言”,好大的一盤棋,從開源起步~
Rust、Go
插一句,出身真的很重要(如果不是最重要的話),前幾天和朋友聊起 Rust 語(yǔ)言的發(fā)展現(xiàn)狀,是又愛(ài)又恨,挺好的一語(yǔ)言,發(fā)展的太慢。我們都感嘆:唉,出身差了些,如果把后面的金主從 Mozilla 換成 Google,那肯定是另外一番景象了。
說(shuō)到 Google,它推出的幾門語(yǔ)言都是開源的,其中包括著名的 Go 語(yǔ)言,其實(shí)對(duì)于天生帶有互聯(lián)網(wǎng)基因的公司來(lái)說(shuō),開源語(yǔ)言是一個(gè)非常自然的決定,不需要太多的業(yè)務(wù)分析,所以也就沒(méi)有太多的故事可以展開說(shuō)。
Python、Ruby
除此之外,還有哪些開源的語(yǔ)言是自然之舉?想一下(請(qǐng)思考 10 秒鐘)。
......
時(shí)間到,還有那些由“個(gè)人發(fā)明”而不是“公司行為”的編程語(yǔ)言,比如 Python、Ruby,它們均來(lái)自于極客們的自我創(chuàng)造,沒(méi)有過(guò)多的商業(yè)利益,也就沒(méi)有束縛,所以開放給社區(qū)是自然而然的選擇,事實(shí)上,這些語(yǔ)言的生命力 也非常頑強(qiáng),在自己的一畝三分地里耕耘地很不錯(cuò),也體現(xiàn)了開源的強(qiáng)大力量。
Java
說(shuō)到底,那些“誕生于公司”而后又開源的編程語(yǔ)言的故事更八卦一些。這里面主要就是兩家,Java 和 .NET(抱歉,我把 .NET 家族算作一門泛語(yǔ)言了)。
剛剛過(guò)完 20 歲生日的 Java 算是命運(yùn)多桀。誕生于 1995 年的它趕上了互聯(lián)網(wǎng)發(fā)展的第一波潮流,快速成長(zhǎng)為最主流的編程語(yǔ)言之一,并長(zhǎng)期保持著大佬地位??上?,背后的大樹 Sun 公司也有日薄西山的時(shí)候(說(shuō)到這里我忍不住插一句,江湖上傳言 Sun 對(duì)自己的員工太好了,做技術(shù)做的太好了,以至于忽視了公司是需要盈利的,唉,做技術(shù)做到這份上也真謝謝它了),后來(lái)被財(cái)大氣粗的 Oracle 收購(gòu)。
收購(gòu)是發(fā)生在 2009 年,不過(guò) Java 在 2007 年的時(shí)候就開源了。從時(shí)間來(lái)看,開源應(yīng)該是個(gè)無(wú)奈的選擇,當(dāng)時(shí)的 Sun 已經(jīng)日漸式微,雖然貴為 Java 的領(lǐng)導(dǎo)者,但是始終沒(méi)有在 Java 身上找到很好的商業(yè)模式,說(shuō)白了,就是不知道如何更好地從 Java 身上賺錢。有讀者會(huì)問(wèn)了,做語(yǔ)言哪有圖賺錢的?沒(méi)錯(cuò),做語(yǔ)言本身可以不賺錢(除了賣企業(yè)授權(quán)和衍生品之外),但是作為企業(yè)生態(tài)系統(tǒng)的一部分,一定要在商業(yè) 模型中體現(xiàn)其價(jià)值。
Sun 的問(wèn)題在于,沒(méi)有想清楚 Java 的定位和價(jià)值,反而成了負(fù)擔(dān)。開源 Java 的目的一方面是減輕自身的負(fù)擔(dān),另一方面也是為了增強(qiáng) Java 語(yǔ)言的地位。可以說(shuō),Android 系統(tǒng)給了 Java 第二春,在移動(dòng)開發(fā)領(lǐng)域也占據(jù)了半壁江上。Oracle 對(duì)待 Java 的方式和 Sun 完全不一樣,以社區(qū)來(lái)推動(dòng) Java 的發(fā)展,自己承擔(dān)的職責(zé)(成本)減少很多。同時(shí),又利用 Java 相關(guān)的一些專利牽制了部分對(duì)手。所以 Oracle 是想的比較明白的。
就以今年的 20 周年慶?;顒?dòng)為例,有熟悉的朋友告訴我,Java10 周年(當(dāng)時(shí) Sun 主辦)的慶?;顒?dòng)在國(guó)內(nèi)當(dāng)時(shí)是全民狂歡的級(jí)別,燒錢很多,而今年的 20 周年活動(dòng)縮水很多,不可同日而語(yǔ)?;蛟S,這就是兩者最根本的區(qū)別吧。
.NET
說(shuō)完 Java,當(dāng)然也要說(shuō)說(shuō)它的老冤家對(duì)頭 .NET 了,微軟這些年雖然有些坎坷,被互聯(lián)網(wǎng)巨頭沖擊不小,但依然是 IT 巨無(wú)霸之一,最近又提出了移動(dòng)和云優(yōu)先戰(zhàn)略,對(duì)開源技術(shù)也持開放的心態(tài),逐漸把 .NET 家族的上上下下開源出來(lái),對(duì)社區(qū)的震撼不亞于蘋果開源 Swift。有關(guān) .NET 開源的故事,我在另外一篇文章《.NET 開源,且行且珍惜》中已經(jīng)做了詳細(xì)的介紹,這里就不重復(fù)了,感興趣的讀者可以回復(fù)“.NET 開源”查看。
一句話總結(jié)
開源的勢(shì)頭勢(shì)不可擋了,逆著激流會(huì)被吞沒(méi),不如順著激流同化為激流。
Apple Swift學(xué)習(xí)教程 http://www.linuxidc.com/Linux/2014-09/106420.htm
使用 Swift 構(gòu)建一個(gè) iOS 的郵件應(yīng)用 http://www.linuxidc.com/Linux/2014-08/105542.htm
Swift 2.0開源化 http://www.linuxidc.com/Linux/2015-06/118594.htm