<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 業(yè)界動(dòng)態(tài) > 泛C家族程序語(yǔ)言二十年獨(dú)領(lǐng)風(fēng)騷

          泛C家族程序語(yǔ)言二十年獨(dú)領(lǐng)風(fēng)騷

          作者: 時(shí)間:2016-11-14 來(lái)源:ithome 收藏
          編者按:程式語(yǔ)言生態(tài)隨時(shí)間而有所變化,以現(xiàn)在來(lái)看,Java、C、C++、C#是最熱門的語(yǔ)言

            最近應(yīng) Jonf Taiwan 2016 技術(shù)研討會(huì)的邀請(qǐng),做了一場(chǎng)講題訂為“Java 在現(xiàn)今軟體開(kāi)發(fā)的角色及競(jìng)爭(zhēng)力”的分享。Java 約莫是在 90 年末期開(kāi)始成為主流的程式語(yǔ)言,至今也將近二十年,在這過(guò)程中,整個(gè)程式語(yǔ)言生態(tài)圈隨著基礎(chǔ)環(huán)境的變化,也有了不少更迭。

          本文引用地址:http://www.ex-cimer.com/article/201611/340125.htm

            原先的主流程式語(yǔ)言影響力有所變化、也有不少語(yǔ)言加入,各據(jù)山頭、各擁支持者。回顧這二十年來(lái)的變化,不難有些觀察。

            當(dāng)前4大熱門的程式語(yǔ)言都有密切關(guān)系

            讓我們先來(lái)看看 TIOBE 在 2016 年十月所做的熱門語(yǔ)言排行。

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

            TIOBE 的排名時(shí)常在網(wǎng)路上被引用,常是特定語(yǔ)言的支持者為了引證自己支持的程式語(yǔ)言所用,而 TIOBE 的排名,主要是根據(jù)主流搜尋引擎、部落格、維基百科、YouTube 等網(wǎng)路服務(wù)上的搜尋次數(shù)綜合起來(lái)的指標(biāo)計(jì)算而成的,所以它反映出來(lái)的是一種熱門程度。當(dāng)然,必須要留意的是,熱門不等同于好,熱門也不等同于重要,程式語(yǔ)言的好壞、重要與否,或許跟熱門程度有點(diǎn)相關(guān),但卻無(wú)法直接畫上等號(hào)。

            可以發(fā)現(xiàn)前四名都是血統(tǒng)相近、同一家族的,即:Java、、,以及 C#。

            TIOBE 在 2016 年十月所做的熱門語(yǔ)言排行,Java、C、、C#名列前4大。

            C、、Java之間的淵源

            C++ 從 C 衍生而來(lái)。歷史上,C++ 以 C 的語(yǔ)法為基礎(chǔ),發(fā)展出可支援物件導(dǎo)向程式設(shè)計(jì)的程式語(yǔ)言。一度挾著物件導(dǎo)向設(shè)計(jì)方式所帶來(lái)的生產(chǎn)力,而大大的流行起來(lái),但 C++ 落實(shí)在實(shí)際開(kāi)發(fā)中也被觀察到一些問(wèn)題,因此有了 Java 的問(wèn)世。

            Java 最早是為了嵌入式系統(tǒng)的需求而設(shè)計(jì),真正開(kāi)始大放異彩,卻是從 WWW 的風(fēng)行開(kāi)始。在那個(gè) WWW 只有靜態(tài)網(wǎng)頁(yè)效果的年代,Java Applet 提供了更多動(dòng)態(tài)的可能性,它讓網(wǎng)頁(yè)足以執(zhí)行程式,不論是計(jì)算或是呈現(xiàn)動(dòng)態(tài)視覺(jué)效果,甚至是提供更豐富的使用者操作介面,Applet 都能辦到。這讓 Java 真正的讓更多程式設(shè)計(jì)者重視,也讓 Java 真正的進(jìn)到了尋常百姓家。一時(shí)之間,想在網(wǎng)頁(yè)上提供更豐富互動(dòng)效果的程式設(shè)計(jì)者,都紛紛開(kāi)始用起了Java。

            基于種種原因,Java Applet 流行的時(shí)間并不長(zhǎng)久,但 Java 程式語(yǔ)言并未因此而衰弱,反而在伺服器端找到了更合適的戰(zhàn)場(chǎng),也奠定了接下來(lái)雄霸市場(chǎng)的基礎(chǔ)。當(dāng) Sun 推出了以所謂 “Servlet” 為基礎(chǔ)的 Web 伺服器端的架構(gòu)時(shí),相較于當(dāng)時(shí)流行的、以 C/C++ 或 Perl 為主要語(yǔ)言寫成的 CGI 程式來(lái)說(shuō),在效能及生產(chǎn)力上,都有很好的表現(xiàn)。從此以后,成為一大主流。再加上諸多搭配的因素,使得 Java 不斷的擴(kuò)增版圖,最后取得了主宰的地位。

           Java與C++的瑜亮情結(jié)

            C++ 在很多面向上,和 Java 接近,我常說(shuō),Java 是 C++--,也就是 Java 的設(shè)計(jì)者試著去除他認(rèn)為 C++ 中需要被簡(jiǎn)化的部份,因?yàn)?C++ 相較于 Java 其實(shí)復(fù)雜許多。

            但為什么 Java 的出現(xiàn)對(duì) C++ 造成的沖擊,大過(guò)于 C 呢?我認(rèn)為,就跟現(xiàn)代智人與尼安塔人間的競(jìng)爭(zhēng)一樣,一個(gè)生物物種最大的威脅,往往就是它在演化上的近親。因?yàn)槟岚菜撕同F(xiàn)代智人在演化上很接近,也因此它們所需的資源及環(huán)境也大幅重疊,當(dāng)其中之一開(kāi)始?jí)汛髸r(shí),另一勢(shì)必遭殃。因此,尼安塔人滅絕了。而 C++ 就很像尼安塔人,被自己在演化上的近親 Java 掠奪走了許多的資源及根據(jù)地,所以受創(chuàng)慘重。

            和 Java 相比,C++ 可以歸類在“魔幻語(yǔ)言”,而 Java 卻是典型的“簡(jiǎn)約語(yǔ)言”。我相信 C++ 及 Java 在語(yǔ)言設(shè)計(jì)上,都是以著眼生產(chǎn)力而出發(fā),但 Java 語(yǔ)言舍棄了華麗的表現(xiàn)方式,選擇了“大巧不工”的路線。不留太多取巧的空間、看似笨拙卻避免犯錯(cuò)。事實(shí)上,避免犯錯(cuò)也正是提高生產(chǎn)力的重要原因,一個(gè)程式臭蟲要花費(fèi)數(shù)倍于撰寫程式的時(shí)間,才能予以發(fā)掘、修正。

            除了語(yǔ)言本身以簡(jiǎn)樸為要實(shí)證獲得生產(chǎn)力之外,Java 以一個(gè)設(shè)計(jì)良好的核心程式庫(kù)為基礎(chǔ),搭配強(qiáng)大活躍的開(kāi)放原始碼社群的貢獻(xiàn),有著充沛的非官方程式庫(kù)支援,更使得開(kāi)發(fā)的生產(chǎn)力大為提升,各種工具一應(yīng)俱全。

            就像著名的 Jakarta Apache Project 中的專案一樣,自成一個(gè)生態(tài)圈,而且構(gòu)成正向的循環(huán)。各專案間彼此相互沿用、沒(méi)有文人相輕的問(wèn)題,你做車體、我做輪子,彼此可以相互整合,這使得生態(tài)圈中的專案愈來(lái)愈豐富,品質(zhì)也夠好。

            Java 做為 C++ 演化上的近親,即使十分相像,但因?yàn)樵趲讉€(gè)關(guān)鍵因素上的不同,就決定了究竟誰(shuí)得遭受到掠奪的命運(yùn)。

            上圖是 TIOBE 統(tǒng)計(jì)十幾年來(lái)的程式語(yǔ)言熱門程度的消長(zhǎng),大致可以看出 Java 的熱門程度,幾乎不衰。而 Java 的祖先 C 語(yǔ)言,也大致維持第二、甚至有時(shí)竄升到第一。而從這張圖上也可以清楚看出來(lái),C++ 整體呈下降的趨勢(shì)。

            C#受限于微軟早年固守平臺(tái)策略而失去先機(jī)

            那么 Java 有沒(méi)有具威脅力的演化近親?有的,正好是 TIOBE 排行里第四名的 C#。

            C# 仿效 Java 再改良是毫無(wú)疑問(wèn)的,部份 C# 先進(jìn)的語(yǔ)法,Java 甚至到了近期才加入。

            和 Java 一樣,C#是采取可跨平臺(tái)的虛擬機(jī)器架構(gòu)(雖然 C# 初期只能運(yùn)行在 Windows 平臺(tái)),一樣有著記憶體回收機(jī)制、單一繼承體系的核心程式庫(kù)架構(gòu),再怎么看,C# 都是 Java 極具威脅性的演化近親,可惜,微軟自己自廢武功,把 C# 這頭猛獸囚禁在 Windows 的平臺(tái)之上。

            微軟大概是想重施舊計(jì),把昔日利用 Windows 作業(yè)系統(tǒng)優(yōu)勢(shì),使得 IE 干掉 Netscape 的劇情,重新在 C# vs. Java 的故事中重新上演,可惜,作業(yè)系統(tǒng)平臺(tái)的優(yōu)勢(shì)到了 Web 時(shí)代,早就不復(fù)存在。即使之后微軟將 .NET 核心開(kāi)放原始碼,也已經(jīng)時(shí)不我予了。因此,C# 和 Java 之間的距離還是夠懸殊。

            Java、C、C++、C# 系出同源,占據(jù)了這份排行榜的前四名,它們都是屬于靜態(tài)型別的程式語(yǔ)言,這是個(gè)很有趣的現(xiàn)象,因?yàn)榍笆械钠溆嗔N程式語(yǔ)言,都是屬于動(dòng)態(tài)型別的程式語(yǔ)言。在下一回中,我會(huì)繼續(xù)說(shuō)明之所以會(huì)有這兩大集團(tuán),以及靜態(tài)型別程式語(yǔ)言為何領(lǐng)先在前的看法。



          關(guān)鍵詞: C C++

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();