1.根據(jù)Rust的特點(diǎn)和定位適用于對(duì)控制性比較強(qiáng),對(duì)性能很敏感的領(lǐng)域,比如底層軟件(OS/driver),基礎(chǔ)系統(tǒng)軟件(Compiler/VM/DB等),性能要求比較高的應(yīng)用軟件(瀏覽器/圖形圖像處理/游戲/高性能服務(wù)器軟件等,或者可能包括近來很火的ML應(yīng)用方向)。2.底層軟件(比如OS/driver)部分是和C應(yīng)用領(lǐng)域有很大重合度的,在這個(gè)領(lǐng)域我認(rèn)為對(duì)C沖擊不大。在這里C已經(jīng)足夠好了,而且這些領(lǐng)域技術(shù)性很高,但業(yè)務(wù)邏輯其實(shí)并不算太復(fù)雜,Rust的優(yōu)勢(shì)作用有限。而且Rust相比于C語言,帶來了一定的“黑盒”和這些領(lǐng)域一些不需要的語言復(fù)雜特性。C作為“可移植的匯編”恰到好處的非常適合這個(gè)領(lǐng)域,其他語言基本無法構(gòu)成挑戰(zhàn)。3.前面1中提到的領(lǐng)域除了底層軟件(OS/driver之類)剩下的領(lǐng)域,C++目前最具有優(yōu)勢(shì)。在這些領(lǐng)域C++相對(duì)于C提供了高級(jí)特性方便開發(fā),相對(duì)于JVM系的性能更高內(nèi)存更少。(雖然這些領(lǐng)域有些知名軟件是C和JVM系的,比如postgresql/redis/nginx/Hadoop/spark等,但在這些領(lǐng)域目前只有C++一個(gè)是全能型)我認(rèn)為rust的主要戰(zhàn)場(chǎng)就在這里,需要對(duì)決的對(duì)手就是C++。C++既有的力量(系統(tǒng)/代碼/人員/習(xí)慣)太強(qiáng)大了,在這些領(lǐng)域完全打敗C++是非常困難的。而且C++也在不斷發(fā)展,近年來發(fā)展的步伐也快了起來,C++11/14/17等等。但C++的歷史包袱是很重的,越發(fā)展其實(shí)復(fù)雜性也在不斷提高,何況有些問題(像安全/異常/復(fù)雜繼承等等)是基因里的,通過增加feature打補(bǔ)丁是彌補(bǔ)不了的。Rust最容易吸引的人群可能是C++程序員:因?yàn)?,一方面解決了不少C++的痛點(diǎn),另一方面Rust的很多特性其實(shí)有點(diǎn)復(fù)雜也有點(diǎn)門檻的。這些特性背后的動(dòng)因有C++背景的程序員是非常容易理解,也是不少C++程序員夢(mèng)寐以求的。相對(duì)而言,其他語言背景出身的程序員,對(duì)Rust的共鳴性遠(yuǎn)遠(yuǎn)沒有C++程序員強(qiáng)烈。猜測(cè)Rust會(huì):a.蠶食掉一定的C++份額。一些可能本會(huì)選擇C++開發(fā)的新項(xiàng)目,可能會(huì)選擇Rust。b.蠶食掉一定的Java份額。有些項(xiàng)目選擇JVM系是由于C++開發(fā)太復(fù)雜,同時(shí)該項(xiàng)目對(duì)性能又有一定的要求。那么Rust出現(xiàn)以后也會(huì)蠶食掉一定的此類項(xiàng)目。c.蠶食掉一定的golang份額。不滿意gc(即使1.5改善了,gc的先天問題是無法徹底解決的),不滿意泛型,不滿意性能的一部分項(xiàng)目。不過也要依賴于Rust未來并發(fā)的解決方案是否足夠理想了。1.0這種是沒戲的。d.移動(dòng)端Rust從自己實(shí)力上說是夠的。不過這個(gè)真的要看出品移動(dòng)端設(shè)備的“爹”的意思了。Rust自身有一些優(yōu)勢(shì)非常明顯,在這些領(lǐng)域是很有競(jìng)爭(zhēng)力的。Rust社區(qū)一定要重視IDE開發(fā)環(huán)境,花費(fèi)精力出eclipse/intellji/vs的高質(zhì)量的IDE插件,對(duì)于推廣和流行大有幫助。只要Rust社區(qū)不要犯D語言曾經(jīng)反復(fù)折騰的毛病,能像golang社區(qū)那樣基礎(chǔ)做的不錯(cuò)并且工程質(zhì)量?jī)?yōu)秀,那么未來Rust出幾個(gè)殺手級(jí)的應(yīng)用,前途還是很可期的。
成都創(chuàng)新互聯(lián)長(zhǎng)期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為扎囊企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),扎囊網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
要說性能,那是Rust更好。更多的編譯期優(yōu)化、無 GC 等特點(diǎn)加持,開發(fā)高性能應(yīng)用自然是 Rust 性能高。據(jù)統(tǒng)計(jì)利用 Rust 開發(fā)的 RipGrep 性能甚至賽過使用 C 開發(fā)的 Grep。
但是性能不是唯一考量,當(dāng)你糾結(jié) Borrow Check,糾結(jié) unsafe,糾結(jié) copy clone,糾結(jié)各種奇怪的類型限制的時(shí)候;當(dāng)你 cargo build 怒草電腦風(fēng)扇三分鐘的時(shí)候;人家 GoLang 可能早就發(fā)兩個(gè)版了。
同時(shí) Rust 的語法花活眾多,遍歷數(shù)組可以寫循環(huán)也可以 for_each() 一行流。不像 GoLang 那么白開水誰寫都差不多一個(gè)味道,經(jīng)常第一天想到神來之筆快樂 Coding 到半夜第二天爬起來發(fā)現(xiàn)昨晚寫的都甚么東西看不懂不如蜘蛛爬,這是墜痛苦的!
Go 的編譯器為了個(gè)編譯速度快連循環(huán)不變式提升、循環(huán)展開、對(duì)齊等等優(yōu)化一個(gè)都不做,函數(shù)內(nèi)斂一堆限制大多數(shù)情況都不做(比如函數(shù)里有個(gè) for 或者 defer 或者 select 等,或者函數(shù)多于 40 個(gè)表達(dá)式),擁有的優(yōu)化一只手都能數(shù)的過來:
基礎(chǔ)優(yōu)化欠缺,高級(jí)優(yōu)化更是一個(gè)沒有,和在 Debug 配置編譯下的 -O0 優(yōu)化的 C++ 差不多一個(gè)概念(而且跑得更慢),哪來的資本和 rust 比性能。
其他方面:
而且 Go 的 GC 吞吐量也很低,大多數(shù)情況下各方面 Go 跑的甚至都比 Java 更慢。只不過得益于 AOT 編譯的設(shè)計(jì),相比 Java 而言除了內(nèi)存占用小和啟動(dòng)速度快之外就沒有任何優(yōu)勢(shì)了,比較適合拿來做性能不關(guān)鍵的命令行工具。
個(gè)人還是更喜歡 Rust。
0.86MB。go和rust打包軟件大小是0.86MB,go和rust的軟件包是屬于整套的軟件包,需要將go和rust軟件包在windows的原文件里進(jìn)行協(xié)同式解壓,只有經(jīng)過協(xié)同式解壓之后才能進(jìn)行安裝使用。
Python 是腳本語言,也就是中間件語言,其內(nèi)核仍然是純 c 的性能表達(dá)的,而主要性能消耗在腳本的實(shí)時(shí)編譯上。而對(duì)比c,同樣的功能,python可以表達(dá)比c更加精煉,當(dāng)然犧牲了一些性能。如果確實(shí)對(duì)某個(gè)模組性能不滿意,還可以使用 c 編寫 Python 模塊為其加速。面對(duì)一些并不需要過多性能而可以獲得更快捷的開發(fā)速度,Python的優(yōu)勢(shì)完全可以蓋過“劣勢(shì)”。可以說,Python基本完美。例如知乎就是使用 Python 制作的。Google 的許多頁面也是使用 Python 進(jìn)行渲染的。
開源的編程語言有:
Perl——一種通用的編程語言。
PHP——適用于網(wǎng)絡(luò)開發(fā)的編程語言。
Python——一種通用的編程語言。
Ruby——一種通用的編程語言。
Go——一種通用的編程語言。
Rust——一種通用的編程語言。
Swift——一種支持多編程范式,編譯式編程語言。
Java——一種通用的編程語言。
函數(shù)式語言
Elixir
Elixir 比 Erlang 更容易編寫,具有 Haskell 等語言的函數(shù)式編程概念。Elixir是基于Erlang 虛擬機(jī)的,其廣為人知的特點(diǎn)是運(yùn)行低延時(shí)、分布式、可容錯(cuò)的系統(tǒng),并成功用于Web開發(fā)與嵌入式軟件領(lǐng)域。
Elm
Elm是一種用于構(gòu)建 Web 應(yīng)用程序的函數(shù)式語言。業(yè)內(nèi)一般認(rèn)為,它適用于創(chuàng)建高可交互應(yīng)用,例如復(fù)雜的用戶界面,開發(fā)人員可以通過 Elm 快速編寫富有表現(xiàn)力的系統(tǒng)。Elm 也以沒有運(yùn)行時(shí)異常而聞名。
PureScript
PureScript是一種可編譯為 JavaScript 的純函數(shù)式編程語言。與 Haskell 最相似的是,PureScript 最適合用于開發(fā) Web 應(yīng)用程序和服務(wù)器端應(yīng)用程序。
PureScript 支持類型推斷,與其他語言相比,需要明顯類型注釋要少得多。
Swift
Swift是一種由蘋果公司開發(fā)的通用編譯編程語言,最早的設(shè)想是替代上一代編程語言O(shè)bjective-C ,過程中結(jié)合了Objective-C、Rust、Ruby 和 Python等語言的編程思想。目前Swift用于開發(fā)蘋果自己的手機(jī)、服務(wù)器、臺(tái)式機(jī)上的應(yīng)用軟件。
程序語言
Go
Go語言是由谷歌公司創(chuàng)造的類似C風(fēng)格的語言。Go 比 C++ 或 Java 更簡(jiǎn)潔,比 Ruby 或 Python 更安全。
一些缺點(diǎn): 編碼要求嚴(yán)格。比如,不能混用符號(hào)和無符號(hào)整數(shù)。還有一個(gè)明顯的遺漏,Go語言沒有泛型和繼承。
但Go語言的優(yōu)勢(shì)同樣明顯,簡(jiǎn)單且易于使用。Go語言擅長(zhǎng)于網(wǎng)絡(luò)和多線程方面的編程。
面向?qū)ο笳Z言
DART
Dart同樣來自谷歌公司具有C語言風(fēng)格。Dart可以輕松編寫JavaScript、Java for Android、本地機(jī)器代碼或獨(dú)立的 Dart 虛擬機(jī)。它還可以運(yùn)行后端代碼。
Dart 非常適合使用事件驅(qū)動(dòng)代碼構(gòu)建用戶界面。根據(jù)Dart 團(tuán)隊(duì)成員的說法,Dart的優(yōu)勢(shì):可選的靜態(tài)類型、最小的編譯時(shí)錯(cuò)誤和強(qiáng)大的內(nèi)置編輯器。
Pony
Pony是一種基于無數(shù)據(jù)競(jìng)爭(zhēng)類型和垃圾收集的語言,并使用 actor 模型以及稱為引用功能的東西。
你可以把 Pony 想象成某種“Rust 遇上 Erlang”的復(fù)合體,沒有鎖,高并發(fā)是其主要優(yōu)點(diǎn)。
Pony 的缺點(diǎn)是 API 穩(wěn)定性低、很少有高質(zhì)量的第三方庫和有限的本地工具。
TypeScript
TypeScript是一個(gè)基于 JavaScript 靜態(tài)類型定義構(gòu)建,并由微軟維護(hù)且開源編程語言。Visual Studio Code 或Visual Studio 是推薦的IDE編輯器,微軟大廠的用戶體驗(yàn)和錯(cuò)誤檢查也不用懷疑。
復(fù)合編程語言
Hack
Hack是一種作為 PHP 方言的 HipHop 虛擬機(jī)的編程語言。于 2014 年由Facebook創(chuàng)建,允許程序員同時(shí)使用靜態(tài)和動(dòng)態(tài)類型(也稱為漸進(jìn)類型),這為編碼提供了靈活性。
Julia
Julia是一種高級(jí)通用編程語言,用于計(jì)算科學(xué)和數(shù)值分析。Julia 以動(dòng)態(tài)類型和可重現(xiàn)的高性能特性而聞名。
Julia 在數(shù)據(jù)可視化和機(jī)器學(xué)習(xí)等方面都有大量用途。事實(shí)上,它被英國保險(xiǎn)公司 Aviva 用于風(fēng)險(xiǎn)計(jì)算,紐約聯(lián)邦儲(chǔ)備銀行用于金融建模,甚至氣候建模聯(lián)盟用于氣候變化建模。它擁有Fortran、C++、R、Java、C 、Python等的接口,這使其成為最受追捧的新語言之一。
Kotlin
Kotlin是運(yùn)行在 Java 虛擬機(jī)中的更快、更流暢的 Java 版本。它現(xiàn)在是Android 開發(fā)的首選語言。根據(jù) Android 開發(fā)者網(wǎng)站顯示,程序員正轉(zhuǎn)而采用 Kotlin,因?yàn)樵撜Z言的樣板代碼更少,空指針異常更少,并且與 Java 有互操作性。
Kotlin 可用于在 iOS 和 Android 上運(yùn)行的應(yīng)用程序、不使用額外運(yùn)行時(shí)或虛擬機(jī)。
Nim
Nim是一種優(yōu)先考慮可讀性的靜態(tài)類型語言。通過結(jié)合多種語言的特性,Nim 為程序員提供了速度和易用性。
它帶有 JavaScript 后端、分散的包管理、自動(dòng)內(nèi)存管理、C 和 C++ 庫的綁定以及用于調(diào)試的回溯。作為一種語言,Nim 是有限的,但它包含一組元編程功能,如泛型、模板和宏,因此開發(fā)人員可以在避免冗長(zhǎng)代碼的同時(shí)以不同的風(fēng)格工作。
OCaml作為此列表中較舊的語言,OCaml是一種多范式語言——既有函數(shù)式、命令式和類型安全,也具有面向?qū)ο蠊δ堋?/p>
OCaml 的一些優(yōu)勢(shì):定義數(shù)據(jù)類型很容易。默認(rèn)情況下,所有變量都是不可變的。API 穩(wěn)定,具有良好的庫向后兼容性。該語言還為獨(dú)立應(yīng)用程序提供自動(dòng)內(nèi)存管理和單獨(dú)編譯。
Reason
如果比JavaScript 更快、更簡(jiǎn)單且類型安全會(huì)怎樣?
這就是創(chuàng)建Reason的 Facebook 開發(fā)者想要回答的問題。不過,他并沒有從頭開始構(gòu)建一種新語言,而是采用了 OCaml,并將其調(diào)整為類似于 JavaScript。
Reason使用項(xiàng)目 BucketScript編譯為 JavaScript,并且可以訪問 80% 的 JavaScript 工具和生態(tài)系統(tǒng)。它還可以編譯為準(zhǔn)系統(tǒng)、iOS、Android 和微控制器。
Red
Red是一種最初旨在克服 Rebol 語言限制的編程語言。Red 于 2011 年推出,受 Rebol、Lua 和 Scala 等語言的影響,對(duì)高級(jí)和低級(jí)編程都很有用。
該語言可用于開發(fā)從高級(jí) GUI 到低級(jí)操作系統(tǒng)的所有方面。Red 擁有人性化的語法、低內(nèi)存占用和垃圾收集等優(yōu)點(diǎn)。
Rust
Rust解決了一些與 Go 相同的問題,如系統(tǒng)級(jí)別的線程和進(jìn)程安全,,但Rust 更像 C 風(fēng)格的語法
但Rust語言的缺點(diǎn):靜態(tài)類型和缺乏垃圾收集
Rust可直接訪問內(nèi)存意味著程序員可以編寫低級(jí)代碼,如操作系統(tǒng)內(nèi)核。Rust 也非常適合嵌入式設(shè)備、網(wǎng)絡(luò)服務(wù)和命令行編寫。
文章標(biāo)題:go和rust語言,rust和golang
文章起源:http://jinyejixie.com/article4/dsechie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)、ChatGPT
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)