PTT推薦

Re: [討論] Rust 2024 發佈正式版

看板Soft_Job標題Re: [討論] Rust 2024 發佈正式版作者
w180112
([NOOB]我超RETARD我超廢 )
時間推噓26 推:26 噓:0 →:83

開戰了

說Go是C繼任者真的是很難接受欸

一堆地方不好用Go寫吧

k8s/docker並不是真的效能很吃緊而是需要併發度夠高又稍微方便的語言

但很多地方Go的效能都不夠吧

而且Go的自由度也低

就說平常需要對structure pointer cast就很不方便

現在上班在寫的c project 很在意cache hit rate /memory management/system call耗時?些 Golang都很難做到高效與方便的管理
效能分析Golang也難以像C可以高度最佳化
GC就是一個最好的例子

至於C的&& 跟&
套一句Jserv的話:C假設使用者都是成熟的大人

※ 引述《PosetMage》之銘言
: ※ 引述《Rust (lang)》之銘言:
: : https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html
: : 知道Rust這個程式語言也超過十年了,
: : 自從1.0穩定版推出之後,
: : 就以每三年一個大版本的方式演進,
: : 今年則是輪到了Rust 2024
: : (對,因為延遲了一段時間到2025才發佈)。
: : 不過我看了一下看起來是這次最大的改動RPIT,
: : 然後根本不知道在寫什麼OTZ,
: : 只能說Rust的複雜性越來越高了......
: : 啊對了Future也進Prelude了~
: 好像蠻多人想問為什麼rust要存在XD
: 簡單說可以看看kotlin kotlin使用了JVM 換言之就是復用已經發展成熟的語言後端: rust復用的是成熟的LLVM IR後端 前端C++已經發展到亂七八糟的 早就該重新設計: 就如同kotlin是一個現代前端 rust也是現代前端
: 推文有人說C C也是古老不良設計的語言 比如file系參數順位並不統一
: --
: 至於問我喜歡哪個語言喔 我不會rust 我只會c++23
----
Sent from BePTT

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 72.143.218.142 (加拿大)
PTT 網址

pot123403/01 11:16一開始就是聽同學說golang跑的跟C++一樣快,想說論文用g

pot123403/01 11:16olang寫。結果golang big被gnu打爛,還要外接c ++librar

pot123403/01 11:16y

crazycy03/01 11:56Go除了Goroutine這功能之外 寫起來也不像一個現代語言

tsaigi03/01 13:22go跟c差遠了…

MATT189903/01 13:41寫C過的人應該會覺得Rust的Thread很直覺 畢竟同樣都是O

MATT189903/01 13:41S level的東西 Goroutine我到現在還是沒有很懂到底怎麼

MATT189903/01 13:41運作的 直到最近看了一本解說底層的書才稍微有些理解

pot123403/01 14:42c++20跟boost都有類似goroutine的設計。thread跟routine

pot123403/01 14:42應該是不同層級的東西

KanzakiHAria03/01 14:58找工作遇到go基本上就是高併發 其他常見node-ts

KanzakiHAria03/01 14:58c現在定位就是跟asm dsp這類底層指令在一起的語言了

KanzakiHAria03/01 14:59寫C的人是硬體業 寫go現在就純軟後端

不一定喔 我現在也是純軟 但project要高效能所以是用C

KanzakiHAria03/01 15:00C++把一堆東西搬到編譯器算完是要怎麼比快XD

KanzakiHAria03/01 15:02Go的STW主要靠高併發去藏 併發越高STW藏越好

ILoveAMD03/01 15:33&& & 根本是不一樣的東西 不知道 防呆到近乎偏執的 C#

ILoveAMD03/01 15:35也沒有引進 and or 的關鍵字 (雖然編譯的時候會擋)

ILoveAMD03/01 15:36&& & 根本是不一樣的東西 不知道為何混再一起講

我也不懂為什麼前面要一起講

ohmylove34703/01 15:59有GC的語言沒資格和C/C++比效能

MoonCode03/01 16:56我還以為 && & 是在講引用或指標

Burwei03/01 17:44現在沒有人還拿Go跟C對標了吧 戰Go跟Java比較有意思lol

Lhmstu03/01 19:32Go在雲端元件上真的蠻強的

Lhmstu03/01 19:35go強項真的就是高併發

windows2k03/01 19:39high concurrency也不會是c/c++/rust這等級的水準,真

windows2k03/01 19:39能說的是花費少許精力就能有個還不錯的方案

我也寫過Go 的確很方便 但高併發也只是一直聽人講 實際跟C比也不知道怎麼樣

superpandal03/01 19:54就是比較好寫的c 外加反射可以少寫很多東西

superpandal03/01 19:55現在有泛型 基本上cast也很少寫了 雖然編譯速度變慢

superpandal03/01 19:56效能的話我寫的效能很不錯 fmt包少用 尤其Sprintf方

superpandal03/01 19:57法 基本上goroutine配channel外加select多工就很不錯

superpandal03/01 19:57

superpandal03/01 19:59強型別寫的很不爽快就是了 外加runtime過大這個缺點

superpandal03/01 19:59不然其實不錯

KanzakiHAria03/01 20:09rometheus node_exporter也都是go 完全就是超多工專

KanzakiHAria03/01 20:09門場景

KanzakiHAria03/01 20:10不夠多工用go拿不到什麼好處

Ekmund03/01 20:13沒有太多邏輯上的運算或效能要求 Go的輕鬆程度遠超C/C++

Ekmund03/01 20:13也因此把他講成繼任者就很奇怪 Go犧牲的就是C的強項啊

Ekmund03/01 20:13你要比記憶體管理還真沒幾個語言能拿來跟C/C++比

Ekmund03/01 20:15而且這一切都是建立在面向web service的場景下

Ekmund03/01 20:16脫離這邊就沒Go的事了 連比都沒得比 怎麼繼任w

superpandal03/01 20:21繼不繼承是使用者角度來說的 gc目前來看也還好

superpandal03/01 20:23寫系統也不是不可以 現在敏感場景少一些了

superpandal03/01 20:26一樣配上unsafe也可以快一點

superpandal03/01 20:34一般常見寫法go效能確實不好

Ekmund03/01 21:01由我自己出發的話 使用時的直覺上是像的沒錯

Ekmund03/01 21:01C/C++跳Go時有很多即視感

Ekmund03/01 21:01但回到兩者客群的話 相當程度的不重疊..XD

Ekmund03/01 21:01在C做過很多奇怪的東西 Go幾乎就純純的backend

superpandal03/01 21:19奇怪的東西多的是 是台灣整天在backend

superpandal03/01 21:24多接觸類unix世界會知道更多

KanzakiHAria03/01 21:50就像上一篇提到有rust寫的os redox 其實也有不少os

KanzakiHAria03/01 21:51是用go寫的 biscuit, gopher 很多小玩具也是go寫的

kimi11213603/01 22:50切牛排用牛排刀,野外生存用多功能刀,交換用不是不

kimi11213603/01 22:50行,但是我為啥要多費工夫用不適合場景的工作?語言

kimi11213603/01 22:50只是工具,懂得在不同場景用不同工具才是重要的好嗎

cancelpc03/01 22:53Go算是特定領域較好,通用性沒比較好.

cancelpc03/01 22:55c++真的語言過度複雜化,簡單點反而不容易錯誤

※ 編輯: w180112 (216.232.177.222 加拿大), 03/02/2025 01:49:53

BoXeX03/02 12:08其實那邊我講錯 我應該要講優先級才對

BoXeX03/02 12:08&| 的優先級直觀上應該要跟 +-之類一樣

BoXeX03/02 12:09但現在這樣搞很反直覺 雖然實務上C語言在用的時候

BoXeX03/02 12:10括號都加好加滿就是了

atst203/02 13:17&|是位元運算,+-是數值運算, 放在一起比較有什麼意義嗎?

dmeiki03/02 19:24樓上我想他指的是運算的優先權

atst203/02 19:42所以我想問, 兩種運算的目標就不一樣了,要求優先級一樣

atst203/02 19:43是為了什麼?

BoXeX03/02 20:13像是wiki上例子 a & b == 7 直覺上會以為是 (a&b) == 7

BoXeX03/02 20:13但實際是a & (b == 7)

BoXeX03/02 20:15不用到優先級完全一樣 但至少別在==之後

labbat03/02 20:23翻書就知道的東西了,就跟1|2<<3一樣

BoXeX03/02 20:32寫熟的當然都知道 但不影響這不是好設計吧

Bencrie03/02 20:47也許會有人覺得先乘除後加減不是好設計吧

BoXeX03/02 21:32好 你的程式整天會需要把相等判斷結果做位元運算

BoXeX03/02 21:32用的比把位元運算結果做相等判斷還多

atst203/02 21:55查了一下, Dennis M. Ritchie 自己就有說明了.

atst203/02 21:56簡單摘錄一下: 1. &|的優先權決定是延用B語言的

atst203/02 21:572. B語言中,&|的意義是由上下文決定,所以通常情況下會是

atst203/02 21:57位元運算,但放到if()裡面會變邏輯運算.

atst203/02 21:583. C語言為了處理語&|語意會變化的問題,引入了 && ||

atst203/02 21:594. 在引入&&, ||後,有考慮過重新安排優先權,但當時還要

atst203/02 22:00考慮與B語言的相容性, 認為成本太高所以就維持現狀了.

BoXeX03/02 23:12感謝查詢 這樣看來當初設計時也知道是不好的設計

BoXeX03/02 23:12只是包袱太大就不管了

atst203/02 23:26與其說是不好,不如說在語言發展初期,能做的選擇就是這些.

atst203/02 23:27畢竟現代的程式語言,能夠參考C/C++/Java/Python/Ruby...

atst203/02 23:28但C發展的當時,能參考的就不多,更何況還有硬體上的限制.

ILoveAMD03/02 23:33查了一下 c/c++ golang java javascript 優先度一樣

ILoveAMD03/02 23:34rust 有改

ILoveAMD03/02 23:50c# php 也是跟 c 一樣

aria052003/03 00:30c/c++寫習慣了

freeunixer03/03 09:30從這個小故事我們可以知道,有事沒事都要多讀點書 (~誤

hobnob03/03 10:59推討論串,聽各種意見受益良多

Bencrie03/03 12:58其實我寫的 code & 跟 == 不會一起出現 XD

ABuJiuHaoBun03/03 13:36雲領域已經是go的

KyuubiKulama03/03 14:46我會用括號把要先處理的包起來就是,後面compiler

KyuubiKulama03/03 14:46 會優化的

jimmytzeng03/03 18:13go 要引入外部套件超方便

VScode03/03 19:30go可以直接import github link 覺得寫小專案部署很方便

Ekmund03/03 21:28&|行為牽涉到一組組的邏輯需求 使用時若放一起 就會很自

Ekmund03/03 21:28然地把每一組分開括起來...沒太多遇到優先級的場景

Ekmund03/03 21:28可能遇過也忘了吧

gagalala03/04 09:26Go已經沒有在說要繼承C了吧 然後cross compilation 真

gagalala03/04 09:26的很方便啊 在cloud native也是到處都是go 尤其是auth

gagalala03/04 09:26相關領域

Litfal03/04 12:53我也以為&是在說reference

Litfal03/04 12:55( )就是要加好加滿阿,長一點的邏輯展開成具名變數更好

Litfal03/04 13:01is_vaild_state = (b == 7); 後續具名使用就沒有前後問題

Litfal03/04 13:01又易讀

yam27603/04 15:54有GC的瞬間就不該也不可能說要取代C了