快捷搜索:

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

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

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

本文引用地址:

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

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

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

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

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

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

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

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

您可能还会对下面的文章感兴趣: