首頁 後端開發 Golang 我嘗試了所有熱門程式語言

我嘗試了所有熱門程式語言

Dec 16, 2024 am 10:14 AM

在這篇文章中,我將嘗試比較 GoLang、Zig 和 Rust。以及為什麼 Rust 贏得了這次比較(對我來說)。

故事時間!

我用 GoLang、Zig 和 Rust 寫了 3 個項目。這些項目足夠大,可以很好地了解語言基礎、缺點以及語言、框架或生態系統是否有問題。

提示:請隨意跳到 TLDR 部分以獲得該死的答案。

Go語言

幾個月前我開始建立開發者工具,最初使用 GoLang。

第一個是基本的資料庫管理和遷移實用程式 (dbdaddy),我真的很喜歡使用 GoLang。

儘管這是我第一次嘗試用GoLang 構建比Advent Of Code 和10 億行挑戰問題更嚴重的東西,我很驚訝我花了不到一周的時間就精通了它 .

之字形

一直以來,我都在和 Zig 一起玩(沒什麼太嚴重的)。我聽說 Redis 將其許可證更改為“技術上非開源”許可證。

我心想:在 zig 中建立一個新的開源 Redis 有多難?

I Tried Every Hot Programming Language

快轉 2 個月後:該死。

「GbCache」背後的基本思想是基於 LRU 的記憶體緩存,但實際的事實來源是保存在磁碟上,以及諸如引起的特定鍵/值更改的通知以及分配給鍵的 TTL 之類的功能。

Zig 的明確性令人印象深刻,這使得它變得更加簡單且更容易使用。

我從「如果明天要使用 HyperScale™,它能處理負載嗎?」的角度啟動了 GbCache

這個觀點驅使我排除了 GoLang,因為如果我無法極其確定地推理記憶體分配,我將無法完全控制速度。

從這個角度做事是一次非常好的學習經歷,因為突然你開始看到程式中所有可能崩潰、耗盡記憶體或可能成為瓶頸的點-程式碼中的熱路徑.

由於 Zig 的明確,我確定了我在何時何地分配記憶體

但是... Zig 歸根結底並不是一種記憶安全的語言,而我是一個技能問題與珠穆朗瑪峰一樣大的人。

進入鐵鏽

在過去 2 年裡,我曾 3 次嘗試並憤怒地退出 Rust。來自 JavaScript 背景,我們的 macbook m69 maxes 中有大量 GB 內存,我從來沒有真正理解為什麼 Rust 有這些規則,並且從炒作的角度來看待它可能是一個糟糕的角度.

儘管我多次憤怒地退出,Rust 仍然在我的腦海中,它奇怪的語言、令人沮喪的內存規則和令人難以置信的生命週期。

但是在寫 Zig 時,有件事讓我受到了打擊...我已經在跟踪所有這些記憶規則和生命週期,但這是一種精神負擔

我開始注意到 Zig 程式碼中的模式和樣板,試圖做 Rust 已經做的事情。

在為 SFS(SFW 名稱 - “簡單檔案儲存”)建立 CLI 用戶端時,我決定再次嘗試 Rust。

這次,在翻閱這本生鏽的書時,我開始感受到這一切的「原因」。

我喜歡 Rust 的最基本的一點是基於所有權和借用的記憶的心智模型

儘管這種擁有和引用的記憶模型是虛構的,但它是一種方便推理的心智模型,並且在我的頭腦中產生的開銷更少

與 C 和 Zig 等語言在您頭腦中產生的經典心理記憶模型相反。 必須在腦海中追蹤各個記憶體分配及其生命週期嗎?不用了,謝謝!

總長DR

Go語言

  • (就像你的 5 個月活躍用戶會需要它一樣)
  • 可靠
  • 愚蠢的簡單,語言永遠不會成為你和你的目標之間的障礙
  • 偉大的軟體包生態系統

之字形

  • 速度極快
  • 愚蠢的簡單

  • 速度極快
  • 可靠
  • 偉大的軟體包生態系統

他們全部

  • 驚人的錯誤處理

如果你是日常普通的後端工程師,並且喜歡計算他們的衝刺性能,那麼你最好的選擇可能是GoLang

「但是我的公司不使用 GoLa—」
「離開公司,離開它,為工具使用正確的工作。離開公司。」

對我來說,GoLang 就像一場包辦婚姻,你內心永遠不會感到那種匆忙,但它永遠不會讓你失望,它是你的生死攸關的伴侶,你可以把你的一生都押在它上面它。

但是我的朋友,如果您正在尋找那種高峰,請繼續閱讀!

魯斯特普蘭

但是我想要那種衝動…我想要看到他們的眼睛語法時我的心就會爆炸…當我和他們在一起時,我想要感覺自己在天堂見鬼,當我不.. .

I Tried Every Hot Programming Language

讓我們快速看一下 Rust 中多執行緒安全的範例。

我們有一個堆分配的值,並且有 10 個執行緒嘗試獨立修改它。

此程式碼不安全地存取計數器變量,因為所有執行緒都會嘗試同時修改計數器。

在其他語言中,類似的程式碼會愉快地編譯和運行。

如果您以前在多執行緒環境中工作過,您的第一個想法可能是使用「互斥體」來防止更新計數器變數時的競爭條件。

但是由於人為錯誤,在大型程式碼庫中很容易錯過這樣的小事。

Rust 甚至不允許這個程式編譯。

由於所有權和借用規則,編譯器將檢測到您在for 循環的第一次迭代中的第一個線程中可變地借用計數器...到目前為止還好. ..第二次迭代還想可變地並行借櫃檯? 不安全!引發編譯時錯誤! !

出於變異/修改的目的而從其所有者處引用或「借用」值稱為「可變借用」

在這種情況下,其他語言根本不會給你任何錯誤。檢查正確性是你的責任,Rust 會阻止這種情況發生。

像這樣在語言中傳播的結構可以幫助你避免搬起石頭砸自己的腳(經常)。

結論

這要看情況!

真的希望有一種語言能夠答案,即使 GoLang 非常接近這個目標,它實際上取決於您的用例,最重要的是您的團隊。

對我來說,與 Rust 合作很愉快(現在,誰知道呢......呵呵)

TigerBeetle 的人們在 Zig 上嘗試了一次機會,他們對此很滿意。

Primeagen 對 Zig 更滿意。

對 Jarred Sumner 來說,Zig 很好,他用 Zig 寫了 Bun。

Mitchell Hashimoto(HashiCorp 背後的人)正在 Zig 中書寫幽靈,這是一個速度極快的術語 —

.
.
.

等等...

以上是我嘗試了所有熱門程式語言的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
Golang的目的:建立高效且可擴展的系統 Golang的目的:建立高效且可擴展的系統 Apr 09, 2025 pm 05:17 PM

Go語言在構建高效且可擴展的系統中表現出色,其優勢包括:1.高性能:編譯成機器碼,運行速度快;2.並發編程:通過goroutines和channels簡化多任務處理;3.簡潔性:語法簡潔,降低學習和維護成本;4.跨平台:支持跨平台編譯,方便部署。

Golang和C:並發與原始速度 Golang和C:並發與原始速度 Apr 21, 2025 am 12:16 AM

Golang在並發性上優於C ,而C 在原始速度上優於Golang。 1)Golang通過goroutine和channel實現高效並發,適合處理大量並發任務。 2)C 通過編譯器優化和標準庫,提供接近硬件的高性能,適合需要極致優化的應用。

Golang vs. Python:主要差異和相似之處 Golang vs. Python:主要差異和相似之處 Apr 17, 2025 am 12:15 AM

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。Golang以其并发模型和高效性能著称,Python则以简洁语法和丰富库生态系统著称。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

表演競賽:Golang vs.C 表演競賽:Golang vs.C Apr 16, 2025 am 12:07 AM

Golang和C 在性能競賽中的表現各有優勢:1)Golang適合高並發和快速開發,2)C 提供更高性能和細粒度控制。選擇應基於項目需求和團隊技術棧。

Golang的影響:速度,效率和簡單性 Golang的影響:速度,效率和簡單性 Apr 14, 2025 am 12:11 AM

goimpactsdevelopmentpositationality throughspeed,效率和模擬性。 1)速度:gocompilesquicklyandrunseff,IdealforlargeProjects.2)效率:效率:ITScomprehenSevestAndardArdardArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增強的Depleflovelmentimency.3)簡單性。

Golang和C:性能的權衡 Golang和C:性能的權衡 Apr 17, 2025 am 12:18 AM

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

C和Golang:表演至關重要時 C和Golang:表演至關重要時 Apr 13, 2025 am 12:11 AM

C 更適合需要直接控制硬件資源和高性能優化的場景,而Golang更適合需要快速開發和高並發處理的場景。 1.C 的優勢在於其接近硬件的特性和高度的優化能力,適合遊戲開發等高性能需求。 2.Golang的優勢在於其簡潔的語法和天然的並發支持,適合高並發服務開發。

See all articles