[爆卦]go語言用途是什麼?優點缺點精華區懶人包

為什麼這篇go語言用途鄉民發文收入到精華區:因為在go語言用途這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者changyuheng (Henry)看板Soft_Job標題[請益] 為什麼 Go 會紅?時間...

go語言用途 在 beinghongkong Instagram 的最佳解答

2021-05-10 05:15:14

走進「香港平面設計之父」的圖語世界。 自六十年代初落戶香港,石漢瑞(Henry Steiner)整整二十年都住在西營盤一所酒店裡(文末為Steiner親自撰寫的英文原文《Home away from home》)。像他這樣一個沒有「nesting DNA」的無根者,卻在近半世紀,用上各種符號語言建...



八卦板可能太芭樂了,認真問,真的有板友的公司是用 Go 作為主要語言的嗎?

※ [本文轉錄自 Gossiping 看板 #1Qmo_r_J ]

作者: changyuheng (Henry) 看板: Gossiping
標題: Re: [問卦] C語言學到什麼程度才可以說自己會寫C
時間: Tue Apr 3 15:40:34 2018

借大神的文章發問:

Go 的效能很好、GC 超越 Java、static typing、syntax 也簡潔
容易寫出多核心 CPU 利用度高的程式。

但是它沒有
exception handling syntax、
null safety、
function/operator overloading、
inheritance,
加上 standard library 不夠廣泛,
套件管理不優,
也就算了,
居然沒有 generic types,
請問這樣要怎麼寫,為什麼還那麼紅,有掛嗎?

※ 引述《jserv (松鼠)》之銘言:
: ※ 引述《orz77586 (成大harden)》之銘言:
: : 需要強到像Jserv一樣可以邊演講邊用開外掛的速度打扣
: : 還是學到什麼程度就可以說算是會寫C了
: : 版上大大們有沒有什麼看法
: 板上先進比比皆是,但是大多忙碌,最近剛好在研究社交網路的我代替大大們回覆。
: 身為中學摸 C 語言、大學摸 C 罩杯的大叔,我只想說「均衡發展」遠比鑽牛角尖
: 重要。
: 解釋之前,前美國總統甘迺迪 (John F. Kennedy) 曾說:
: > I believe that this nation should commit itself to achieving the goal,
: > before this decade is out, of landing a man on the Moon and returning
: > him safely to the Earth.
: (我相信美國在 1960 年代結束前,將全力以赴地實現一個目標,那就是讓人類
: 登陸月球,並確保安全返回) [0]
: 這句話非常明確:在美蘇冷戰時期,讓所有參與太空國防的上萬名人員,乃至於
: 當時的聯邦人民都知道,枝幹該把怎樣的養份送到主幹,更明確來說,機構的專家
: 會去研究夠耐用的船體、天文物理的專家會去研究重力對路線的影響、電子通訊的
: 工程人員構思一系列有效的傳輸方式,而投身教育者則是從國會議員到普羅大眾都
: 涵蓋,確保資金和人才供給不斷絕。最終,阿波羅 11 號 (Apollo 11) 作為 NASA
: 阿波羅計畫中的第 5 次載人任務,實現人類第一次登月 (並且成功返回地球的)
: 任務 (當然第一次人類登月任務始於神州大陸的嫦娥,中國人帶著逃離中國的基因
: 可見一班),繞行月球 30 周。
: 等等,上面的故事和 C 語言有何關係?「你 484 來混 P 幣呢?」且慢,讓我
: 繼續說下去。
: 阿波羅計畫的規模之大,即便是今天回顧,也難用簡單幾句帶過,遑論 1950 年代
: 末期總是被蘇聯太空技術 [1] 壓著打的美國政府,上面甘迺迪那席話就在 1961 年
: ,啟動阿波羅計畫之際。而 1960 年代中期啟動 Project MAC (與阿波羅登月計畫
: 平行,由 DARPA 贊助的大型計畫) 的 Multics 專案,定位開發多人分時多工作業
: 系統,並且運作於多核的硬體環境 (multi-processor!),更有意思的是,Project
: MAC 這麼龐大的計畫卻由麻省理工學院 (MIT) 領軍開發關鍵技術,並由 GE (美國
: 通用電氣) 提供硬體及 AT&T 旗下的 Bell Laboratories 開發軟體和技術支持 (受
: 到反壟斷條款的處分,AT&T 不得涉及硬體銷售,但研發專利技術並授權他人不在
: 此限),今日我們熟知的 C 語言開創者 -- 已故的 Dennis M. Ritchie (縮寫 dmr)
: [4] 和今年 75 歲卻供職於 Google Inc. 並帶領一群高手投入 Go 程式語言開發的
: Kenneth Thompson (縮寫 ken) -- 即服務於 Bell Labs。
: 以商業的角度來說,Multics 是個失敗的作業系統,但 ken 和 dmr 卻汲取其中的
: 養分,帶著戲謔的口吻,開發出名為 UNICS 的作業系統,"uni-" 和 "multi-" 是
: 對比的前綴,後來 UNICS 被正名為 UNIX,自此為世人熟知,並且影響你我生活的
: 個別面向。UNIX 第一版用組合語言開發,提供了檔案系統的服務,後來用 C 語言
: 重寫,其中 Research UNIX version 6 (UNIXv6) 是大量被學校和公司行號採用的
: 作業系統 (在 AT&T 的律師團收取天價授權費之前)。
: 但是,你若把 C 語言當作「只是另一個程式語言」來看待,那就大錯特錯了。
: 在資訊科技領域,部分工程師和甚至是企業家跟編譯器發展有關,比方說 Eric
: Schmidt (Novell 前執行長、Google 前執行長) 在 Bell Labs 服務時,重寫了
: lex 工具程式 [2],dmr 在發展 Unix 作業系統和 C 語言之前,參與 Multics
: 專案的編譯器開發工作,他們得以熟悉程式語言理論 (Programming Language
: Theory, 縮寫 PLT) [3] 和電腦硬體的特性,進而到其上的作業系統和各式應用
: 程式。
: dmr 有次被人問及:
: > 「一個人從新手到精通 C 語言的電腦程式開發者,並得以寫出卓越不凡的
: > 程式碼,根據你的經驗,需要多長時間呢?」
: 這位帶有幽默感的曠世奇才回覆道:
: 「不知道,我不需要學 C」
: 回到最初的提問「學到什麼程度就可以說算是會寫 C?」,那終極回覆大概就如
: dmr 這樣簡單的答覆:實際解決複雜且影響深遠的問題,過程中萃取出 UNIX 哲學
: [5] 和 C 語言這樣的人類文化資產出來,塑造今日我們所見的一切。
: 引用中正大學吳昇教授日前的話: [6]
: > 以武俠世界的武功來比喻,一些拳法、招數學好很重要,但是內功心法也很重要。
: > 在金庸射鵰英雄傳小說裡馬鈺道長到塞外教郭靖兩年內功心法,奠下了郭靖武學的
: > 雄厚根基後來成為大俠。
: 我相信學習 C 語言絕對不是把玩拳法、熟記招數,而是打通經脈,深植雄厚根基,
: 著眼於開發高品質的軟體、關注清晰且一致的 coding style、時時關注高可讀性、
: 勤勞地調整出清晰漂亮的結構,更不忘在高效能、好維護、具延展性、強韌性、安全
: 性等議題持續精進。
: 做到這樣的話,已可算是「開始學習 C 語言」了。歡迎各位和我同事宅色夫一起
: 學習和交流 C 語言:
: * 線上教材: http://hackfoldr.org/dykc
: * (偽) 網紅頻道: https://www.youtube.com/c/guts4tech (請幫忙按讚)
: 身為 C 語言初學者,我不以進展遲緩為恥,相反的,我樂見自己的創作能夠用在
: 我家人和身邊朋友每天用的 Android 手機、中文輸入法、嵌入式裝置,甚至包含
: 大眾交通設施 (先賣關子 :P)。人類的歷史中,還有什麼時期能夠憑藉雙手,對這
: 世界帶來持續廣泛的影響呢?我只是單純地追隨 dmr 和 ken 等前輩的步伐。
: 同場加映:
: 2001 年,J. T. S. Moore 以自由軟體和開放原始碼軟體發展為主題,導演了相當
: 可貴的紀錄片《Revolution OS》,訪談了若干先鋒者,是理解駭客 (hacker)、
: GNU 計畫、自由軟體基金會 (FSF)、Linux 核心 (kernel)、開放原始碼 (open
: source) 和自由軟體 (free software) 基於不同理念各自發展、Netscape 宣佈
: Mozilla 開放原始碼專案、基於 Apache 和一系列開放原始碼技術的公司、在
: NASDAQ 上市等等歷程的第一手資訊。隨後新竹交通大學資訊工程系「自由開源
: 軟體與專案協作」課程師生更新了紀錄片諸多細節和增添註釋。對理解 C 語言前世
: 今生乃至於當今的資訊工業發展,應有一定程度的助益:
: https://hackmd.io/s/r1dUx8ltg
: [0] 阿波羅計畫可參照 Discovery 拍攝的紀錄片〈登月機具:導航系統〉,我學生
: 幫忙翻譯了中文字幕:
: https://amara.org/en/videos/oJHtDEuqZfVK/info/navigation-computer/
: [1] 蘇聯於 1957 年 10 月 4 日發射 Sputnik I,後者是第一顆進入行星軌道的
: 人造衛星,隨即震撼了整個西方,在美國境內引發了一連串事件,如史普尼克
: 危機、華爾街發生小股災。開始了美蘇兩國之間的太空競賽
: [2] lex 的中文解說可見:
: https://mropengate.blogspot.tw/2015/05/parser-lex-yacc-1.html
: [3] PLT 的極佳資料彙整可見:
: https://github.com/steshaw/plt
: [4] 追憶 Dennis M. Ritchie 的文章:
: http://www.ituring.com.cn/article/14315
: [5] 由於 AT&T 和 University of California, Berkeley (UCB) 曠日費時的官司,
: 今天我們說的 "UNIX" 或 UNIX-clone (如 Linux, FreeBSD, macOS 等等) 裡頭
: 的原始程式碼已經和最初 AT&T UNIX 的版本相差甚遠。但 UNIX 帶來的精神和
: 哲學思維至今長存,在資訊科技的許多地方可及。詳情可見:
: https://en.wikipedia.org/wiki/Unix_philosophy
: [6] 出處: https://www.facebook.com/sunwu2011/posts/1619624211457570

-----
Sent from JPTT on my iPhone

--
一本紅塵心中陳,夜夜頁頁念佳人。 - 珩 2018

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 173.239.198.128
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1522741237.A.FD3.html
cattgirl: 不如摸C罩杯 04/03 15:41
VIGUTA: 糞語滾 04/03 15:41
vonannes: ro支拿賤畜跟支拿賤畜都盜用source code再說是自己寫的 04/03 15:42
lucifiel1618: 真假這樣還會有人用? 04/03 15:42
dklash: 因為大部分的人沒在屌哪些的 04/03 15:43
jybest: 因為很多東西還是只能用C寫 04/03 15:57

※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: changyuheng (173.239.198.107), 04/03/2018 16:33:38
※ 編輯: changyuheng (173.239.198.107), 04/03/2018 16:35:17
alihue: 因為討厭MS, Oracle, 又覺得php很糞,python效能差,C/C++ 04/03 16:41
alihue: 開發慢又難,js只是玩具,然後go是清流谷歌推的,來試試看 04/03 16:41
hizuki: go算script language?python怎麼和它比阿 04/03 16:47
senjor: 何不用dotnetcore (ry 04/03 17:10
johnny94: .NET Core 不是語言阿 04/03 17:11
curtis327: python效能差轉go+1 對強類型的語言還需要花時間適應 04/03 17:17
Sunal: 來玩rust吧 04/03 17:19
senjor: dotnetcore: 我就是C#! 04/03 17:25
Argos: 快加入我大swift神教 號稱負評最少的語言 嘻嘻 04/03 17:25
LinuxKernel: if err != nil 就是潮 04/03 17:43
Darkautism: c也沒有throw error、面板、這些有的沒有的 也是紅啊 04/03 17:49
yyc1217: 因為很多人都不會 所以我會我很潮 04/03 17:50
Darkautism: 這些語言語法糖造成的心智包袱 反而造就糟糕的程式 04/03 17:52
Darkautism: go把這些都捨棄,不是很好嗎? 04/03 17:53
Darkautism: 有c底子(非c++)去學go很快 04/03 17:55
rayway30419: 那swift把各種syntax sugar都撿走得算什麼? 04/03 17:56
Darkautism: 那只是和go選擇不同而已,swift很好,只是go選擇跟c一 04/03 18:00
Darkautism: 樣,結構與記憶體操作更貼近os本來的狀況。這讓它們在 04/03 18:00
Darkautism: 撰寫更貼近底層,需要精確計算memory量的程式表現更好 04/03 18:00
ybite: Go的記憶體管理是走Garbage Collection喔…… 04/03 18:13
ybite: 我覺得Go提供了一個很好的中間選擇,有類似腳本語言的 04/03 18:14
ybite: 語法卻擁有編譯語言的速度。 04/03 18:14
CaptainTeemo: 寫 backend 還行吧,不然你也可以用 rust 啊 04/03 18:15
elements: go是很有c味,所以討厭c讓我也討厭go,而且還沒辦法像c 04/03 18:16
elements: 那樣掌握所有memory de/allocation 04/03 18:16
littleshan: go 有一個重要特色是 non-block IO + goroutine 04/03 18:24
littleshan: 非常適合放在 backend 這種有大量 IO 的情況 04/03 18:25
felixgugu: 所以結論是不如回來寫Java 04/03 18:51
kckckckc: 因為有需求吧? 04/03 19:00
LinuxKernel: 其實最重要的還是把 non-blocking 的東西封裝成 bloc 04/03 19:18
LinuxKernel: king 易寫的型式,當然 C/C++ 有辦法找到類似的 libr 04/03 19:18
LinuxKernel: ary,但 goroutine 還是優雅簡單了點。 04/03 19:18
LinuxKernel: 不過其實鳥的地方也不少,像是各種 err,還有不支援 04/03 19:19
LinuxKernel: generic,以及一些過於潔癖強硬的 rule。套件管理惡 04/03 19:19
LinuxKernel: 夢更不用說了。 04/03 19:19
youngce: 渣渣語言 04/03 19:44
johnny94: 我在網路上看到很多關於 go 套件管理的問題, 04/03 19:49
johnny94: 有人可以說明一下問題是在哪嗎?例如跟 npm 之類的比較 04/03 19:49
longlongint: 在 Google 倒掉或是收掉 Go 之前可以拿來用的語言 04/03 19:50
darthv: k&r你可以質疑? 04/03 20:00
dreamnook: 簡單來說裝起來非常麻煩 04/03 21:38
VisualStudio: 這個GoUsers清單好像有列 https://goo.gl/HfRAdb 04/03 22:44
VisualStudio: 清單頁面最底下有 See also Success Stories 04/03 23:47
GoalBased: 光是google出的框架就不想用了,看看android ng1 04/03 23:51
obamina48: 推 rust 04/04 08:56
chia7712: 因為是google大神 04/05 00:03
lnmlee: go 適合分散式後端 04/08 19:13

你可能也想看看

搜尋相關網站