如果你要放棄Golang,你的理由是什麼?

時間 2021-05-07 03:10:00

1樓:

太難了,入門 go ... 2016 年接觸,三年多了還沒入門,語法還是不熟。

算了是我太弱了,就這樣吧。Haskell 都比它好學

2樓:公尺大

之前所在產品有乙個節點使用了乙個開源軟體是golang開發的,本來想省點事結果系統測試總是出問題,偶爾cpu占用過高會夯住整個機器,還有跨平台時候在arm上經常會crash,找support給的建議也顯然只是應付不管用,後來實在受不了了用erlang自己搞了一套換上後整個世界清淨了。

這個其實也不能算是放棄golang吧,畢竟我們沒有用golang開發。

3樓:

我要用乙個求對數函式 log 發現竟然把底數給寫死了 ,這特麼意思是我給你這些不用滾?

再就是看原始碼是不是會發現一堆的常量定義?? 你這是開發?我擦那我寫個乘法表把所有結果列舉得了怪的都說得go快

4樓:大雲兒

題主問的這個問題,我覺得你不想用的原因要麼是不精通,所以覺得寫的煩;要麼就是對語言挑三揀四,非得雞蛋裡挑骨頭,你覺得go語言不好就不用唄,非得到知乎上來問,每次我想玩知乎就是想聽聽別人好的建議或者想看見好的問題,但是基本推薦的都是你這種一天到晚叭叭叭的。既然這樣我推薦你用HTML吧,最好寫個作業系統出來會比較有成就感,如果你覺得我是槓精,那我就是槓精,這種問題沒有任何意義。

5樓:悅石

嫌錯誤處理太繁瑣?那說明你太菜了!

真正的高手都是不處理錯誤的!

we high hands are moving fast, fail fast, just let it crash!

6樓:James

gc帶來的問題遠超想象。

對於效能關鍵點,需要進行太多hack優化,抵消了相對cpp的開發效率提公升。

很多場景下還無法滿足最終的效能要求

7樓:Arthur Guo

如果golang做到刪掉標準庫中的mutex,強制CSP,編譯器自動優化CSP模型到鎖模型…… 反正最後我學習了 rust

8樓:有木桑

我放棄golang是因為那時候.net core 2.0出來了,

想到用.net core以後可以把花括號寫到下一行了,就馬上果斷的放棄了golang。

9樓:yc90s

從事伺服器開發,且同時使用過C++、Erlang和golang,說說我對golang併發程式設計的看法。

golang使用協程加chan來實現併發程式設計,golang的協程相比C++,更輕量,寫法簡單,但是隨著C++也支援協程後,只剩寫法簡單乙個優勢了。相比Erlang的程序我覺得是談不上孰好孰壞。

再來說說golang的chan,我覺得是敗筆。chan沒有解決傳統多執行緒程式設計的問題,使用chan進行協程間的通訊同樣極易出現死鎖等資源競態問題,而且chan居然不支援跨程序使用,雖然網上有第三方的netChan,但是和原生用法不相容。相比Erlang提出了一種解決傳統多執行緒程式設計問題的方法,真的解決了,並且實現的很易用。

總的來說,golang簡化了多執行緒程式設計的寫法,但是並沒有解決核心問題,多執行緒程式設計之所以難,並不是因為語言的語法複雜,而是因為執行緒間的同步處理難,golang的做法並沒有解決這個問題。

10樓:David Gao

放棄Go的時候,因為Go還不太成熟。

如果再次選擇,依然還是會放棄Go。Go總體來說還是比較複雜的,尤其GC和routine切換。雖然心裡很清楚routine的底層是任務密取和IO操作封裝,同步自動非同步化,但是依然感覺還是很累。

更喜歡Erlang和OCaml這種簡單,明了的語言。同時呢,Rust on the way。

補充一下:

Go的包管理比較鬧心,需要使用各種工具去輔助,希望有乙個更好的方案來解決。另外希望GC更智慧型一點,有時候真的很傷不起。

11樓:開心小小喵

首先我不會放棄golang,我就說幾個我工作中對go的一些吐槽。

1.錯誤處理方式太原始,要完善處理所有error太羅嗦2.包管理模式太C,用物件導向的方式去建包很容易導致迴圈引用錯誤這兩個如果搞好,泛型什麼的我覺得到還好,當然,有泛型當然最好作為乙個號稱網際網路時代的C語言,golang其實做到了,只是我們太貪心,希望他能適合用於一切專案,這顯然不現實,能做到在大部分地方都基本適用,一些地方特別適用,這就不容易了,所以,目前的golang,我還是基本滿意的,對未來大規模現代化改進,表示悲觀。

12樓:

因為老大不喜歡╮(﹀_﹀)╭

公司的各種委員會,各種規則制訂者,都不想更新技術。設定各種障礙,制訂各種規範,都不允許用新東西。有時候它們假裝的支援一下,實質上卻是阻礙,比如,制訂乙個go規範,說是統一風格,然後故意跟go的社群習慣各種衝突,故意把別的語言習慣當成真理硬塞給go。

13樓:clia

我們之前後台是用Go寫的,後來一些新的部件因為效能需要引入了Rust,目前Go和Rust同時在用,但我們正在考慮用Rust替代掉Go,統一技術棧。

14樓:

你們用不用go糊屎吃飯啊。。。。。感覺黑不到點子上1.效能不夠,調優乏力。

我開啟profile 火焰圖全是runtime,你這樣我怎麼搞嘛,做人要講道理啊。。。。。編譯成動態庫給C呼叫的時候執行緒數和切換之間我還是懵逼的。。。

2.debug不夠,其實dlv用的很好,但是你編譯成動態庫,給C呼叫的時候,gdb的的時候,符號都沒了???而且http/pprof好像也不能再so裡,不知道為啥?????

3.defer破壞現場,我要看現場,我要gdb,dlv coredump,結果訊號你捕捉了???defer執行了????

4.底層還是C方便,我們要轉C了。。。。

15樓:seis

deffib(n):

ifn<=1:

return

nelse

:return

fib(n-

1)+fib(n

-2)import

timet0=

time

.time

()fib(42

)print

time

.time()-

t0$ python fib.py

61.4900000095

package

main

import

("fmt"

"time"

)func

main

()func

fib(

nint

)int

else

}$ go run fib.go

1.362001

本來是想答為什麼從Python切換到Go的,結果發現自己答錯題目了,算了就這樣吧。

16樓:謝偉

這種問題都不是問題。

之前我學Python,後來工作用Python 寫起來很舒服,所以不斷專研,慢慢了解整個後端的技術棧。

後來,換工作了,公司換技術棧,重新學Go,無非重新熟悉一下Go的語言特性。

所以,要放棄一門語言,無非是企業技術棧不需要了。

每一門語言都有優缺點,選擇一門語言,無非看中的是它的應用場景、生態、社群。

17樓:Lincoln Zhou

不至於放棄。

圍繞go一直以來的包管理問題。go1.11的模組出現著實傷了一部分人的心。

因為之前社群在包管理上投入了很大心力,go和社群在此問題上的溝通出了問題。詳情可以搜一下。某種程度上傷了已有的幾個大包管理專案社群的積極性。

go編譯出的東東,不做優化的話,還是大了點,在小微裝置上不太吃得開。

go2草案的設計不就反映了幾個痛點麼。

18樓:

醜。go 裡的 map 是這樣的:map[string]int,雖然很像 m["k1"] = 7 但是我期望它能是 map[string, int] 的。

理念上無法接受容器中的東西放在和容器同級上。

19樓:rockmen1

國內幾乎沒有人提go編譯快這個優勢,可見沒什麼人關注per commit automatic testing

go 1為什麼沒generics,因為編譯很耗時啊。前公司的scala code base編譯一次15分鐘以上,怎麼玩快速迭代?

強制check err挺好的啊,免得踩懶人挖的坑如果要放棄,肯定是go 2把error checking和generics實現做爛了啊

20樓:2gua

Go在新出程式語言當中算是發展得比較不錯的了,俗稱「混得還行」。它巧妙就巧妙在:

在複雜度方面平衡得不錯,上手快,光憑這一點就能做到「一俊遮百醜」;

在效能方面也權衡得不錯,雖然效能不是特別優秀。乙個goroutine還讓你能夠輕易上手用起來;

一推出的時候,就把網路功能搭起來了,有了這玩意兒,就能做出東西來,自然就有利於推廣。

如果說放棄,個人有個人的看法跟原因。但我覺得社群裡有那麼個別人急迫地想當Go的「領導者」,在搞儀式化,試圖影響及左右他人聽從自己,否則你就是不上道。這種社群裡的「歪風邪氣」可能會影響開發者對Go產生偏見。

21樓:冒泡

因為語法醜吧,用大小寫區別共有私有不能忍,泛型也是原因之一,後來想了個辦法,做乙個自己喜歡的語言,編譯到go:larva-lang/larva-lang

關於效能問題我倒不是特別感冒,經過之前的一些實踐和測試,大概有這麼幾個經驗:

1 作為後台服務,如果不是大量計算的話,基礎庫這些東西也夠用了2 高併發效能問題,go的乙個亮點在於M:N的協程實現的模型,即可以佔多核(之前很多C++的協程實現都只是單執行緒),現在版本還是啟動後runtime預設根據你的核數設定GOMAXPROCS,但實際上這種模式下單位資源的吞吐反而比單線要慢,從測試來看還慢不少,所以很多C++伺服器的那種單執行緒+按核數開多程序的模式還是可以用來調優一下的

3 gc效能。。。話說我更關注卡頓問題

22樓:

抱著替代C或者C++的希望進來,發現它最多只能替代Python,還是寫後端的那點Python。只好帶著失望先出去了。希望越大,失望越大。

23樓:Irons Du

等我學會C++ (以及系統API) 的時候。(在很看重執行效率等)(哈哈,強答抖機靈了,我沒擁抱過Go)

-- (與其把雞蛋放在Go團隊上,不如把雞蛋賣了去買一本C++ Primer,回報更大)

24樓:Golion

1. GC的問題,嚴重、致命;

2. 用golang本來就是為了不去管底層那些破事、高效地實現,然而許多問題要用詭異的方法(如unsafe包)才能解決,足以讓人失去樂趣。

如果你暗戀的男生在暗示你放棄,是否應該放棄了?

拾心 我覺得如果他在暗示你放棄了那就沒有必要再堅持了,沒有回應的付出收穫的只會是滿滿的心酸,這個男生沒有直接拒絕你而是暗示你說明他也不想傷害到你,每乙個女孩子都是自己的小公主,也是被寵著長大的,也許這個男生只是乙個過客呢,也許放棄了這個會有更好的等著你 一一睡懶覺 放棄了吧,畢竟,人家都這麼說了,肯...

女生拒絕你,真的要放棄嗎?

小小程式媛 分兩種吧,在你表白前,女生就可能知道你喜歡她,如果她在你沒表白之前就讓你知道了不可能,說明她不希望傷害你,至少不討厭你 如果之前就知道你喜歡她,而在你表白的時候才拒絕,很明顯不喜歡你。放棄吧。 我是女生,一般拒絕是真的拒絕,首次拒絕我一般都不會讓對方尷尬,但是如果男生把拒絕當做我矜持,或...

如果世界將你拋棄,你會放棄你自己嗎?

Sophie 看到這個問題,有一絲憐惜。題主一定是覺得被拋棄,才會這樣問。抱抱。我想,沒有所謂的 世界 把你拋棄,能拋棄你的,只有你自己,還有那些被稱為 意外 的事故才可以。那個人在這個世界都有乙個位置,你覺得被拋棄,一定是在某些方面受到阻礙感到喪氣,可認真想想,你真的擁有得到它的能力嗎?你為此付出...