首先我要认个错,其实严格来说,编程语言是不存在开源一说的,语言是一种规范,是一个标准,任何人都可以实现这种规范,我们通常说的开源语言,其实指的是它的官方基础类库、开发工具、编译器、解释器、运行时环境等等,所以咱就不深究措辞了哈。
最近苹果的WWDC大会上爆出的一条消息让我被强制刷屏,感受到了“视觉疲劳”——Swift 2.0开源,据说当时现场响起了最热烈的掌声。“最”这个字用地很好很微妙,也从某种程度上反映出开发者们在苹果长期以来相对封闭的生态圈里看到了一丝开放的苗头。索性咱们就聊聊几个语言的开源故事。
Swift
先说说风口上的飞猪——Swift,刚刚一周岁的小家伙,由于出身苹果的正统名门,一出生就受到了移动开发者的强烈关注,学习的人很多,实践的例子也有,但是由于Object-C多年积累的成熟生态圈的固守,所以生产环境中的应用比例一直不是很高(之前看过一个报告,貌似在10-20%左右)。这一年苹果为了推广Swift也是拼了,各种优先规则都用上了,开源也是最新的大招。为啥,简单解释下:
总之,苹果的目的就是让更多的开发者赶紧用Swift,麻溜的,让你没有不用的理由,就是这么任性,而且还支持Linux,目的是“成为主流开发语言”,好大的一盘棋,从开源起步~
Rust、Go
插一句,出身真的很重要(如果不是最重要的话),前几天和朋友聊起Rust语言的发展现状,是又爱又恨,挺好的一语言,发展的太慢。我们都感叹:唉,出身差了些,如果把后面的金主从Mozilla换成Google,那肯定是另外一番景象了。
说到Google,它推出的几门语言都是开源的,其中包括著名的Go语言,其实对于天生带有互联网基因的公司来说,开源语言是一个非常自然的决定,不需要太多的业务分析,所以也就没有太多的故事可以展开说。
Python、Ruby
除此之外,还有哪些开源的语言是自然之举?想一下(请思考10秒钟)。
......
时间到,还有那些由“个人发明”而不是“公司行为”的编程语言,比如Python、Ruby,它们均来自于极客们的自我创造,没有过多的商业利益,也就没有束缚,所以开放给社区是自然而然的选择,事实上,这些语言的生命力也非常顽强,在自己的一亩三分地里耕耘地很不错,也体现了开源的强大力量。
Java
说到底,那些“诞生于公司”而后又开源的编程语言的故事更八卦一些。这里面主要就是两家,Java和.NET(抱歉,我把.NET家族算作一门泛语言了)。
刚刚过完20岁生日的Java算是命运多桀。诞生于1995年的它赶上了互联网发展的第一波潮流,快速成长为最主流的编程语言之一,并长期保持着大佬地位。可惜,背后的大树Sun公司也有日薄西山的时候(说到这里我忍不住插一句,江湖上传言Sun对自己的员工太好了,做技术做的太好了,以至于忽视了公司是需要盈利的,唉,做技术做到这份上也真谢谢它了),后来被财大气粗的Oracle收购。
收购是发生在2009年,不过Java在2007年的时候就开源了。从时间来看,开源应该是个无奈的选择,当时的Sun已经日渐式微,虽然贵为Java的领导者,但是始终没有在Java身上找到很好的商业模式,说白了,就是不知道如何更好地从Java身上赚钱。有读者会问了,做语言哪有图赚钱的?没错,做语言本身可以不赚钱(除了卖企业授权和衍生品之外),但是作为企业生态系统的一部分,一定要在商业模型中体现其价值。
Sun的问题在于,没有想清楚Java的定位和价值,反而成了负担。开源Java的目的一方面是减轻自身的负担,另一方面也是为了增强Java语言的地位。可以说,Android系统给了Java第二春,在移动开发领域也占据了半壁江上。Oracle对待Java的方式和Sun完全不一样,以社区来推动Java的发展,自己承担的职责(成本)减少很多。同时,又利用Java相关的一些专利牵制了部分对手。所以Oracle是想的比较明白的。
就以今年的20周年庆祝活动为例,有熟悉的朋友告诉我,Java10周年(当时Sun主办)的庆祝活动在国内当时是全民狂欢的级别,烧钱很多,而今年的20周年活动缩水很多,不可同日而语。或许,这就是两者最根本的区别吧。
.NET
说完Java,当然也要说说它的老冤家对头.NET了,微软这些年虽然有些坎坷,被互联网巨头冲击不小,但依然是IT巨无霸之一,最近又提出了移动和云优先战略,对开源技术也持开放的心态,逐渐把.NET家族的上上下下开源出来,对社区的震撼不亚于苹果开源Swift。有关.NET开源的故事,我在另外一篇文章《.NET开源,且行且珍惜》中已经做了详细的介绍,这里就不重复了,感兴趣的读者可以回复“.NET开源”查看。
一句话总结
开源的势头势不可挡了,逆着激流会被吞没,不如顺着激流同化为激流。
作者的微信公众号“技术风向标”,关注IT趋势,承载前沿、深入、有温度的内容。感兴趣的读者可以搜索ID:jishuqushi,或者扫描下方二维码加关注。