你好,很高興為你解答。

為博興等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及博興網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、博興網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
專訪資深程序員莊曉立:我為什么要選擇Rust?
Rust是由Mozilla開(kāi)發(fā)的注重安全、性能和并發(fā)性的編程語(yǔ)言。這門語(yǔ)言自推出以來(lái)就得到了國(guó)內(nèi)外程序員的大力推崇。Rust聲稱解決了傳統(tǒng)C語(yǔ)言和C++語(yǔ)言幾十年來(lái)飽受責(zé)難的內(nèi)存安全問(wèn)題,同時(shí)還保持了極高的運(yùn)行效率、極深的底層控制、極廣的應(yīng)用范圍。但在國(guó)內(nèi)有關(guān)Rust的學(xué)習(xí)文檔并不多見(jiàn),不久前,筆者聯(lián)系上了Rust1.0版本代碼貢獻(xiàn)者莊曉立(精彩博文:為什么我說(shuō)Rust是靠譜的編程語(yǔ)言),請(qǐng)他分享Rust語(yǔ)言特性以及學(xué)習(xí)經(jīng)驗(yàn)。
CSDN:你是從什么時(shí)候開(kāi)始接觸Rust語(yǔ)言的?是什么地方吸引了你?
莊曉立:我大概從2013年后半年開(kāi)始深入接觸Rust語(yǔ)言。它居然聲稱解決了傳統(tǒng)C語(yǔ)言和C++語(yǔ)言幾十年來(lái)飽受責(zé)難的內(nèi)存安全問(wèn)題,同時(shí)還保持了極高的運(yùn)行效率、極深的底層控制、極廣的應(yīng)用范圍。
其ownership機(jī)制令人眼前一亮,無(wú)虛擬機(jī)(VM)、無(wú)垃圾收集器(GC)、無(wú)運(yùn)行時(shí)(Runtime)、無(wú)空指針/野指針/內(nèi)存越界/緩沖區(qū)溢出/段錯(cuò)誤、無(wú)數(shù)據(jù)競(jìng)爭(zhēng)(Data Race)……所有這些,都深深地吸引了我——這個(gè)十多年以來(lái)深受C語(yǔ)言折磨的痛并快樂(lè)著的程序員。
CSDN:在你看來(lái),Rust是怎樣的一門語(yǔ)言?它適合開(kāi)發(fā)什么類型的項(xiàng)目?為何你會(huì)說(shuō)Rust不懼怕任何競(jìng)爭(zhēng)對(duì)手,它既能取代C語(yǔ)言地位;又可挑戰(zhàn)C++市場(chǎng),還可向Java、Python分一杯羹?與這些語(yǔ)言相比,Rust有哪些優(yōu)越的特性?
莊曉立:Rust是一門系統(tǒng)編程語(yǔ)言,特別適合開(kāi)發(fā)對(duì)CPU和內(nèi)存占用十分敏感的系統(tǒng)軟件,例如虛擬機(jī)(VM)、容器(Container)、數(shù)據(jù)庫(kù)/游戲/網(wǎng)絡(luò)服務(wù)器、瀏覽器引擎、模擬器等,而這些向來(lái)主要都是C/C++的傳統(tǒng)領(lǐng)地。
此外,Rust在系統(tǒng)底層開(kāi)發(fā)領(lǐng)域,如裸金屬(bare metal)、操作系統(tǒng)(OS)、內(nèi)核(kernel)、內(nèi)核模塊(mod)等,也有強(qiáng)勁的實(shí)力,足以挑戰(zhàn)此領(lǐng)域的傳統(tǒng)老大C語(yǔ)言。Rust豐富的語(yǔ)言特性、先進(jìn)的設(shè)計(jì)理念、便捷的項(xiàng)目管理,令它在上層應(yīng)用開(kāi)發(fā)中也能大展拳腳,至少在運(yùn)行性能上比帶VM和GC的語(yǔ)言要更勝一籌。無(wú)GC實(shí)現(xiàn)內(nèi)存安全機(jī)制、無(wú)數(shù)據(jù)競(jìng)爭(zhēng)的并發(fā)機(jī)制、無(wú)運(yùn)行時(shí)開(kāi)銷的抽象機(jī)制,是Rust獨(dú)特的優(yōu)越特性。
其他語(yǔ)言很難同時(shí)實(shí)現(xiàn)這些目標(biāo),例如傳統(tǒng)C/C++無(wú)法保證內(nèi)存安全,Java/Python等無(wú)法消除運(yùn)行時(shí)開(kāi)銷。但Rust畢竟還是很年輕的項(xiàng)目,它釋放影響力需要時(shí)間,被世人廣泛接受需要時(shí)間;它的潛力能否爆發(fā)出來(lái),需要時(shí)間去檢驗(yàn)。我們只需耐心等待。
CSDN:Rust在國(guó)內(nèi)有沒(méi)有具體的實(shí)際使用案例?
莊曉立:因?yàn)镽ust1.0正式版剛剛發(fā)布不足一月,在國(guó)內(nèi)影響力還不大,我們不能苛求它在國(guó)內(nèi)有實(shí)際應(yīng)用案例。但是在國(guó)外,一兩年前就已經(jīng)有OpenDNS和Skylight把Rust應(yīng)用在生產(chǎn)環(huán)境。還有瀏覽器引擎Servo、Rust編譯器和標(biāo)準(zhǔn)庫(kù)、項(xiàng)目管理器Cargo等“兩個(gè)半大型應(yīng)用案例”。這些足夠說(shuō)明Rust語(yǔ)言的成熟和實(shí)用。
CSDN:你參與了Rust1.0版本代碼貢獻(xiàn),目前該版本正式版已經(jīng)發(fā)布,對(duì)此你感覺(jué)如何?這門語(yǔ)言是否已經(jīng)達(dá)到比較成熟的階段?
莊曉立:我積極參與了Rust語(yǔ)言開(kāi)源項(xiàng)目,多次貢獻(xiàn)源代碼,曾連續(xù)三次出現(xiàn)在Rust官方博客公布的Rust 1.0 alpha、Rust 1.0 beta和Rust 1.0正式版的貢獻(xiàn)者名單中。在Rust 1.0正式版出臺(tái)的過(guò)程中及此前的很長(zhǎng)一段時(shí)間,開(kāi)發(fā)者付出了極大的努力,確保Rust 1.0正式版在Semver 2.0規(guī)范下,務(wù)必保持向后兼容性,除非遇到重大Bug不得不修復(fù)。
我認(rèn)為,在1.0正式發(fā)布之后,Rust就已經(jīng)進(jìn)入了比較成熟的階段。而且,Rust還在快速迭代發(fā)展過(guò)程中,1.0發(fā)布6周后將發(fā)布1.1,再6周后將發(fā)布1.2,必然會(huì)一步一個(gè)臺(tái)階,越來(lái)越成熟穩(wěn)定。
CSDN:除了功能優(yōu)先級(jí)以外,在你看來(lái),Rust正在朝什么方向發(fā)展?未來(lái)的Rust可以期待什么樣的特性?
莊曉立:Rust一定會(huì)沿著“確保內(nèi)存安全、無(wú)運(yùn)行開(kāi)銷、高效實(shí)用”的既定方向持續(xù)發(fā)展。在短期內(nèi)值得期待的語(yǔ)言特性有:動(dòng)態(tài)Drop、偏特化、繼承、改進(jìn)borrow checker、改進(jìn)宏和語(yǔ)法擴(kuò)展。短期內(nèi)值得期待的其他特性有:增強(qiáng)文件系統(tǒng)API、提供內(nèi)存申請(qǐng)釋放API、更好地支持Windows和ARM、更快的編譯速度、更方便的二進(jìn)制分發(fā)機(jī)制(MUSL)、更實(shí)用的工具等等。
CSDN:據(jù)我了解,你之前也比較推崇Go語(yǔ)言,為何想到放棄Go轉(zhuǎn)向Rust?
莊曉立:推崇Go語(yǔ)言還談不上,不過(guò)我曾經(jīng)嘗試努力接受Go語(yǔ)言,2011底年開(kāi)始我曾經(jīng)花費(fèi)將近半年時(shí)間深度關(guān)注Go開(kāi)發(fā)進(jìn)程,提了很多具體的改進(jìn)意見(jiàn)和建議,也曾經(jīng)多次嘗試貢獻(xiàn)源代碼。后來(lái)考慮到Go語(yǔ)言的設(shè)計(jì)理念跟我偏差太大,其社區(qū)也不太友好,慢慢地疏遠(yuǎn)了它。我曾經(jīng)寫過(guò)一篇博客《我為什么放棄Go語(yǔ)言》,談到了很多具體的原因。
CSDN:國(guó)內(nèi),參與Rust代碼貢獻(xiàn)的開(kāi)發(fā)者多嗎?有核心的人員嗎?有哪些社區(qū)在維護(hù)Rust?
莊曉立:國(guó)內(nèi)參與Rust代碼貢獻(xiàn)的開(kāi)發(fā)者并不多,但也不少,官方的貢獻(xiàn)者名單中也偶見(jiàn)幾個(gè)貌似國(guó)人的名字。Rust的核心開(kāi)發(fā)人員基本上都是Mozilla公司的員工,他們專職負(fù)責(zé)開(kāi)發(fā)維護(hù)Rust語(yǔ)言和相關(guān)的項(xiàng)目,Rust社區(qū)也主要是他們參與組織和管理的。社區(qū)人員討論主要集中在GitHub項(xiàng)目主頁(yè)RFC/PR/Issue官方、Discuss論壇/IRC、Reddit、HN、StackOverflow等。
Go語(yǔ)言主要用作服務(wù)器端開(kāi)發(fā)。
其定位是用來(lái)開(kāi)發(fā)“大型軟件”的,適合于需要很多程序員一起開(kāi)發(fā),并且開(kāi)發(fā)周期較長(zhǎng)的大型軟件和支持云計(jì)算的網(wǎng)絡(luò)服務(wù)。
Go語(yǔ)言融合了傳統(tǒng)編譯型語(yǔ)言的高效性和腳本語(yǔ)言的易用性和富于表達(dá)性,不僅提高了項(xiàng)目的開(kāi)發(fā)速度,而且后期維護(hù)起來(lái)也非常輕松。
編譯器
當(dāng)前有兩個(gè)Go編譯器分支,分別為官方編譯器gc和gccgo。官方編譯器在初期使用C寫成,后用Go重寫從而實(shí)現(xiàn)自舉。Gccgo是一個(gè)使用標(biāo)準(zhǔn)GCC作為后端的Go編譯器。
官方編譯器支持跨平臺(tái)編譯(但不支持CGO),允許將源代碼編譯為可在目標(biāo)系統(tǒng)、架構(gòu)上執(zhí)行的二進(jìn)制文件。
go語(yǔ)言之所以能成為我國(guó)最火的語(yǔ)言,是因?yàn)榫帉懛?wù)端高并發(fā)程序的優(yōu)勢(shì)。我大中華區(qū)但凡pv,日活高點(diǎn)的網(wǎng)站,應(yīng)用,誰(shuí)沒(méi)點(diǎn)這個(gè)需求。
這個(gè)領(lǐng)域中最優(yōu)的幾個(gè):golang,erlang,rust。日常生活中人類社交是當(dāng)今社會(huì)上的必然性,人們也伴隨著科技時(shí)代的發(fā)展,智能電子產(chǎn)品的使用中也必然少不了語(yǔ)言輸入,文字的編輯,語(yǔ)言轉(zhuǎn)換的便利都均可來(lái)源于go語(yǔ)音輸入法。
Go語(yǔ)言非常酷,但并沒(méi)有為我提供足夠的類型安全。如果不需要并發(fā),那么我寧可繼續(xù)使用Python及其生態(tài)環(huán)境,而不會(huì)去冒險(xiǎn)采用Go重寫一切。如果需要并發(fā),那我也不會(huì)使用Go,因?yàn)樗狈︻愋桶踩@個(gè)炸彈肯定會(huì)爆炸。
Rust非常適合并發(fā)和安全,盡管futures-rs的“箱子”(Rust里函數(shù)庫(kù)叫做“箱子”)依然非常新。我認(rèn)為,以后Rust會(huì)成為許多后臺(tái)的默認(rèn)語(yǔ)言。
事實(shí)上,如果列入Java,那么React、jQuery等等,或者其他多種軟件包或框架也都需要被列入進(jìn)來(lái),然而這些顯然會(huì)在未來(lái)幾年中逐步更新?lián)Q代的。考慮到篇幅所限就不多敘述別的知識(shí)了。)
1.Go語(yǔ)言
今年10月的TIOBE編程語(yǔ)言人氣榜上,Go語(yǔ)言得到了簡(jiǎn)單但有力的描述:“谷歌的Go語(yǔ)言幾乎無(wú)可匹敵,而這主要是受到Docker等Go語(yǔ)言編寫的容器應(yīng)用方案的大力推動(dòng)。”
盡管Go語(yǔ)言最初的目的有實(shí)驗(yàn)性質(zhì),但Docker以及其它企業(yè)都把它作為自身基礎(chǔ)設(shè)施的有力支柱,而理由則非常簡(jiǎn)單:它擁有迅如閃電的編譯與執(zhí)行速度,可以使用簡(jiǎn)單方法(Goroutines)支持并發(fā)機(jī)制,并且也為程序員們提供大量選項(xiàng)來(lái)構(gòu)建并維護(hù)現(xiàn)有及新型技術(shù)。然而Go語(yǔ)言的好處需要到代碼量達(dá)到一定量之后才能體會(huì)出來(lái),比如當(dāng)你遇見(jiàn)一個(gè)cpp文件一個(gè)小時(shí)都編譯不完的時(shí)候,你就知道簡(jiǎn)化語(yǔ)法增加編譯速度有多重要了。Go同樣面向?qū)ο螅淮嬖陬愋徒Y(jié)構(gòu)。
以下為Go語(yǔ)言中的“Hello World”編寫方式:
package main import "fmt" func main() { fmt.Println("Hello, World") }
2.Rust
與火狐瀏覽器同宗同源的Rust是一類系統(tǒng)編程語(yǔ)言,它運(yùn)行速度極快、不存在段錯(cuò)誤并且可以保障安全。與Go不同,Rust并不具備垃圾回收機(jī)制(Go的垃圾回收機(jī)制速度很快),因此Rust編程適用于嵌入式系統(tǒng)。
與Go類似,Rust依賴于代碼分支結(jié)構(gòu)——但Rust更為復(fù)雜。兩種語(yǔ)言都是免費(fèi),并且它們都擁有自己的支持工具生態(tài)系統(tǒng)。Rust博客主頁(yè)中的“穩(wěn)定性即可交付性”口號(hào)正是Rust的理念所在; 其在RedMonkt及其它編程語(yǔ)言榜單上皆擁有不俗表現(xiàn),其未來(lái)發(fā)展自然值得關(guān)注。
下面來(lái)看一段出色的Rust代碼示例:
let number = 13; println!("Tell me about {}", number); match number { // Match a single value 1 = println!("One!"), // Match several values 2 | 3 | 5 | 7 | 11 = println!("This is a prime"), // Match an inclusive range 13...19 = println!("A teen"), // Handle the rest of cases _ = println!("Ain't special"), } let boolean = true; // Match is an expression too let binary = match boolean { // The arms of a match must cover all the possible values false = 0, true = 1, }; println!("{} - {}", boolean, binary); }
3.Git
時(shí)至今日,每個(gè)人都需要使用版本控制系統(tǒng)(簡(jiǎn)稱VCS)。VCS實(shí)際上就是一套容納代碼及數(shù)據(jù)的存儲(chǔ)庫(kù)。它能夠追蹤變更,并使用開(kāi)源meld等diff工具進(jìn)行變更查看。
各類VCS的工作原理大體相同。大家需要利用源代碼文件建立一個(gè)項(xiàng)目,而后即可隨時(shí)對(duì)其進(jìn)行檢查、編輯而后確認(rèn)(提交)。
由Linux之父Linus Torvalds編寫的Git是一套分布式VCS,因此其可供團(tuán)隊(duì)成員以遠(yuǎn)程方式使用各自的文件進(jìn)行編輯,而后將變更的結(jié)果進(jìn)行合并。如果存在沖突,也就是兩位成員對(duì)同一文件提交了不同編輯結(jié)果,Git則會(huì)在合并時(shí)以高亮方式顯示沖突部分。接著,大家必須手動(dòng)編輯并修改這些內(nèi)容。從人氣角度講,Git已然所向披靡。
4.HTML
在今天探討的四種技術(shù)中,HTML顯然最為簡(jiǎn)單。HTML是網(wǎng)頁(yè)標(biāo)記語(yǔ)言,是瀏覽器能夠閱讀的語(yǔ)言。只要你寫的東西想要瀏覽器能正確顯示出來(lái),那就要懂HTML。其中的/代表著關(guān)閉標(biāo)簽,而且大多數(shù)HTML標(biāo)簽都利用這種開(kāi)放標(biāo)簽加/關(guān)閉標(biāo)簽的形式起效。(對(duì)于以HTML起始的內(nèi)容,標(biāo)頭可選且為文檔中的不可見(jiàn)部分,而本體則容納可見(jiàn)部分。)
大多數(shù)其它HTML標(biāo)簽用于實(shí)現(xiàn)布局與文本格式; 其同樣易于使用。盡管HTML的技術(shù)標(biāo)準(zhǔn)已經(jīng)相當(dāng)陳舊,但其仍然被廣泛使用——如果大家尚不了解,請(qǐng)一定找點(diǎn)時(shí)間進(jìn)行學(xué)習(xí)。
5.Python
如果,只能選擇掌握一種編程語(yǔ)言,那么我的答案是Python。早在互聯(lián)網(wǎng)誕生之前,Basic是每一位開(kāi)發(fā)者所必須了解的語(yǔ)言選項(xiàng); 如今Python就是新時(shí)代下的Basic。這是一種通用型編程語(yǔ)言,雖然沒(méi)人會(huì)利用其編寫那些“重量級(jí)”應(yīng)用——例如游戲或者操作系統(tǒng)(這類應(yīng)用仍然使用C++)。
Python易于學(xué)習(xí),且使用縮進(jìn)而非大括號(hào)標(biāo)記結(jié)構(gòu)。以下代碼來(lái)自Python維基詞條:
parents, babies = (1, 1) while babies 100: print 'This generation has {0} babies'.format(babies) parents, babies = (babies, parents + babies)
Python語(yǔ)言帶有解釋特性,因此大家可以在Python shell中嘗試各種命令丈表達(dá)式。其速度很快,但相比優(yōu)化型編譯語(yǔ)言稍慢一點(diǎn)。它擁有規(guī)模龐大的資源庫(kù),且可通過(guò)多種方式實(shí)現(xiàn)進(jìn)一步提速。大家可以使用pypy等替代性方案或者利用Cython將其編譯為C; 如果大家了解C語(yǔ)言,也能夠編寫自己的C、Go或者Rust擴(kuò)展。
Python在科學(xué)家群體中亦大受歡迎。最近推出的英特爾Python(免費(fèi))使得Python成為一種面向機(jī)器學(xué)習(xí)的可用語(yǔ)言,其適用場(chǎng)景包括大數(shù)據(jù)、神經(jīng)網(wǎng)絡(luò)以及其它相關(guān)技術(shù)。英特爾打造的這套發(fā)行版包含超過(guò)100套軟件包(NumPy、SciPy等),且專門進(jìn)行了優(yōu)化以使用英特爾MKL及英特爾TBB庫(kù)——二者內(nèi)置于其中且可免費(fèi)使用。大部分高強(qiáng)度任務(wù)都可由這些經(jīng)過(guò)優(yōu)化的英特爾庫(kù)負(fù)責(zé)執(zhí)行。
6.Linux
即使大家身為專業(yè)Windows用戶及程序員,Linux同樣值得加以關(guān)注,它能幫助您更快地學(xué)習(xí),它還能使用多種技術(shù)方案。舉例來(lái)說(shuō),Python、Go以及Rust就更適合在Linux平臺(tái)上使用。(要在Windows上進(jìn)行Rust程序編譯,大家需要使用微軟VC++或者M(jìn)inGW——這是一套GNU編譯器與工具集合,專門用于Windows平臺(tái)上的開(kāi)發(fā)與運(yùn)行任務(wù))。
對(duì)于Windows用戶,大家只需要下載免費(fèi)VirtualBox并安裝一套Linux發(fā)行版(我個(gè)人推薦Ubuntu 14.04 LTS或者16.04 LTS)即可開(kāi)始Linux之旅。在此之后,大家即可學(xué)習(xí)Linux,安裝各類編程語(yǔ)言,運(yùn)行本地LAMP(Linux Apache MySQL PHP)Web服務(wù)器甚至嘗試進(jìn)行開(kāi)發(fā)工作。
函數(shù)式語(yǔ)言
Elixir
Elixir 比 Erlang 更容易編寫,具有 Haskell 等語(yǔ)言的函數(shù)式編程概念。Elixir是基于Erlang 虛擬機(jī)的,其廣為人知的特點(diǎn)是運(yùn)行低延時(shí)、分布式、可容錯(cuò)的系統(tǒng),并成功用于Web開(kāi)發(fā)與嵌入式軟件領(lǐng)域。
Elm
Elm是一種用于構(gòu)建 Web 應(yīng)用程序的函數(shù)式語(yǔ)言。業(yè)內(nèi)一般認(rèn)為,它適用于創(chuàng)建高可交互應(yīng)用,例如復(fù)雜的用戶界面,開(kāi)發(fā)人員可以通過(guò) Elm 快速編寫富有表現(xiàn)力的系統(tǒng)。Elm 也以沒(méi)有運(yùn)行時(shí)異常而聞名。
PureScript
PureScript是一種可編譯為 JavaScript 的純函數(shù)式編程語(yǔ)言。與 Haskell 最相似的是,PureScript 最適合用于開(kāi)發(fā) Web 應(yīng)用程序和服務(wù)器端應(yīng)用程序。
PureScript 支持類型推斷,與其他語(yǔ)言相比,需要明顯類型注釋要少得多。
Swift
Swift是一種由蘋果公司開(kāi)發(fā)的通用編譯編程語(yǔ)言,最早的設(shè)想是替代上一代編程語(yǔ)言O(shè)bjective-C ,過(guò)程中結(jié)合了Objective-C、Rust、Ruby 和 Python等語(yǔ)言的編程思想。目前Swift用于開(kāi)發(fā)蘋果自己的手機(jī)、服務(wù)器、臺(tái)式機(jī)上的應(yīng)用軟件。
程序語(yǔ)言
Go
Go語(yǔ)言是由谷歌公司創(chuàng)造的類似C風(fēng)格的語(yǔ)言。Go 比 C++ 或 Java 更簡(jiǎn)潔,比 Ruby 或 Python 更安全。
一些缺點(diǎn): 編碼要求嚴(yán)格。比如,不能混用符號(hào)和無(wú)符號(hào)整數(shù)。還有一個(gè)明顯的遺漏,Go語(yǔ)言沒(méi)有泛型和繼承。
但Go語(yǔ)言的優(yōu)勢(shì)同樣明顯,簡(jiǎn)單且易于使用。Go語(yǔ)言擅長(zhǎng)于網(wǎng)絡(luò)和多線程方面的編程。
面向?qū)ο笳Z(yǔ)言
DART
Dart同樣來(lái)自谷歌公司具有C語(yǔ)言風(fēng)格。Dart可以輕松編寫JavaScript、Java for Android、本地機(jī)器代碼或獨(dú)立的 Dart 虛擬機(jī)。它還可以運(yùn)行后端代碼。
Dart 非常適合使用事件驅(qū)動(dòng)代碼構(gòu)建用戶界面。根據(jù)Dart 團(tuán)隊(duì)成員的說(shuō)法,Dart的優(yōu)勢(shì):可選的靜態(tài)類型、最小的編譯時(shí)錯(cuò)誤和強(qiáng)大的內(nèi)置編輯器。
Pony
Pony是一種基于無(wú)數(shù)據(jù)競(jìng)爭(zhēng)類型和垃圾收集的語(yǔ)言,并使用 actor 模型以及稱為引用功能的東西。
你可以把 Pony 想象成某種“Rust 遇上 Erlang”的復(fù)合體,沒(méi)有鎖,高并發(fā)是其主要優(yōu)點(diǎn)。
Pony 的缺點(diǎn)是 API 穩(wěn)定性低、很少有高質(zhì)量的第三方庫(kù)和有限的本地工具。
TypeScript
TypeScript是一個(gè)基于 JavaScript 靜態(tài)類型定義構(gòu)建,并由微軟維護(hù)且開(kāi)源編程語(yǔ)言。Visual Studio Code 或Visual Studio 是推薦的IDE編輯器,微軟大廠的用戶體驗(yàn)和錯(cuò)誤檢查也不用懷疑。
復(fù)合編程語(yǔ)言
Hack
Hack是一種作為 PHP 方言的 HipHop 虛擬機(jī)的編程語(yǔ)言。于 2014 年由Facebook創(chuàng)建,允許程序員同時(shí)使用靜態(tài)和動(dòng)態(tài)類型(也稱為漸進(jìn)類型),這為編碼提供了靈活性。
Julia
Julia是一種高級(jí)通用編程語(yǔ)言,用于計(jì)算科學(xué)和數(shù)值分析。Julia 以動(dòng)態(tài)類型和可重現(xiàn)的高性能特性而聞名。
Julia 在數(shù)據(jù)可視化和機(jī)器學(xué)習(xí)等方面都有大量用途。事實(shí)上,它被英國(guó)保險(xiǎn)公司 Aviva 用于風(fēng)險(xiǎn)計(jì)算,紐約聯(lián)邦儲(chǔ)備銀行用于金融建模,甚至氣候建模聯(lián)盟用于氣候變化建模。它擁有Fortran、C++、R、Java、C 、Python等的接口,這使其成為最受追捧的新語(yǔ)言之一。
Kotlin
Kotlin是運(yùn)行在 Java 虛擬機(jī)中的更快、更流暢的 Java 版本。它現(xiàn)在是Android 開(kāi)發(fā)的首選語(yǔ)言。根據(jù) Android 開(kāi)發(fā)者網(wǎng)站顯示,程序員正轉(zhuǎn)而采用 Kotlin,因?yàn)樵撜Z(yǔ)言的樣板代碼更少,空指針異常更少,并且與 Java 有互操作性。
Kotlin 可用于在 iOS 和 Android 上運(yùn)行的應(yīng)用程序、不使用額外運(yùn)行時(shí)或虛擬機(jī)。
Nim
Nim是一種優(yōu)先考慮可讀性的靜態(tài)類型語(yǔ)言。通過(guò)結(jié)合多種語(yǔ)言的特性,Nim 為程序員提供了速度和易用性。
它帶有 JavaScript 后端、分散的包管理、自動(dòng)內(nèi)存管理、C 和 C++ 庫(kù)的綁定以及用于調(diào)試的回溯。作為一種語(yǔ)言,Nim 是有限的,但它包含一組元編程功能,如泛型、模板和宏,因此開(kāi)發(fā)人員可以在避免冗長(zhǎng)代碼的同時(shí)以不同的風(fēng)格工作。
OCaml作為此列表中較舊的語(yǔ)言,OCaml是一種多范式語(yǔ)言——既有函數(shù)式、命令式和類型安全,也具有面向?qū)ο蠊δ堋?/p>
OCaml 的一些優(yōu)勢(shì):定義數(shù)據(jù)類型很容易。默認(rèn)情況下,所有變量都是不可變的。API 穩(wěn)定,具有良好的庫(kù)向后兼容性。該語(yǔ)言還為獨(dú)立應(yīng)用程序提供自動(dòng)內(nèi)存管理和單獨(dú)編譯。
Reason
如果比JavaScript 更快、更簡(jiǎn)單且類型安全會(huì)怎樣?
這就是創(chuàng)建Reason的 Facebook 開(kāi)發(fā)者想要回答的問(wèn)題。不過(guò),他并沒(méi)有從頭開(kāi)始構(gòu)建一種新語(yǔ)言,而是采用了 OCaml,并將其調(diào)整為類似于 JavaScript。
Reason使用項(xiàng)目 BucketScript編譯為 JavaScript,并且可以訪問(wèn) 80% 的 JavaScript 工具和生態(tài)系統(tǒng)。它還可以編譯為準(zhǔn)系統(tǒng)、iOS、Android 和微控制器。
Red
Red是一種最初旨在克服 Rebol 語(yǔ)言限制的編程語(yǔ)言。Red 于 2011 年推出,受 Rebol、Lua 和 Scala 等語(yǔ)言的影響,對(duì)高級(jí)和低級(jí)編程都很有用。
該語(yǔ)言可用于開(kāi)發(fā)從高級(jí) GUI 到低級(jí)操作系統(tǒng)的所有方面。Red 擁有人性化的語(yǔ)法、低內(nèi)存占用和垃圾收集等優(yōu)點(diǎn)。
Rust
Rust解決了一些與 Go 相同的問(wèn)題,如系統(tǒng)級(jí)別的線程和進(jìn)程安全,,但Rust 更像 C 風(fēng)格的語(yǔ)法
但Rust語(yǔ)言的缺點(diǎn):靜態(tài)類型和缺乏垃圾收集
Rust可直接訪問(wèn)內(nèi)存意味著程序員可以編寫低級(jí)代碼,如操作系統(tǒng)內(nèi)核。Rust 也非常適合嵌入式設(shè)備、網(wǎng)絡(luò)服務(wù)和命令行編寫。
本文名稱:go語(yǔ)言與rust的區(qū)別 go語(yǔ)言和rust語(yǔ)言的前景
轉(zhuǎn)載注明:http://chinadenli.net/article46/hijehg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站制作、小程序開(kāi)發(fā)、軟件開(kāi)發(fā)、App設(shè)計(jì)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)