一、Rust語言
一直以來,系統(tǒng)編程語言環(huán)境主要由靠近硬件的語言(如C、C++等)主導(dǎo)。盡管它們可以完全控制程序和硬件,但是它們?nèi)狈?nèi)存安全性。即使它們支持并發(fā),使用C/C++編寫并發(fā)程序也很困難,因?yàn)闆]有并發(fā)安全性。還有一些流行的編程語言是解釋性語言,例如Java、Python、Haskell。這些語言具備安全性,但需要龐大的運(yùn)行時(shí)或虛擬機(jī)。由于它們的運(yùn)行時(shí)間長,因此Java等語言不適合于系統(tǒng)編程。
許多人曾嘗試將C/C++的功能與Java、Haskell的安全性相結(jié)合。然而,Rust才是個(gè)成功實(shí)現(xiàn)了這一點(diǎn)的編程語言。
Graydon Hoare在業(yè)余項(xiàng)目中開發(fā)出了Rust,他的靈感來自研究編程語言Cyclone。Rust是開源的,由Mozilla與許多其他公司和社區(qū)一起領(lǐng)導(dǎo)這門語言的開發(fā)。Rust于2015年首次發(fā)布,并很快引起了社區(qū)的關(guān)注。
主要特征:
通過所有權(quán)和借用概念提供內(nèi)存安全和并發(fā)安全。
內(nèi)存安全和并發(fā)安全在編譯時(shí)確保,即如果程序代碼可以編譯,那么內(nèi)存既安全又沒有數(shù)據(jù)競爭。這是Rust很吸引人的功能。
它還提供了Haskell中元編程的表現(xiàn)力。憑借不可變的數(shù)據(jù)結(jié)構(gòu)和功能編程功能,Rust提供了功能并發(fā)和數(shù)據(jù)并發(fā)。
Rust的速度非??欤僐ust的性能甚至優(yōu)于純C。
在沒有運(yùn)行時(shí)的情況下,Rust可以完全控制現(xiàn)代硬件(TPU、GPU、多核CPU)。
Rust具有LLVM支持。因此,Rust提供的與WebAssembly的互操作性,而且Web代碼也非???。
二、Go語言
在本世紀(jì)初,Google面臨兩個(gè)擴(kuò)展問題:開發(fā)擴(kuò)展和應(yīng)用程序擴(kuò)展。開發(fā)擴(kuò)展問題指的是他們不能僅通過投入開發(fā)人員的方式來添加更多功能。應(yīng)用程序擴(kuò)展問題則指他們無法開發(fā)出一款能夠擴(kuò)展到Google級(jí)別的計(jì)算機(jī)集群的應(yīng)用程序。
所以在2007年左右,Google創(chuàng)建了一種新的編程語言,用于解決這兩個(gè)擴(kuò)展問題。兩位才華橫溢的Google軟件工程師Rob Pike(UTF-8)和Ken Thompson(UNIX OS)創(chuàng)建了一種新語言。
2012年,Google正式發(fā)布了版的Go編程語言。Go是一種系統(tǒng)編程語言,但與Rust不同,它還具有Runtime和垃圾收集器(幾兆字節(jié))。但是與Java或Python不同,這個(gè)Runtime包含了生成的代碼。Go生成了一個(gè)本地的二進(jìn)制代碼,可以在沒有附加依賴項(xiàng)或運(yùn)行時(shí)的情況下在計(jì)算機(jī)中運(yùn)行。
主要特征:
Go具有并發(fā)支持。Go不通過線程和鎖提供“共享內(nèi)存”并發(fā)性,因?yàn)榫幊屉y度太大。相反,它提供了基于CSP的消息傳遞并發(fā)性(基于Tony Hoare的論文)。Go使用“Goroutine”(輕量級(jí)綠色線程)和“Channel”進(jìn)行消息傳遞。
Go很大的殺手級(jí)功能是:簡單,它是非常簡單的系統(tǒng)編程語言。新手軟件開發(fā)人員只需幾天就可以編寫高效的代碼,就像Python一樣。有些大規(guī)模的云原生項(xiàng)目(如Kubernetes、Docker)都是用Go編寫的。
Go還內(nèi)置了垃圾收集器,這意味著開發(fā)人員無需擔(dān)心C/C++中的內(nèi)存管理問題。
Google投入了大量資金打造Go。因此Go擁有大量的工具支持。新手Go開發(fā)人員擁有大量的工具生態(tài)系統(tǒng)。
一般,開發(fā)人員80%的時(shí)間都花在了維護(hù)現(xiàn)有代碼上,用于編寫新代碼的時(shí)間只占20%。由于其簡單性,Go在語言維護(hù)方面表現(xiàn)出色。如今,Go在業(yè)務(wù)應(yīng)用程序中大量使用。
三、Kotlion語言
ava是企業(yè)軟件開發(fā)領(lǐng)域無可爭議的王者。近年來,Java受到了一些負(fù)面評(píng)論:過于冗長,大量樣板代碼,容易出現(xiàn)意外的復(fù)雜性。但是,關(guān)于Java虛擬機(jī)(JVM)的爭論卻很少。JVM是軟件工程的杰作,經(jīng)過了時(shí)間的考驗(yàn),提供了硬核的runtime。
多年來,Scala等JVM語言一直在努力克服Java的缺點(diǎn),想成為更好的Java,但他們都失敗了。這場提升Java的探索以Kotlin的誕生結(jié)束。Jet Brains(流行的IDE IntelliJ背后的公司)開發(fā)了Kotlin,它可以在JVM上運(yùn)行,克服了Java的很多缺點(diǎn),提供許多現(xiàn)代功能。
與Scala不同的是,Kotlin比Java更簡單,還可在JVM中提供與Go或Python開發(fā)人員同等的生產(chǎn)力。
Google宣布Kotlin是的Android應(yīng)用開發(fā)語言,因此Kotlin在社區(qū)中的接受度得到了大幅提高。自2017年以來,同樣受歡迎的Java Enterprise框架Spring也開始支持Kotlin。我曾嘗試結(jié)合Kotlin與Reactive Spring使用,體驗(yàn)非常棒。
主要特征:
Kotlin的主要賣點(diǎn)在于其語言設(shè)計(jì)。我總是將Kotlin視為JVM上的Go/Python,因?yàn)樗啙嵜髁说拇a。因此,Kotlin的生產(chǎn)力很高。
與許多其他現(xiàn)代語言一樣,Kotlin提供了Null指針、安全性、類型推斷等功能。
由于Kotlin也運(yùn)行在JVM中,因此現(xiàn)有Java庫龐大的生態(tài)系統(tǒng)都可供使用。
Kotlin是的Android應(yīng)用開發(fā)語言,并且已經(jīng)超過Java,成為開發(fā)Android應(yīng)用的首選。
Kotlin得到了JetBrains和Open Source的支持,因此具有出色的工具支持。
Kotlin有兩個(gè)有趣的項(xiàng)目:Kotlin Native(將Kotlin編譯為原生代碼)和kotlin.js(Kotlin到JavaScript)。如果成功,則可以在JVM外部使用Kotlin。
Kotlin還提供了一種簡單的方式來編寫DSL(域特定語言)。上海軟件開發(fā)培訓(xùn)學(xué)校
四、TypeScript語言
JavaScript是一門優(yōu)秀的編程語言,在2015年之前,JavaScript有很多缺點(diǎn)。著名的軟件工程師Douglas Crockford寫了一本書名為《JavaScript:The Good Parts》,暗示了JavaScript有很糟的部分。無模塊化,還有“回調(diào)地獄”,因此開發(fā)人員都不喜歡維護(hù)特別大的JavaScript項(xiàng)目。
Google甚至還開發(fā)了一個(gè)平臺(tái),可將Java代碼反編譯為JavaScript代碼(GWT)。許多公司和個(gè)人都曾嘗試開發(fā)更好的JavaScript,例如CoffeeScript、Flow、ClojureScript。微軟的TypeScript取得了成功。
微軟的一隊(duì)工程師在著名的Anders Hejlsberg的帶領(lǐng)下,創(chuàng)建了JavaScript的靜態(tài)類型、模塊化超集——TypeScript。
TypeScript可以編譯為JavaScript。于2014年首次發(fā)布后,TypeScript很快引起了社區(qū)的關(guān)注。Google當(dāng)時(shí)還計(jì)劃開發(fā)JavaScript的靜態(tài)類型超集。Google對(duì)TypeScript青睞有加,以至于他們沒有開發(fā)新的語言,而是選擇與微軟合作改進(jìn)TypeScript。
Google選擇TypeScript作為其SPA框架Angular 2+的主要編程語言。此外,流行的SPA框架React也提供對(duì)TypeScript的支持。另一個(gè)流行的JavaScript框架Vue.js也宣布將使用TypeScript開發(fā)新的Vue.js 3:
另外,node.js的創(chuàng)建者Ryan Dahl已決定使用TypeScript來開發(fā)安全的Node.js替代品Deno。
主要特征:
與Go或Kotlin同樣,TypeScript的主要特征也是語言設(shè)計(jì)。TypeScript憑借其簡潔明快的代碼,成為了目前優(yōu)雅的編程語言之一。就開發(fā)人員的生產(chǎn)力而言,它與JVM或Go/Python上的Kotlin并駕齊驅(qū)。TypeScript是生產(chǎn)力較高的JavaScript超集。
TypeScript是JavaScript的強(qiáng)類型超集,特別適合大型項(xiàng)目,而且可以稱為“可擴(kuò)展的JavaScript”。
單頁應(yīng)用程序框架的“三巨頭”(Angular、React、Vue.js)為TypeScript提供了出色的支持。在Angular中,TypeScript是首選的編程語言。在React和Vue.js中,TypeScript越來越受歡迎。
較大的兩家技術(shù)巨頭:微軟和Google正在合作開發(fā)由活躍的開源社區(qū)支持的TypeScript。因此,TypeScript擁有較好的工具支持。
由于TypeScript是JavaScript的超集,因此凡是可以運(yùn)行JavaScript的任何地方都可以運(yùn)行TypeScript,包括瀏覽器、服務(wù)器、移動(dòng)設(shè)備、物聯(lián)網(wǎng)設(shè)備和云。
五、Swift語言
當(dāng)初喬布斯拒絕在iOS中支持Java(和JVM),他認(rèn)為Java不再是主流編程語言。如今我們發(fā)現(xiàn)喬布斯當(dāng)初的估計(jì)是錯(cuò)的,雖然iOS仍然不支持Java。蘋果選擇了Objective-C作為iOS中的首選編程語言。Objective-C是一門很難掌握的語言,它不支持現(xiàn)代編程語言所要求的高生產(chǎn)力。
后來,蘋果的Chris Lattner和其他人開發(fā)了一種多范例、通用的、編譯編程語言——Swift,來替代Objective-C。Swift的個(gè)穩(wěn)定版本于2014年發(fā)布。Swift還支持LLVM編譯器工具鏈(也由Chris Lattner開發(fā))。Swift與Objective-C代碼庫具有出色的互操作性,并且已確立為iOS應(yīng)用開發(fā)中的主要編程語言。
主要特征:
Swift的殺手級(jí)功能之一是其語言設(shè)計(jì)。語言本身很簡單,語法簡潔,比Objective-C更高效。
Swift還提供了現(xiàn)代程序語言的功能:null安全。此外,它還提供了語法糖來避免“厄運(yùn)金字塔”。
作為一種編譯語言,Swift和C++一樣快。
Swift支持LLVM編譯器工具鏈。因此,我們可以在服務(wù)器端編程,甚至瀏覽器編程(使用WebAssembly)中使用Swift。
Swift提供了自動(dòng)引用計(jì)數(shù)(ARC)支持,可抑制內(nèi)存管理的不善。
六、Dart語言
Dart是Google出品的第二大編程語言。Google是Web和Android領(lǐng)域的巨頭,因此Google在Web和應(yīng)用領(lǐng)域開發(fā)自己的編程語言也不足為奇。在丹麥軟件工程師Lars Bak(領(lǐng)導(dǎo)Chrome的JavaScript V8引擎開發(fā))的帶領(lǐng)下,Google于2013年發(fā)布了Dart。
Dart是一種通用編程語言,支持“強(qiáng)類型”和“面向?qū)ο蟆本幊?。Dart也可以轉(zhuǎn)編譯為JavaScript,凡是JavaScript可以運(yùn)行的任何地方(例如Web、移動(dòng)、服務(wù)器)幾乎都可以運(yùn)行Dart。
主要特征:
與Go一樣,Dart也非常注重開發(fā)人員的工作效率。由于Dart簡潔的語法,以及高效的生產(chǎn)力,受到開發(fā)人員的喜愛。
Dart還提供“強(qiáng)類型”和“面向?qū)ο蟆本幊獭?br />
Dart是少數(shù)同時(shí)支持JIT編譯(運(yùn)行時(shí)編譯)和AOT編譯(創(chuàng)建時(shí)編譯)的編程語言之一。因此,Dart可以針對(duì)JavaScript運(yùn)行時(shí)(V8引擎),并且Dart可以編譯為快速的原生代碼(AOT編譯)。
跨平臺(tái)原生應(yīng)用程序開發(fā)平臺(tái)Flutter選擇了Dart作為開發(fā)iOS和Android應(yīng)用的編程語言。從那以后,Dart的流行度越來越高。
與Goog的Go編程語言一樣,Dart也具有出色的工具支持和龐大的Flutter生態(tài)系統(tǒng)。Flutter的日益普及也會(huì)推動(dòng)Dart的采用率升高。
七、Julia語言
本文提及的大多數(shù)編程語言都是由大型公司開發(fā)的,但Julia是個(gè)例外??萍加?jì)算領(lǐng)域通常都會(huì)使用動(dòng)態(tài)語言,例如Python、Matlab。雖然這些語言提供易于使用的語法,但不適用于大規(guī)模的科技計(jì)算。他們需要使用C/C++庫執(zhí)行CPU密集型任務(wù),因此這就產(chǎn)生了著名的“兩種語言”的問題,因?yàn)樗麄冃枰澈洗a來綁定兩種語言。由于編寫的代碼需要在兩種語言之間來回切換,因此總是會(huì)損失部分性能。
為了解決這個(gè)問題,麻省理工學(xué)院的一隊(duì)研究人員計(jì)劃從頭開始創(chuàng)建一種新的語言,這種語言既可以利用現(xiàn)代硬件的優(yōu)勢,而且還結(jié)合其他語言的優(yōu)勢。于是,Julia誕生了。
Julia是一種動(dòng)態(tài)的高級(jí)編程語言,提供的并發(fā)、并行和分布式計(jì)算支持。Julia的個(gè)穩(wěn)定版本于2018年發(fā)布,并很快受到社區(qū)和行業(yè)的關(guān)注。Julia可用于科學(xué)計(jì)算、人工智能和許多其他領(lǐng)域,而且還可以解決“兩種語言”的問題。
主要特征:
與Rust一樣,Julia的主要特征在于語言的設(shè)計(jì)。這種語言在不犧牲性能的情況下,將高性能和科學(xué)計(jì)算中現(xiàn)有編程語言的一些功能結(jié)合在一起。就目前的情況來看,Julia出色地完成了這項(xiàng)任務(wù)。
Julia是一種動(dòng)態(tài)編程語言,支持類型系統(tǒng)但類型不是必須的。因此,Julia這種編程語言很容易學(xué)習(xí),生產(chǎn)力很高。
Julia的核心是多調(diào)度編程范例。
Julia內(nèi)部支持并發(fā)、并行和分布式計(jì)算。
Julia為I/O密集型任務(wù)提供異步I/O。
Julia的運(yùn)行速度非???,可用于需要數(shù)百萬個(gè)線程的科學(xué)計(jì)算。
上海軟件開發(fā)培訓(xùn)-軟件開發(fā)常用的幾大編程語言
發(fā)布時(shí)間:2020-08-18 10:08:11 已幫助:270人
上一篇:上海高考復(fù)讀新政解讀