新闻中心

EEPW首页 > 嵌入式系统 > 业界动态 > 泛C家族程序语言二十年独领风骚

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

作者:时间:2016-11-14来源:ithome收藏
编者按:程式语言生态随时间而有所变化,以现在来看,Java、C、C++、C#是最热门的语言

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

本文引用地址:http://www.eepw.com.cn/article/201611/340125.htm

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

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

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

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

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

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

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

  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++ 演化上的近亲,即使十分相像,但因为在几个关键因素上的不同,就决定了究竟谁得遭受到掠夺的命运。

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



关键词: C C++

评论


相关推荐

技术专区

关闭