當前位置:首頁 » 編程語言 » c語言和rust語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言和rust語言

發布時間: 2023-02-27 19:31:49

㈠ 我們為什麼用Rust

Rust 是一門系統級編程語言,被設計為保證內存和線程安全,防止段錯誤產生。作為系統級編程語言,它的基本理念是 「零開銷抽象」。理論上來說,它的速度與 C/C++ 同級。Rust 可以被歸為通用的、多範式、編譯型的編程語言,類似 C/C++。與這兩門編程語言不同的是,Rust 是線程安全的!Rust 編程語言的目標是,創建一個安全和並發的軟體系統。它強調安全性、並發和內存控制。盡管 Rust 借用了 C/C++ 的語法,卻杜絕了空指針和懸掛指針,而這二者是 C/C++ 中系統崩潰、內存泄露和不安全代碼的根源。

雖然 Rust 是一門系統級編程語言,但並不意味著它只能寫底層程序(操作系統、驅動、工具、資料庫、搜索引擎等),它的抽象層次之高完全給人驚艷的感覺,實踐證明它對問題建模的能力和方便性不比 C++/Java/Python/Ruby 差。但 Haskell 這類超高抽象語言,也不是 Rust 的發展方向。Rust 力求在抽象與現實世界中找到一個平衡。

在向SCRY 項目研發負責人Peace交流時,他說到,當時選擇Rust,主要有兩個原因:一是有高性能要求時,原來好多人會選擇C/C++,現在多了一個Rust選擇,還解決了C/C++許多不足;二是Rust應用在區塊鏈有成熟的參考。最後Peace給了未來使用SCRY項目開源部分的學習者一些建議,「快速的學習能力,快樂地把小事做好,正確合理定義一個函數。」

Rust到底有多受歡迎呢?目前,Rust 已經在 StackOverflow 的年度語言評選中,連續 4 年榮獲「程序員最喜愛語言」第一名(2016, 2017, 2018, 2019)。以下是 2019 年調查的截圖:


但比起Python、C、C++ 等,Rust還只是個小年輕。調查顯示,更多的人不去學習 Rust 還是因為 Rust 沒有足夠的活躍商業項目讓它成為企業的一部分。


不過,Rust 在工作中的佔比也越來越高。過去一年間,Rust 在商業應用上有著令人驚訝的成長。下面是部分人們熟知的公司:

國內的網路,阿里,也已經在內部小范圍的使用上了Rust。

就在本月初,微軟還推出了基於 Rust 的 Windows 運行時項目 Rust/WinRT。該項目和 C++/WinRT 一脈相承,用標准語言和編譯器為 Windows 運行時構建語言投影,從而方便 Rust 開發人員調用 Windows API,更輕松地使用 Rust 構建各類 Windows 應用和組件。

(https://blogs.windows.com/windowsdeveloper/2020/04/30/rust-winrt-public-preview/)

2015年下半年,Gavin Wood 博士創立了 Parity Technologies,推出以太坊(Ethereum)客戶端 parity,而這個 parity 客戶端就是使用Rust寫的。實際在 parity 出現之前,MaidSafe項目就已經出現了。MaidSafe用 Rust 語言嘗試了很多東西。Rust語言本身強調的安全性以及MaidSafe這些前沿項目,可能給了 Gavin 充分的理由選擇 Rust 作為 parity 開發語言。

寫一個有效率的、符合習慣的Rust程序比寫一個有潛在危險的程序容易得多。下面是Linux內核在2018年一月到四月期間發現的bug:


而對於Rust而言,上圖右側佔比 51% 的部分,從語言層面就可以避免。也就是說,對Rust來說,根本不存在上圖右邊這些問題。

Rust在實現內存安全和並發安全的同時,並沒有以損失性能為代價。更牛逼的是,它甚至是用同一套抽象解決了內存安全和數據競爭這兩個不同領域的問題。

Rust的零開銷抽象讓你在享受安全性的同時,又不損失性能。這正是傳統的程序員夢寐以求的。

Solana的首席執行官Anatoly Yakovenko在一段采訪中提到剛開始項目的時候,他用了兩周時間使用C語言,但是當用到一些外部庫的時候,還得寫makefile,手動下載這些庫,比較麻煩。所以,他決定嘗試一下Rust。就在那一刻,「Holy shit, this is amazing.」「我才覺醒到,這是一個和C語言一樣快的語言,並且還給了我Haskell般的類型安全。Rust擊中了我,這真的很酷。」

今天Rust滿5歲了(2020年5月15日,是Rust語言正式發布5年生日)。Rust語言正在IT工業各個領域快速發展,而由於區塊鏈本身的特質,區塊鏈領域是較早接納Rust的領域之一。在區塊鏈領域,Rust正以勢如破竹之勢佔領區塊鏈新興項目市場,很多著名的老項目也在考慮轉向使用Rust重寫。

祝Rust 5周年生日快樂!


參考:

1. Why Rust?

https://www.parity.io/why-rust/

2. Meetup with Solana, Zcash, & Parity — Why Rust Is Ideal For Blockchain Development?

https://medium.com/solana-labs/solana-at-portland-dev-meetup-72e4dc7ad32c

3. Rust 2017 Survey Results

https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html

4. 微軟開源 Rust/WinRT,方便使用 Rust 構建 Windows 應用

https://www.oschina.net/news/115354/microsoft-winrt

5. Stack Overflow』s Developer Survey Results 2019

https://insights.stackoverflow.com/survey/2019#developer-profile-_-what-inpial-person-will-have-the-most-influence-in-tech-this-year

6. 當區塊鏈遇上Rust

https://rustcc.cn/article?id=289da7be-19ce-49fe-af6d-3a7946404ca6

㈡ rust是前端還是後端

後端。

Rust是一款高級通用語言,而且屬於少有的一款兼顧開發和執行效率的編程語言。Rust結合了腳本語言的語法結構和C語言編譯執行效率,並且具有類似垃圾回收和數據類型及所有權系統等功能,所以可靠性和高性能運行都屬於Rust的特色。

雖然是一個非常年輕的編程語言,但是Rust可以算是最近幾年最流行的編程語言。5月發布的Stack Overflow 2020開發者調查中,Rust被86.1%開發者選擇為「最喜歡」的編程語言,比第二名TypeScript高出近20%。

雖然Rust並不是一個專屬的網路應用開發語言,但是作為一個以安全著稱的編輯語言,實際上是非常適合網路開發的。而且因為是編譯型語言,編譯器也能在過程中就安全穩定的問題作出提醒,作為後端網路開發還是不錯的一個優勢。

Rust的通用庫中已經包含了類似TcpListener這樣的網路通訊庫,可以直接通過調用std : : net 下面的TcpListener來直接監聽Tcp埠,然後再處理Request。這點上與一些腳本型的編程語言比要自由得很多。

Rust作為比較流行的編程語言,也有不少第三方HTTP庫來支持Web開發,可以不用再花時間從底層開發,比較熱門的庫像Hyper或者Tide都是被不少Web開發框架用到的。Rust下Web開發框架也不少,比較熱門的有Rocket、Actix-Web、Tower-web、Warp等等框架。

㈢ C語言誕生之前,有哪些重要的編程語言

你好,根據資料記載,C語言誕生前還有B語言和BCPL語言,C語言源自Ken Thompson發明的 B語言,而B語言則源自BCPL語言。C語言的誕生是和UNIX操作系統的開發密不可分的,原先的UNIX操作系統都是用匯編語言寫的,1973年UNIX操作系統的核心用C語言改寫,從此以後,C語言成為編寫操作系統的主要語言。1978年美國電話電報公司(AT&T)貝爾實驗室正式發布C語言,1983年由美國國家標准局開始制定C語言標准,於1989年12月完成,並在1990年春天發布,稱之為ANSI C,有時也被稱為 C89 或 C90。

㈣ C語言重要嗎

對於理工 科學生來說,這個答案可能很簡單,因為這是一門必修課。而對於程序員來說選擇一門編程語言,在某種程度上,對職業生涯的發展會產生重大的影響,所以必須慎 之又慎。那麼,為什麼要選擇一門誕生了將近半個世紀的語言?本文不是老生常談的廢話,如:」C 語言是編程的基礎」、」學好 C 語言,走遍天下都不怕」等等,本文力爭詳盡而又有理的回答這個問題,首先咱們先了解一下何為 『c』 語言
C 語言
C 語言是由美國 AT&T 貝爾實驗室的研究員 Dennis Ritchie 在 B 語言的基礎上,最初作為改造 Unix 操作系統的開發語言,並伴隨著 Unix 操作系統興起而流行,後來,隨著微型計算機的發展,C 開始被移植到其他操作系統平台上,成為獨立的程序設計語言。

為操作系統而生的標簽註定了 C 不可能平庸,實話實說,C 是一門很難學習和使用的編程語言,沒有編譯原理、操作系統和計算機體系結構扎實的基礎知識,根本不可能把 C 學的明白、用的順手。C 作為一門工程實用性極強的語言,提供了對操作系統和內存的精準控制,高性能的運行時環境,源碼級的跨平台編譯等優點,才是我們必須學習和使用 C 的理由。
同時,幸運的是 C 也是個有趣的東西,對編程的認知越深,就會越覺得有意思,我簡單列舉一些 C 的優點:
1、結構化設計語言,語法清晰、結構簡單,模塊化使得程序的各個部分除了必要的信息交流外彼此獨立,便於開發、調試
2、運算符多,把括弧、賦值、強制類型轉換等都作為運算符處理,靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
3、數據結構豐富,能實現各種復雜的數據類型的運算,引入指針、結構體概念使程序效率更高。
4、為操作系統而生,可以像匯編語言一樣對位、位元組和地址進行操作,允許直接訪問物理地址對硬體進行操作,把高級語言的基本結構和語句與低級語言的實用性結合起來。
5、程序執行效率高,一般比匯編程序生成的目標代碼效率低 10%~20%。
6、可移植性好,C 語言抽象了針對 CPU 編程的細節,能廣泛應用於針對大型操作系統和系統軟體的編寫。
7、具備強大的繪圖功能,和 C++ 一樣也可以寫出很優雅的二維、三維圖形和動畫。
有人說,C 是 C++ 的子集,C 能做到的事,C++ 一樣能做到,並且還可以做的更好,如:三大面向對象特性、GUI 編程,誠然,我承認在 GUI 編程領域 C++ 占據著絕對的統治地位,至今無人能撼動。但真的有必要用 C++ 來替代 C 完成工作嗎?很多時候 C++ 解決問題的思路真的比 C 更先進嗎?
C 和 C++ 比較
1、隱式操作:C 簡單直接、結構清晰,每行代碼都能清楚的被反匯編成相應的語句,系統會嚴格按照你的代碼去執行。而 C++ 則不盡然,簡單的語句也說不清楚究竟有多少次構造和拷貝,這樣編寫底層代碼是完全不行的,底層需要精準和嚴格的控制。
2、語言介面:現代軟體工程項目的開發,不但對性能有很高要求,對於語言介面的對接能力也有很高要求,因為偌大的一個項目很少僅使用一種語言來進行開發,對於 底層,C++ 對內存和硬體的控制不如 C 簡潔精準;對於很多動態語言和中間件,如:PHP、Python 和 Apache、Redis,都受了 C 的很大影響,甚至就是 C 開發出來的東西,對接起來非常方便。沒錯兒,其實 C++ 採用迂迴的方式也能對接的,但是,遠遠不如 C 方便,開發和維護成本非常高。
硬體層:
1、分配內存:系統加電後運行,經過匯編初始化棧,然後再跳轉到 C 語言的 start_init() 函數去,這時候內存分配機制都還沒有建立,C++ 如何定義類?如何實例化對象?
2、標准庫依賴:C 的所有特性都可以不依賴任何庫運行,如有必要,可以按照特定需求自己編寫庫。
3、處理器兼容:C++ 的類是依賴基地址+偏移地址的定址方式,很多微處理器只有簡單的給定地址定址,不支持一條語句實現 base + offset 的定址機制,很多 C++ 代碼編譯出來需要更多的指令來運算地址,導致性能下降了太多。
4、應用層:C++ 在做應用層尤其是 GUI 編程,這是 C++ 的傳統強項,我一直堅持 C 也能優雅的做出圖像和動畫,但開發效率確實較 C++ 低很多,最近有個很火的 RUST 語言,號稱是未來唯一能取代 C++ 的編程語言,感興趣的同學可以多了解下。
由上可知,操作系統、編譯原理、數據結構與演算法等等基礎知識,是深入理解、掌握和靈活運用 C 的重要前提,現階段程序員職業生涯超過一半的熱門方向直接或間接與 C 有關,我想,學好 C 的重要性也就不言而喻了。

㈤ 我為什麼要選擇Rust

你好,很高興為你解答。
專訪資深程序員庄曉立:我為什麼要選擇Rust?
Rust是由Mozilla開發的注重安全、性能和並發性的編程語言。這門語言自推出以來就得到了國內外程序員的大力推崇。Rust聲稱解決了傳統C語言和C++語言幾十年來飽受責難的內存安全問題,同時還保持了極高的運行效率、極深的底層控制、極廣的應用范圍。但在國內有關Rust的學習文檔並不多見,不久前,筆者聯繫上了Rust1.0版本代碼貢獻者庄曉立(精彩博文:為什麼我說Rust是靠譜的編程語言),請他分享Rust語言特性以及學習經驗。
CSDN:你是從什麼時候開始接觸Rust語言的?是什麼地方吸引了你?

庄曉立:我大概從2013年後半年開始深入接觸Rust語言。它居然聲稱解決了傳統C語言和C++語言幾十年來飽受責難的內存安全問題,同時還保持了極高的運行效率、極深的底層控制、極廣的應用范圍。

其ownership機制令人眼前一亮,無虛擬機(VM)、無垃圾收集器(GC)、無運行時(Runtime)、無空指針/野指針/內存越界/緩沖區溢出/段錯誤、無數據競爭(Data Race)……所有這些,都深深地吸引了我——這個十多年以來深受C語言折磨的痛並快樂著的程序員。

CSDN:在你看來,Rust是怎樣的一門語言?它適合開發什麼類型的項目?為何你會說Rust不懼怕任何競爭對手,它既能取代C語言地位;又可挑戰C++市場,還可向Java、Python分一杯羹?與這些語言相比,Rust有哪些優越的特性?

庄曉立:Rust是一門系統編程語言,特別適合開發對CPU和內存佔用十分敏感的系統軟體,例如虛擬機(VM)、容器(Container)、資料庫/游戲/網路伺服器、瀏覽器引擎、模擬器等,而這些向來主要都是C/C++的傳統領地。

此外,Rust在系統底層開發領域,如裸金屬(bare metal)、操作系統(OS)、內核(kernel)、內核模塊(mod)等,也有強勁的實力,足以挑戰此領域的傳統老大C語言。Rust豐富的語言特性、先進的設計理念、便捷的項目管理,令它在上層應用開發中也能大展拳腳,至少在運行性能上比帶VM和GC的語言要更勝一籌。無GC實現內存安全機制、無數據競爭的並發機制、無運行時開銷的抽象機制,是Rust獨特的優越特性。

其他語言很難同時實現這些目標,例如傳統C/C++無法保證內存安全,Java/Python等無法消除運行時開銷。但Rust畢竟還是很年輕的項目,它釋放影響力需要時間,被世人廣泛接受需要時間;它的潛力能否爆發出來,需要時間去檢驗。我們只需耐心等待。

CSDN:Rust在國內有沒有具體的實際使用案例?

庄曉立:因為Rust1.0正式版剛剛發布不足一月,在國內影響力還不大,我們不能苛求它在國內有實際應用案例。但是在國外,一兩年前就已經有OpenDNS和Skylight把Rust應用在生產環境。還有瀏覽器引擎Servo、Rust編譯器和標准庫、項目管理器Cargo等「兩個半大型應用案例」。這些足夠說明Rust語言的成熟和實用。

CSDN:你參與了Rust1.0版本代碼貢獻,目前該版本正式版已經發布,對此你感覺如何?這門語言是否已經達到比較成熟的階段?

庄曉立:我積極參與了Rust語言開源項目,多次貢獻源代碼,曾連續三次出現在Rust官方博客公布的Rust 1.0 alpha、Rust 1.0 beta和Rust 1.0正式版的貢獻者名單中。在Rust 1.0正式版出台的過程中及此前的很長一段時間,開發者付出了極大的努力,確保Rust 1.0正式版在Semver 2.0規范下,務必保持向後兼容性,除非遇到重大Bug不得不修復。

我認為,在1.0正式發布之後,Rust就已經進入了比較成熟的階段。而且,Rust還在快速迭代發展過程中,1.0發布6周後將發布1.1,再6周後將發布1.2,必然會一步一個台階,越來越成熟穩定。

CSDN:除了功能優先順序以外,在你看來,Rust正在朝什麼方向發展?未來的Rust可以期待什麼樣的特性?

庄曉立:Rust一定會沿著「確保內存安全、無運行開銷、高效實用」的既定方向持續發展。在短期內值得期待的語言特性有:動態Drop、偏特化、繼承、改進borrow checker、改進宏和語法擴展。短期內值得期待的其他特性有:增強文件系統API、提供內存申請釋放API、更好地支持Windows和ARM、更快的編譯速度、更方便的二進制分發機制(MUSL)、更實用的工具等等。

CSDN:據我了解,你之前也比較推崇Go語言,為何想到放棄Go轉向Rust?

庄曉立:推崇Go語言還談不上,不過我曾經嘗試努力接受Go語言,2011底年開始我曾經花費將近半年時間深度關注Go開發進程,提了很多具體的改進意見和建議,也曾經多次嘗試貢獻源代碼。後來考慮到Go語言的設計理念跟我偏差太大,其社區也不太友好,慢慢地疏遠了它。我曾經寫過一篇博客《我為什麼放棄Go語言》,談到了很多具體的原因。

CSDN:國內,參與Rust代碼貢獻的開發者多嗎?有核心的人員嗎?有哪些社區在維護Rust?

庄曉立:國內參與Rust代碼貢獻的開發者並不多,但也不少,官方的貢獻者名單中也偶見幾個貌似國人的名字。Rust的核心開發人員基本上都是Mozilla公司的員工,他們專職負責開發維護Rust語言和相關的項目,Rust社區也主要是他們參與組織和管理的。社區人員討論主要集中在GitHub項目主頁RFC/PR/Issue官方、Discuss論壇/IRC、Reddit、HN、StackOverflow等。

㈥ 想做副業,學編程,學哪種語言比較好(零基礎)

最近有很多同學問我,我是一個零基礎的小白,到底學習哪一種語言比較好?作為一個寫了十年代碼程序員,用過七種語言的我來說,必須要強調一下,語言只是一種工具,當你真正理解了要做的事,選一個順手的就行。跟工具一樣,哪天有新的好用的語言出來,把舊的扔掉就好。

我今天寫這篇文章的目的是想給大家一個參考。

決定用什麼語言的因素有有很多,比如性能,內存佔用,開發難度,運維難度,目標平台,可執行文件大小,代碼可維護性,項目周期,項目規模,招聘難度,團隊構成,歷史遺留問題,甚至派系斗爭等。

比如騰訊就有大量歷史遺留的C和C++的伺服器代碼,畢竟20年前沒得選。又比如空降技術負責人可能會為了讓自己人上位,讓自己團隊出成績,選擇用其他語言或者框架對本來工作良好的系統進行重構。

下面開始聊語言

Python

先說python,是因為這個語言小學生都開始學習了,以後不會python要被小學生欺負了。語法簡單,除了前端幾乎萬能,可用的庫極其豐富,能想到的功能幾乎都有現成的庫可以用。不管是搞爬蟲,做人工智慧,機器學習,數據分析,還是自動化運維,自動化測試,python幾乎都是首選。不想當程序員還想學習一門語言的話,學習python就沒錯了。缺點是慢,但是能讓機器累的事,何必讓人來累。

PHP

PHP是世界上最好的語言,可能這個已經成為很多程序員的梗。

我沒用php開發過大型項目,自己做東西的感覺是這語言非常簡單,以前用的人很多,招聘容易,但是不適合做復雜的項目。現在用得越來越少了,迅雷以前有不少運營活動頁面是PHP做的。

C

C的語法足夠簡單,應該是最接近機器語言的高級語言,適合編寫操作系統底層,驅動程序,硬體相關的程序以及看重性能的程序。由於過於簡單,構建大型程序的復雜度非常高,建議想往研發方向走的同學都學習一下C語言。

可以對計算機一些底層原理了解,比如指令執行過程,內存管理,異常,多線程,編譯過程等又更深層次的了解。掌握C語言再學習其他語言會變得很輕松,學習破解也有幫助,畢竟匯編基本都可以反編譯出C代碼。

C++

C++是一個糟糕的語言,這不是我說的,這是Linux之父說的。我自己用C++四五年時間,越到後面就感覺這句話越有道理。

首先C++的強大是毋庸置疑的,但是作為一個跟C一樣偏底層的語言,如果不理解寫的代碼背後到底發生了什麼事,如果出了錯,你是永遠不可能知道錯在哪裡的。

一個沒有垃圾回收的語言,不用智能指針很容易導致內存泄漏,錯誤的用了智能指針不但內存泄漏之後不好解決,還容易導致提前釋放等問題。

C++支持強制類型轉換,如果轉換前後的內存結構不一樣,很有可能導致各種隱性問題。還有Java之類非原生語言的異常處理都是語言自定義的異常,而C和C++中的異常很多都是操作系統層的異常。

Windows下一個簡單的try catch,你覺得可以抓到try中所有的異常,但是由於異常處理函數的指針保存在棧上,這時一個棧溢出可能直接導致異常處理函數指針被覆蓋,異常會出現在你意想不到的地方。微軟有大神曾說過,想你的代碼後續可維護就刪掉代碼中所有的try catch。

又由於語言非常底層,當程序出現底層崩潰的時候,想解決掉這個崩潰往往要讀一些匯編,這時候如果使用了大量的模板,比如stl和boost,那生成的匯編幾乎完全不可讀。看過stl代碼的人應該都知道這玩意兒寫的有多晦澀,就導致了你想用一個C++庫,如果不了解這個庫的實現原理,那大概率會出錯。

C++的復雜度又讓你很難真的理解那個庫的原理,結論就是C++強大,但是必須用的人也強大。C++直到現在還在瘋狂的增加特性,我用了四五年我自己都不敢說自己會玩C++,能用其他語言就優先考慮其他的,把C++作為最後的選項,不建議新手學,除非你的目標領域必須使用。

Rust

Rust是為了解決C和C++的各種問題而出現的語言,性能接近C++,通過所有許可權,不用垃圾回收就解決了生命周期管理。有包括管理,又有極其嚴格的編譯器檢查,能編譯通過的代碼就不會有大問題,編譯器直接把水平不夠的新手擋在了門外,通過解決出問題的人是方式,從根本上解決了C++的問題。

我第一次用rust寫個小程序就跟編譯器較了一天的勁。它的缺點就是學習難度太大,語言太小眾,庫太少,很多輪子都要自己造。但是隨著微軟之類的大廠使用,相信之後發展會比較好,新項目如果需要C或者C++可以優先考慮rust。

Java

我現在主要也是一個Java程序員,對於Java這個語言我並沒有什麼很特別的感覺,配套設施完善,什麼都能幹,體驗非常贊,就是內存佔用有點難看。想搞安卓考法的必修,阿里有大量的伺服器項目使用Java。

唯一想吐槽的是gradle這個構建系統,版本問題搞得很頭疼。

JavaScript

js是前端的必修課,沒得選,然而node讓js也萬能了。用node做過後端項目後,感覺動態類型語言還是不太適合,由此帶來的低級錯誤很多,雖然可以用typescript解決,但是最終還要編譯成js,無法直接調試。由於沒有原生的多線程支持,利用cpu也只能通過開多個進程的方式。小項目的後端做著玩還可以,大點的還是考慮Java或者是go吧。

Lua

Lua是極其輕量的語言,語言特性接近js,runtime非常小。作為一個腳本語言,性能出色,內存佔用低,很適合各種嵌入式設備或者插件系統。

Go

這玩意兒一定是谷歌為了解決自己後端項目中遇到的問題而開發的語言,各種特性直戳痛處。語法簡單,規范嚴格,這就讓不管什麼水平的開發寫出來的代碼差距都不會太大。

靜態類型,沒有默認參數,沒有異常處理,可以降低犯低級錯誤的概率。編譯成原生代碼,可內嵌C代碼,原生支持協程和多線程,可以保證性能,支持跨平台編譯,輸出單文件方便部署,這些優點帶來的問題是Go的指向性太強,只適合做高並發api類的後端服務。

想用Go開發其他任何領域都會覺得特別別扭,類似C的語法過於簡單,又沒有泛型,導致很多功能都顯得很啰嗦。但由於Go解決了部署問題,跨平台問題,降低了研發人員的水平要求,降低了犯錯誤的概率。

關於這些語言的性能沒有絕對的排序,但根據我做項目帶團隊和面試的經驗,絕大多數的程序員的水平都還碰不到語言的性能瓶頸。一般來說對語言的理解以及多線程,演算法,網路,資料庫,緩存。硬體甚至業務的理解都比語言的性功能影響更大。

再次強調,語言只是工具,只有適不適合,沒有好與不好。基礎強大,用哪個都不怕,基礎太差,用什麼都尷尬。

只是會語法並不是掌握了這門語言,要知道程序背後發生了什麼。比如C++的對象模型,Java的虛擬機,垃圾回收,Go的協程,js的promise,rust怎麼編譯通過等等。

基礎是一門語言的核心,不管學習哪一門語言都要重點學好基礎。