程式语言二十年风云历史回顾

分享到:

Java 約莫是在 90 年末期開始成為主流的程式語言,至今也將近二十年,在這過程中,整個程式語言生態圈隨著基礎環境的變化,也有了不少更迭。原先的主流程式語言影響力有所變化、也有不少語言加入,各據山頭、各擁支持者。回顧這二十年來的變化,不難有些觀察。

當前4大熱門的程式語言都有密切關係

讓我們先來看看 TIOBE 在 2016 年十月所做的熱門語言排行。

基本上,前五名和去年同期相比,都是相同的。除了遇到了很大的基礎條件變化,否則,程式語言的熱門程度也不致於突然有很大的變動。

TIOBE 的排名時常在網路上被引用,常是特定語言的支持者為了引證自己支持的程式語言所用,而 TIOBE 的排名,主要是根據主流搜尋引擎、部落格、維基百科、YouTube 等網路服務上的搜尋次數綜合起來的指標計算而成的,所以它反映出來的是一種熱門程度。當然,必須要留意的是,熱門不等同於好,熱門也不等同於重要,程式語言的好壞、重要與否,或許跟熱門程度有點相關,但卻無法直接畫上等號。

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

1.1
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++ 演化上的近親,即使十分相像,但因為在幾個關鍵因素上的不同,就決定了究竟誰得遭受到掠奪的命運。
1.2
上圖是 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# 系出同源,佔據了這份排行榜的前四名,它們都是屬於靜態型別的程式語言,這是個很有趣的現象,因為前十名中的其餘六種程式語言,都是屬於動態型別的程式語言。

 

更多Atmel及科技资讯请关注:  
Atmel中文官网:https://www.atmel.com/zh/cn/
Atmel技术论坛:https://atmel.eefocus.com/
Atmel中文博客:https://blog.sina.com.cn/u/2253031744
Atmel新浪微博:https://www.weibo.com/atmelcn

继续阅读
一篇文章带你盘点11种基于ARM的嵌入式操作系统

TinyOS是一个开源的嵌入式操作系统,它是由加州大学的伯利克分校开发出来的,主要应用于无线传感器网络方面。程序采用的是模块化设计,所以它的程序核心往往都很小,一般来说核心代码和数据大概在400 Bytes左右,能够突破传感器存储资源少的限制。TinyOS提供一系列可重用的组件,一个应用程序可以通过连接配置文件(A Wiring Specification)将各种组件连接起来,以完成它所需要的功能。

医疗如何智能化?微软拿出了这四样法宝

微软公司宣布推出一系列新的云计算和人工智能技术,作为其Healthcare NExT计划的一部分。微软研究公司副总裁兼Healthcare NExT计划负责人Peter Lee表示,新项目的重点是改善医院和诊所的护理状况。

盖茨:电动汽车与无人驾驶将会成为伟大的技术

一名Reddit用户询问盖茨:为什么比尔和梅林达·盖茨基金会对交通领域没有太大关注,盖茨回应称,在这个领域,私人部门“对创新的奖励更高”,他还对电动汽车和无人驾驶汽车的未来表示乐观。盖茨写道:“我认为电动汽车和无人驾驶汽车将成为伟大的东西。”

AI未必真公正,人脸识别有歧视?

《纽约时报》近日发表文章,称人脸识别技术的发展近来可谓突飞猛进,目前已经有一些商业软件可以用来识别照片中人物的性别,当照片中的人是白人时,99%的情况下识别结果都是正确的,但如果照片中是黑人,错误率就比较高了。

属于互联网的17年,这三个关键词少不了

我们如果回首看 2007 年全球市值最高的前 10 大公司,互联网相关的只有微软入榜。算半个互联网企业吧。其他霸主都是埃克森美孚、中国石油、通用电气、中国工商银行、俄罗斯天然气、AT&T 等能源、银行、通讯领域的实业巨头。

©2019 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss