泛C家族程式语言二十年独领风骚

分享到:

程式语言生态随时间而有所变化,以现在来看,Java、C、C++、C#是最热门的语言

最近应 JCConf Taiwan 2016 技术研讨会的邀请,做了一场讲题订为“Java 在现今软体开发的角色及竞争力”的分享。Java 约莫是在 90 年末期开始成为主流的程式语言,至今也将近二十年,在这过程中,整个程式语言生态圈随着基础环境的变化,也有了不少更迭。

原先的主流程式语言影响力有所变化、也有不少语言加入,各据山头、各拥支持者。回顾这二十年来的变化,不难有些观察。

当前4大热门的程式语言都有密切关系

让我们先来看看 TIOBE 在 2016 年十月所做的热门语言排行。

基本上,前五名和去年同期相比,都是相同的。除了遇到了很大的基础条件变化,否则,程式语言的热门程度也不致于突然有很大的变动。

TIOBE 的排名时常在网路上被引用,常是特定语言的支持者为了引证自己支持的程式语言所用,而 TIOBE 的排名,主要是根据主流搜寻引擎、部落格、维基百科、YouTube 等网路服务上的搜寻次数综合起来的指标计算而成的,所以它反映出来的是一种热门程度。当然,必须要留意的是,热门不等同于好,热门也不等同于重要,程式语言的好坏、重要与否,或许跟热门程度有点相关,但却无法直接画上等号。

可以发现前四名都是血统相近、同一家族的,即:Java、C、C++,以及 C#。

2_201611140502091O9HF

TIOBE 在 2016 年十月所做的热门语言排行,Java、C、C++、C#名列前4大。

C、C++、Java之间的渊源

C++ 从 C 衍生而来。历史上,C++ 以 C 的语法为基础,发展出可支援物件导向程式设计的程式语言。一度挟着物件导向设计方式所带来的生产力,而大大的流行起来,但 C++ 落实在实际开发中也被观察到一些问题,因此有了 Java 的问世。

Java 最早是为了嵌入式系统的需求而设计,真正开始大放异彩,却是从 WWW 的风行开始。在那个 WWW 只有静态网页效果的年代,Java Applet 提供了更多动态的可能性,它让网页足以执行程式,不论是计算或是呈现动态视觉效果,甚至是提供更丰富的使用者操作介面,Applet 都能办到。这让 Java 真正的让更多程式设计者重视,也让 Java 真正的进到了寻常百姓家。一时之间,想在网页上提供更丰富互动效果的程式设计者,都纷纷开始用起了Java。

基于种种原因,Java Applet 流行的时间并不长久,但 Java 程式语言并未因此而衰弱,反而在伺服器端找到了更合适的战场,也奠定了接下来雄霸市场的基础。当 Sun 推出了以所谓 “Servlet” 为基础的 Web 伺服器端的架构时,相较于当时流行的、以 C/C++ 或 Perl 为主要语言写成的 CGI 程式来说,在效能及生产力上,都有很好的表现。从此以后,成为一大主流。再加上诸多搭配的因素,使得 Java 不断的扩增版图,最后取得了主宰的地位。

Java与C++的瑜亮情结

C++ 在很多面向上,和 Java 接近,我常说,Java 是 C++--,也就是 Java 的设计者试着去除他认为 C++ 中需要被简化的部份,因为 C++ 相较于 Java 其实复杂许多。

但为什么 Java 的出现对 C++ 造成的冲击,大过于 C 呢?我认为,就跟现代智人与尼安塔人间的竞争一样,一个生物物种最大的威胁,往往就是它在演化上的近亲。因为尼安塔人和现代智人在演化上很接近,也因此它们所需的资源及环境也大幅重叠,当其中之一开始壮大时,另一势必遭殃。因此,尼安塔人灭绝了。而 C++ 就很像尼安塔人,被自己在演化上的近亲 Java 掠夺走了许多的资源及根据地,所以受创惨重。

和 Java 相比,C++ 可以归类在“魔幻语言”,而 Java 却是典型的“简约语言”。我相信 C++ 及 Java 在语言设计上,都是以着眼生产力而出发,但 Java 语言舍弃了华丽的表现方式,选择了“大巧不工”的路线。不留太多取巧的空间、看似笨拙却避免犯错。事实上,避免犯错也正是提高生产力的重要原因,一个程式臭虫要花费数倍于撰写程式的时间,才能予以发掘、修正。

除了语言本身以简朴为要实证获得生产力之外,Java 以一个设计良好的核心程式库为基础,搭配强大活跃的开放原始码社群的贡献,有着充沛的非官方程式库支援,更使得开发的生产力大为提升,各种工具一应俱全。

就像着名的 Jakarta Apache Project 中的专案一样,自成一个生态圈,而且构成正向的循环。各专案间彼此相互沿用、没有文人相轻的问题,你做车体、我做轮子,彼此可以相互整合,这使得生态圈中的专案愈来愈丰富,品质也够好。

Java 做为 C++ 演化上的近亲,即使十分相像,但因为在几个关键因素上的不同,就决定了究竟谁得遭受到掠夺的命运。

2_201611140502092LXpZ

上图是 TIOBE 统计十几年来的程式语言热门程度的消长,大致可以看出 Java 的热门程度,几乎不衰。而 Java 的祖先 C 语言,也大致维持第二、甚至有时窜升到第一。而从这张图上也可以清楚看出来,C++ 整体呈下降的趋势。

C#受限于微软早年固守平台策略而失去先机

那么 Java 有没有具威胁力的演化近亲?有的,正好是 TIOBE 排行里第四名的 C#。

C# 仿效 Java 再改良是毫无疑问的,部份 C# 先进的语法,Java 甚至到了近期才加入。

和 Java 一样,C#是采取可跨平台的虚拟机器架构(虽然 C# 初期只能运行在 Windows 平台),一样有着记忆体回收机制、单一继承体系的核心程式库架构,再怎么看,C# 都是 Java 极具威胁性的演化近亲,可惜,微软自己自废武功,把 C# 这头猛兽囚禁在 Windows 的平台之上。

微软大概是想重施旧计,把昔日利用 Windows 作业系统优势,使得 IE 干掉 Netscape 的剧情,重新在 C# vs. Java 的故事中重新上演,可惜,作业系统平台的优势到了 Web 时代,早就不复存在。即使之后微软将 .NET 核心开放原始码,也已经时不我予了。因此,C# 和 Java 之间的距离还是够悬殊。

Java、C、C++、C# 系出同源,占据了这份排行榜的前四名,它们都是属于静态型别的程式语言,这是个很有趣的现象,因为前十名中的其余六种程式语言,都是属于动态型别的程式语言。在下一回中,我会继续说明之所以会有这两大集团,以及静态型别程式语言为何领先在前的看法。
 

 

更多恩智浦(NXP)及科技资讯请关注:
NXP中文官方:https://www.nxp.com/zh-Hans/
NXP中文技术论坛:https://www.nxpic.org.cn/

 

继续阅读
恩智浦推出全新Java卡系统,为安全识别保驾护航

为此,恩智浦半导体近日推出一套最新的Java卡操作系统(JCOP3),主要面向安全识别应用。这套多方案平台可为客户带来更高的安全性与灵活性,客户不仅可以集成自己的小应用程序和个性化解决方案,与此同时还能够缩短产品上市时间。

泛C家族程式语言二十年独领风骚

最近应 JCConf Taiwan 2016 技术研讨会的邀请,做了一场讲题订为“Java 在现今软体开发的角色及竞争力”的分享。Java 约莫是在 90 年末期开始成为主流的程式语言,至今也将近二十年,在这过程中,整个程式语言生态圈随着基础环境的变化,也有了不少更迭。

python这个编程新星能一直耀眼下去吗?

  编程语言领域Python成为了一个耀眼的新星,Python崛起的原因与其本身特点有关,也许它是更加符合开发者的习惯和口味。现在有一种声音说Python将会超越Java成全球最流行编程语言,你又是怎么认为的呢?