亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

【CSDN 編者按】數(shù)百種編程語言層出不窮,關(guān)于誰優(yōu)誰劣的爭(zhēng)議也未曾斷過,但為何總有這種爭(zhēng)論的出現(xiàn),本文作者直擊要害地解析道:「答案很簡(jiǎn)單,因?yàn)槲覀儜小.?dāng)大家學(xué)習(xí)了一種編程語言或技術(shù)之后,就希望圍繞這種編程語言或技術(shù)建立一個(gè)舒適區(qū),然后待在舒適區(qū)內(nèi)固步自封」。

不過,在競(jìng)爭(zhēng)日趨激烈的環(huán)境下,這樣的做法顯然不可取,那么,未來極具潛力的編程語言到底有哪些呢?不妨通過本文的數(shù)據(jù)對(duì)比一探究竟。

原文鏈接:https://medium.com/codex/the-programming-language-s-of-the-future-24af5cfa8479

聲明:本文為 CSDN 翻譯,未經(jīng)允許,禁止轉(zhuǎn)載。

作者 | Ugur Yagmur

譯者 | 彎月 責(zé)編 | 屠敏

出品 | CSDN(ID:CSDNnews)

我喜歡閱讀有關(guān)編程的提問和解答。最近,我經(jīng)??吹揭韵逻@類問題:

 

  • 哪種技術(shù)會(huì)取代 JAVAScript?

  • Kotlin 有機(jī)會(huì)取代 Java 嗎?

  • Rust 會(huì)取代 C++ 嗎?

  • 哪種語言最有希望取代 C?是 D、Go 還是 Rust?

     

我特別喜歡最后一個(gè)提問,因?yàn)樘釂栴}的人非常確信 C 語言會(huì)被取代,還給出了備選答案。我認(rèn)為,自從學(xué)術(shù)論文《Energy Efficiency across Programming Languages》(《編程語言的能耗》:https://greenlab.di.uminho.pt/wp-content/uploads/2017/09/paperSLE.pdf)發(fā)表以來,這類問題的討論越來越頻繁。我認(rèn)為,所有這些問題最終都可以歸結(jié)為一個(gè)常見的問題:將來我們會(huì)使用哪些編程語言?

在本文中,我將引用上述論文的一些結(jié)果,并分析一些其他的統(tǒng)計(jì)信息,看看能不能找到這個(gè)問題的答案。首先申明,我會(huì)盡可能拋開個(gè)人偏見,保持客觀。下面,我們首先來看一看這篇論文。

《編程語言的能耗》論文

如果看過上述論文,你可能對(duì)下面這張表格不陌生:

編程語言的比較,來源《編程語言的能耗》論文

我見過很多次,各大社交媒體平臺(tái)上都有人分享這張表格,相信幾乎無人不知。但是,在深入研究結(jié)果之前,我想先分享一些背景信息。

關(guān)于論文得出的這些結(jié)果,首要問題是這些結(jié)果是如何測(cè)量的。普遍接受的測(cè)量 CPU 性能的方法是基準(zhǔn)測(cè)試。論文的作者也針對(duì)多種編程語言實(shí)施了基準(zhǔn)測(cè)試,他們采用了 10 個(gè)不同的編程問題,然后通過這些語言解決這些問題,統(tǒng)一采用了“計(jì)算機(jī)語言基準(zhǔn)測(cè)試游戲”中定義的算法。下表給出了這些算法及其數(shù)據(jù)大小:

CLBG 的程序庫

此外,他們還根據(jù)下表中給出的范例對(duì)編程語言進(jìn)行了分類:

然而,性能測(cè)試并沒有考慮到編程范式,重要的是編程語言的類型:編譯型、解釋型,還是使用了虛擬機(jī)?編譯語言、虛擬機(jī)語言和解釋語言之間存在明顯的性能以及能耗差異。因此,他們針對(duì)各個(gè)類別,采用這些算法進(jìn)行測(cè)試,這種做法是正確的。

下一步是執(zhí)行計(jì)算機(jī)語言基準(zhǔn)測(cè)試。他們分享了幾個(gè)問題的結(jié)果,我們來看一看。

兩個(gè) CLBG 的結(jié)果

能耗的測(cè)量以焦耳為單位,時(shí)間以秒為單位。而比率是能耗與時(shí)間的比值,得出的是計(jì)算語言的能耗近似值。另外,各個(gè)語言名稱旁邊還有上下箭頭。箭頭代表在根據(jù)執(zhí)行時(shí)間對(duì)這個(gè)表進(jìn)行排序的過程中,該編程語言上升或下降了多個(gè)位。雙線箭頭是同樣的意思,但順序是根據(jù)內(nèi)存使用情況的峰值決定的。

當(dāng)我在社交媒體上看到上面分享的第一個(gè)表格時(shí),我認(rèn)為執(zhí)行時(shí)間的順序也很重要,只不過他們沒有分享。但實(shí)際上他們專門做了執(zhí)行時(shí)間的分析。根據(jù)我們對(duì)指標(biāo)的了解,例如在二叉樹問題上,C、C++ 和 Rust 給出了最好的結(jié)果,但是從內(nèi)存的角度來看,Rust 的性能稍差。另一方面,fannkuch-redux 基準(zhǔn)游戲中的 C 也有著相同的表現(xiàn)。二者沒有明顯的區(qū)別。

fasta CLBG 的結(jié)果

另一方面,fasta 基準(zhǔn)游戲向我們展示了一個(gè)完全不同的表格。各個(gè)語言的性能表現(xiàn)得越來越模糊。但這些都是針對(duì)特定的情況,因此我們可以分析一下其他結(jié)果。

這篇論文還比較了各個(gè)類別下的語言,因此你可以比較一下編譯類型以及解釋類型下各個(gè)語言的表現(xiàn)。下面給出了這三個(gè)類別的語言的測(cè)試結(jié)果。

不同語言之間的度量衡比較

有關(guān)這篇文章的討論到此為止,如果你感興趣,可進(jìn)一步閱讀論文。最終,我們得到的就是下面這張表格(前面分享過):

從最終結(jié)果來看,似乎 C 語言在能耗和性能方面的表現(xiàn)最優(yōu),內(nèi)存除外。但其實(shí)它的內(nèi)存表現(xiàn)也不錯(cuò)。

其次是 Rust 和 C++。因此,我們可以說 C 和 Rust 是最優(yōu)選擇。然而,這幾種語言不支持面向?qū)ο缶幊?。(你可以認(rèn)為Rust支持面向?qū)ο缶幊?,但它只支持接口(?Rust 語言中的特征),而不支持面向?qū)ο缶幊探Y(jié)構(gòu))。

對(duì)于使用面向?qū)ο缶幊痰母鱾€(gè)公司來說,易用性也很重要。老實(shí)說,C、C++ 和 Rust的使用難度都不低,你必須考慮生命周期、動(dòng)態(tài)分配等問題。因此,除了編譯語言、虛擬機(jī)語言和解釋語言之外,我們應(yīng)該把面向?qū)ο筮@個(gè)類別也考慮進(jìn)來。但是,其實(shí)前三個(gè)類別中也存在很多差異和模糊性。如果將易用性和實(shí)現(xiàn)結(jié)構(gòu)也考慮進(jìn)來,那么結(jié)果將變得更加模糊。

到此為止,我們比較了這些語言的能耗、內(nèi)存需求和測(cè)試所需的時(shí)間。然而,我們不能僅通過這些指標(biāo)來決定哪種語言最優(yōu)。但是,如果添加的指標(biāo)過多,結(jié)果就會(huì)變得過于復(fù)雜,無法選擇出一種最優(yōu)的語言,或每種類型中的最優(yōu)語言。

這里,我建議改變一下策略,讓我們假設(shè)人是非常有邏輯的。通常經(jīng)濟(jì)論文會(huì)做這樣的假設(shè),盡管人類并不是特別有邏輯。但是,讓我們假設(shè)人類非常有邏輯,而且很挑剔。那么,我們?nèi)绾尾拍苓x出最優(yōu)語言呢?首先,我們需要分析編程語言的使用趨勢(shì)。如何測(cè)量?網(wǎng)上保存了大量代碼,其中大部分都保存在私人代碼庫中。我們知道所有開發(fā)人員在遇到軟件問題時(shí)都會(huì)使用搜索引擎,因此我們可以看看搜索引擎的統(tǒng)計(jì)數(shù)據(jù)。

google 的統(tǒng)計(jì)結(jié)果

Google 的趨勢(shì)分析工具是向所有人開放的。我曾使用這個(gè)工具來獲取有關(guān)編程語言的 Google 搜索統(tǒng)計(jì)信息,但其中存在一個(gè)限制:只能獲取 5 個(gè)搜索關(guān)鍵字的數(shù)據(jù)。因此,首先我們來看看排名前三的語言(C、C++ 和 Rust)以及 Java 的結(jié)果。

Google 平臺(tái)上自 2004 年以來, C、C++、Rust 和 Java 的趨勢(shì)

Java 的使用量似乎超過了其他編譯語言,但 Java 本身的使用量在逐年下降。C 和 C++ 的結(jié)果非常接近。但是,Rust 的使用量非常低。這可能是因?yàn)樗且环N新語言。

公平地說,雖然相對(duì)于 C 和 C++ 來說,Rust確實(shí)很新,但它是2010 年 7 月發(fā)布的,已經(jīng)過去12年了,這期間并沒有太大的起伏。這個(gè)結(jié)果與上述論文給出的結(jié)果有很大的不同。下面,除了Java之外,我們?cè)偬暨x 4 種不同的語言:Kotlin、JavaScript、Python/ target=_blank class=infotextkey>Python 和 Go。

Google 平臺(tái)上,自 2004 年以來,Java、JavaScript、Python、Go、Kotlin 的趨勢(shì)

這次呈現(xiàn)出的流行趨勢(shì)又變了。Python 最初的流行度很低,但如今已成為炙手可熱的編程語言。Java 和 JavaScript 排在第二位。如今的榜首是 Python,下面我們?cè)俦容^一輪。

Google 平臺(tái)上,自 2004 年以來,Python、JavaScript、Ruby、Swift 和 TypeScript 的趨勢(shì)

看來最終的贏家是 Python!盡管如此,我們還是應(yīng)該盡可能客觀。上述,我們只分析了一個(gè)搜索引擎的統(tǒng)計(jì)數(shù)據(jù),下面,我們來看一看 TIOBE 指數(shù)。


TIOBE 指數(shù)

TIOBE 是一家專門評(píng)估和跟蹤軟件質(zhì)量的公司。你可以通過他們的網(wǎng)站了解更多相關(guān)信息(https://www.tiobe.com/)。他們的主要服務(wù)是測(cè)評(píng)軟件代碼庫的質(zhì)量。他們創(chuàng)建了一個(gè)名為TQI(TIOBE Quality Indicator,TIOBE 質(zhì)量指標(biāo))指標(biāo),下圖是該指標(biāo)的一些示例。

該公司創(chuàng)建了一個(gè)編程語言指數(shù),名叫“TIOBE指數(shù)”。他們利用這個(gè)指數(shù),根據(jù)搜索引擎的流行趨勢(shì)來衡量編程語言的性能。

該指數(shù)最新的結(jié)果如下:

這與Google流行趨勢(shì)給出的結(jié)果非常接近。然而,根據(jù)這個(gè)指數(shù),C是排名第二的編程語言,這有點(diǎn)出乎意料。此外,TIOBE還有一個(gè)編程語言性能的歷史表,如下所示:

很明顯,在很長(zhǎng)的一段時(shí)間里,編程語言一直是 Java 和 C 的天下。后來,Python 流行起來,躍居榜首。我們需要注意,關(guān)鍵在于,流行趨勢(shì)是不斷變化的。以前 Java 是第一,如今變成了 Python。

那么,我們應(yīng)該如何衡量編程語言未來的潛力呢?

未來的可能性

在過去的 10 年里,機(jī)器學(xué)習(xí)和人工智能一直是熱門話題。Python 是此類數(shù)值運(yùn)算的最佳選擇,因?yàn)樗幸粋€(gè)很好的 C API。如果你非常注重性能,那么可以將 Python 與 C、C++ 結(jié)合起來。在這種趨勢(shì)下,根據(jù) Google 搜索引擎和 TIOBE 指數(shù)的結(jié)果來看,Python 是如今使用最廣泛的編程語言。

然而,這并不意味著 Python 的地位保持不變。最近,有一些編程語言展現(xiàn)出了更好的性能,很有可能會(huì)取代 Python,比如 Rust。亞馬遜和 Facebook 已經(jīng)宣布他們改用 Rust 來開發(fā)內(nèi)部的命令行界面工具。另外,linux 6.1 版本之后,內(nèi)核也包含了 Rust。近來 Rust 的呼聲很高,如你所見,它的排名在一年之內(nèi)從第 26 位上升到了第 20 位。

那么,我們究竟該如何預(yù)測(cè)未來呢?

答案

很抱歉,雖然我們花費(fèi)了大量篇幅討論了這么多,但實(shí)際上這個(gè)問題毫無意義。我們不是政客,沒有人給我們預(yù)算或金錢支持這些技術(shù)趨勢(shì)。

那么,我們?yōu)槭裁匆煌5乇容^呢?為什么我們要狂熱地支持一種語言或一種技術(shù)呢?答案很簡(jiǎn)單,因?yàn)槲覀儜小?strong>我們學(xué)習(xí)了一種編程語言或技術(shù),就希望圍繞這種編程語言或技術(shù)建立一個(gè)舒適區(qū),然后呆在舒適區(qū)內(nèi)固步自封。

為什么有人如此狂熱地支持 C 和 C++?因?yàn)樗麄儾幌雽W(xué)習(xí) Rust 這樣的新語言。而反過來,有人狂熱地支持 Rust,是因?yàn)樗麄儾幌雽W(xué) C 和 C++。

說到底,編程語言只是工具,就像螺絲刀一樣。在需要使用圓頭螺絲刀的時(shí)候,你就不能一意孤行使用一字螺絲刀。你需要根據(jù)實(shí)際的情況做決定。沒有任何一種編程語言能夠取代一切,成為終極編程語言。你需要根據(jù)當(dāng)前崗位的要求,選擇使用正確的工具。

分享到:
標(biāo)簽:編程語言
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定