当编程语言掌握在企业手中,是生机还是危机?
2019 年 4 月,Java 8 收费时代到来了!2019 年 1 月份,Oracle 宣布将停止 Java 8 更新的免费支持,未来 Java 的更新只适用于已付费的许可证持有者。近日,Oracle 发送邮件通知用户 Java 8 第一次、收费的季度重大修补更新将在 4 月 16 号发布。
行业分析公司 Redmonk 于近日发布了 2019 年第一季度编程语言排行榜,排在前十位的分别是 JavaScript、Java、Python、PHP、C#、C++、CSS、Ruby、C 和 Objective-C。RedMonk 编程语言排行榜一年发布两次,其主要依据编程语言在 GitHub 和 Stack Overflow 上的代码使用情况与讨论数量,经过统计分析后排序得出编程语言在未来的采用趋势。
相信很多人在看到 RedMonk 的排行榜时都会有小小的疑惑,这和之前 TIOBE 发布的编程语言排行榜有点不同。TIOBE 发布的 3 月编程语言 Top 10 分别为:Java、C、Python、Visual Basic .NET、C#、JavaScript、PHP、SQL 和 Objective-C。
但是,如果仔细对比这两份编程语言排行榜就会发现它们的 Top10 中有 7 个编程语言是相同,只是排名略有不同。事实上,编程语言的头部竞争一直都比较平稳,RedMonk 的 Top 5 玩家 JavaScript、Java、PHP、Python 和 C#,自 2014 年开始就没有变过,就连排位顺序也只是出现过几次很小的变动。
除去头部玩家,把观察范围扩大到编程语言 Top 20 中,大家还会发现一个更有趣的现象,那就是上升速度很快的编程语言背后都有公司支持。以 RedMonk 榜单为例,我们来看看这些“有背景”的编程语言:
- 排在第 10 位的 Objecr-C:Object-C 最初是由 Brad Cox 和 Tom Love 开发的,但是后来被 Apple“收编”了。
- 排在第 11 位的 Swift:Swift 是 Apple 2014 年发布的新开发语言,易学易用。
- 排在第 12 位的 TypeScript:TypeScript 最初是微软的一个内部项目,2014 年微软正式发布该语言。
- 排在第 15 位的 Go:Go 是由 Google 员工 Robert Griesemer、Rob Pike 和 Ken Thompson 于 2007 年开发的,2009 年开源,并快速成为了构建云应用程序的核心语言。
- 排在第 20 位的 Kotlin:Kotlin 最初是由 JetBrains 开发的,2017 年被 Google“收编”用于 Android 开发。
其实,早前的 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 构建的应用程序,App 就会从中 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 这次的收费举动,会对众多企业产生影响。