当编程语言掌握在企业手中,是生机还是危机?(4)

发布于2019-04-20 11:27:29

2019年4月,Java的收费时代来临了!

Java是由Sun微系统公司在1995年推出的编程语言,2010年Oracle收购了Sun之后,Java的所有者也就自然变成了Oracle。2019年,Oracle宣布将停止Java 8更新的免费支持,未来Java的更新只适用于已付费的许可证持有者。

Java收费的消息让人不得不联想到这些问题,其它语言是否会和Java一样也加入到“收费大军”呢?当编程语言掌握在企业手中时,是生机还是危机?

近日,RedMonk发布了2019年第一季度编程语言排行榜,排在前十位的分别是JavaScript、Java、Python、PHP、C#、C++、CSS、Ruby、C和Objective-C。RedMonk编程语言排行榜一年发布两次,其主要的排行依据是编程语言在 GitHub 和 Stack Overflow 上的代码使用情况与讨论数量,经过统计分析后排序得出编程语言在未来的采用趋势。

上图是RedMonk统计的从2012年到2019年,各个编程语言的排名变化情况。如果仔细观察分析这张图片中我们可以发现两个很有趣的现象。

第一是编程语言的头部竞争一直都比较平稳,RedMonk的Top 5玩家JavaScript、Java、PHP、Python和C#,自2014年开始就没有变过,就连排位顺序也只是出现过几次很小的变动。

第二是RedMonk榜单排在第10位到第20位的编程语言中,很多上升速度比较快的编程语言背后都有公司支持。

其实,早前的Web语言基本是由黑客个人编写的,例如 PHP是Rasmus Lerdorf编写的, Python是Guido Van Rossum编写的。20世纪90年代末是互联网发展的黄金时代,当时涌现出的大量草根项目和小型项目都在后来发展称了大型项目。以编程语言为例,当时人们不再使用C语言来构建CGI Web应用,而是在积极采用PHP、JavaScript等其它语言。

“C++之父” Bjarne Stroustrup在攻读博士学位时就开始研究 C++,然而直到1983年,他才在AT&T使用了C++,他在回忆这段经历时表示:

我在开发C++时,AT&T其实正面临着困境,AT&T 构建的系统比大多数组织要更复杂,可靠性要求更高,所以我们必须自己来影响市场,制定满足我们自己需求的标准,否则的话,我们将没有工具来构建系统。

在我开发C++之前,Ken Thompson 和 Dennis Ritchie 已经开发了 Unix 和 C。AT&T 可能是世界上最大的软件工具的“民用用户”,我们使用了更为广泛的系统:从最小的嵌入式处理器到最大的超级计算机和数据处理系统。所以,我们当时的想法就是这个语言要尽可能多的适用于这些技术文化和平台。

通用性至关重要,专有特性会被视为限制平台和供应商的选择。因此,AT&T 无论是过去,还是现在,一直都是是正式标准的主要支持者(例如,ISO C、ISO C++)。

换句话说,AT&T 通过推动 C++ 来成为行业标准,而C++也通过AT&T从一个博士生心血来潮的作品成为了一个行业规范。

但是当时间行进至21世纪,这种情况就发生了变化。如果说“互联网+”初期是惠及了民众,那么当下一波浪潮移动应用到来时,主导者就变成了企业。语言规则主要由Google、Apple 和 Microsoft 主导。

很多新出现的语言一开始就是由企业赞助的,例如Microsoft 的 CNo,这些新的编程语言汲取了过去的经验教训,在默认情况下,每种新语言都是开源的,也不会再有一家企业试图用专有语言来构建专有程序的情况了。当然,也有一些最初由黑客开发的语言被企业“收编”,例如Object-C。

在这一时期,网络和应用程序的未来大部分是建立在企业的现金上,而不是基于社区动力。那么,这种情况是好是坏呢?

从上文中不难看出,当下流行的编程语言中有很大一部分背后是有企业投资的。企业投资的好处是资金充裕,编程语言能够持续稳定的发展,不会突然夭折。但是也有弊端,就是企业可能会从中获取利润,例如Swift,每有一个使用Swift构建的应用程序,Apple就会从中30%的费用。

更为恐怖的是,企业主导编程语言有可能会导致生态系统锁定,而开源编程语言则是形成这种锁定的重要环节。一旦企业的生态系统和应用程序重度依赖于某种编程语言,且无法轻易被替换时,那么就很可能会被该编程语言背后的公司牵着鼻子走,就像之前Oracle在数据库领域的“厂商锁定”和IBM在大机领域的“厂商锁定”。

编程语言的“厂商锁定”并不是远在天边,就在不久之后,Java 8更新就要开始收费了!2019年1月份,Oracle宣布将停止Java 8更新的免费支持,未来Java的更新只适用于已付费的许可证持有者,无有效许可证的用户不能将Java 8 的安全更新应用于商业用途。

(图源网络,Oracle发给用户的关于Java 8收费的提醒邮件)

从2019年4月起,Oracle会每季度发布一次Java 8的重大修补更新,非公开的首次重大修补更新将于4月16日发布。在很多企业应用中,Java 8仍是主力,相信Oracle这次的收费举动,会对众多企业产生影响。