[請益] 為什麼 Go 會紅?

看板Soft_Job作者 (Henry)時間6年前 (2018/04/03 16:33), 6年前編輯推噓22(22025)
留言47則, 26人參與, 6年前最新討論串1/6 (看更多)
八卦板可能太芭樂了,認真問,真的有板友的公司是用 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

04/03 15:41, 6年前 , 1F
不如摸C罩杯
04/03 15:41, 1F

04/03 15:41, 6年前 , 2F
糞語滾
04/03 15:41, 2F

04/03 15:42, 6年前 , 3F
ro支拿賤畜跟支拿賤畜都盜用source code再說是自己寫的
04/03 15:42, 3F

04/03 15:42, 6年前 , 4F
真假這樣還會有人用?
04/03 15:42, 4F

04/03 15:43, 6年前 , 5F
因為大部分的人沒在屌哪些的
04/03 15:43, 5F

04/03 15:57, 6年前 , 6F
因為很多東西還是只能用C寫
04/03 15:57, 6F
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: changyuheng (173.239.198.107), 04/03/2018 16:33:38 ※ 編輯: changyuheng (173.239.198.107), 04/03/2018 16:35:17

04/03 16:41, 6年前 , 7F
因為討厭MS, Oracle, 又覺得php很糞,python效能差,C/C++
04/03 16:41, 7F

04/03 16:41, 6年前 , 8F
開發慢又難,js只是玩具,然後go是清流谷歌推的,來試試看
04/03 16:41, 8F

04/03 16:47, 6年前 , 9F
go算script language?python怎麼和它比阿
04/03 16:47, 9F

04/03 17:10, 6年前 , 10F
何不用dotnetcore (ry
04/03 17:10, 10F

04/03 17:11, 6年前 , 11F
.NET Core 不是語言阿
04/03 17:11, 11F

04/03 17:17, 6年前 , 12F
python效能差轉go+1 對強類型的語言還需要花時間適應
04/03 17:17, 12F

04/03 17:19, 6年前 , 13F
來玩rust吧
04/03 17:19, 13F

04/03 17:25, 6年前 , 14F
dotnetcore: 我就是C#!
04/03 17:25, 14F

04/03 17:25, 6年前 , 15F
快加入我大swift神教 號稱負評最少的語言 嘻嘻
04/03 17:25, 15F

04/03 17:43, 6年前 , 16F
if err != nil 就是潮
04/03 17:43, 16F

04/03 17:49, 6年前 , 17F
c也沒有throw error、面板、這些有的沒有的 也是紅啊
04/03 17:49, 17F

04/03 17:50, 6年前 , 18F
因為很多人都不會 所以我會我很潮
04/03 17:50, 18F

04/03 17:52, 6年前 , 19F
這些語言語法糖造成的心智包袱 反而造就糟糕的程式
04/03 17:52, 19F

04/03 17:53, 6年前 , 20F
go把這些都捨棄,不是很好嗎?
04/03 17:53, 20F

04/03 17:55, 6年前 , 21F
有c底子(非c++)去學go很快
04/03 17:55, 21F

04/03 17:56, 6年前 , 22F
那swift把各種syntax sugar都撿走得算什麼?
04/03 17:56, 22F

04/03 18:00, 6年前 , 23F
那只是和go選擇不同而已,swift很好,只是go選擇跟c一
04/03 18:00, 23F

04/03 18:00, 6年前 , 24F
樣,結構與記憶體操作更貼近os本來的狀況。這讓它們在
04/03 18:00, 24F

04/03 18:00, 6年前 , 25F
撰寫更貼近底層,需要精確計算memory量的程式表現更好
04/03 18:00, 25F

04/03 18:13, 6年前 , 26F
Go的記憶體管理是走Garbage Collection喔……
04/03 18:13, 26F

04/03 18:14, 6年前 , 27F
我覺得Go提供了一個很好的中間選擇,有類似腳本語言的
04/03 18:14, 27F

04/03 18:14, 6年前 , 28F
語法卻擁有編譯語言的速度。
04/03 18:14, 28F

04/03 18:15, 6年前 , 29F
寫 backend 還行吧,不然你也可以用 rust 啊
04/03 18:15, 29F

04/03 18:16, 6年前 , 30F
go是很有c味,所以討厭c讓我也討厭go,而且還沒辦法像c
04/03 18:16, 30F

04/03 18:16, 6年前 , 31F
那樣掌握所有memory de/allocation
04/03 18:16, 31F

04/03 18:24, 6年前 , 32F
go 有一個重要特色是 non-block IO + goroutine
04/03 18:24, 32F

04/03 18:25, 6年前 , 33F
非常適合放在 backend 這種有大量 IO 的情況
04/03 18:25, 33F

04/03 18:51, 6年前 , 34F
所以結論是不如回來寫Java
04/03 18:51, 34F

04/03 19:00, 6年前 , 35F
因為有需求吧?
04/03 19:00, 35F

04/03 19:18, 6年前 , 36F
其實最重要的還是把 non-blocking 的東西封裝成 bloc
04/03 19:18, 36F

04/03 19:18, 6年前 , 37F
king 易寫的型式,當然 C/C++ 有辦法找到類似的 libr
04/03 19:18, 37F

04/03 19:18, 6年前 , 38F
ary,但 goroutine 還是優雅簡單了點。
04/03 19:18, 38F

04/03 19:19, 6年前 , 39F
不過其實鳥的地方也不少,像是各種 err,還有不支援
04/03 19:19, 39F

04/03 19:19, 6年前 , 40F
generic,以及一些過於潔癖強硬的 rule。套件管理惡
04/03 19:19, 40F

04/03 19:19, 6年前 , 41F
夢更不用說了。
04/03 19:19, 41F

04/03 19:44, 6年前 , 42F
渣渣語言
04/03 19:44, 42F

04/03 19:49, 6年前 , 43F
我在網路上看到很多關於 go 套件管理的問題,
04/03 19:49, 43F

04/03 19:49, 6年前 , 44F
有人可以說明一下問題是在哪嗎?例如跟 npm 之類的比較
04/03 19:49, 44F

04/03 19:50, 6年前 , 45F
在 Google 倒掉或是收掉 Go 之前可以拿來用的語言
04/03 19:50, 45F

04/03 20:00, 6年前 , 46F
k&r你可以質疑?
04/03 20:00, 46F

04/03 21:38, 6年前 , 47F
簡單來說裝起來非常麻煩
04/03 21:38, 47F

04/03 22:44, 6年前 , 48F
這個GoUsers清單好像有列 https://goo.gl/HfRAdb
04/03 22:44, 48F

04/03 23:47, 6年前 , 49F
清單頁面最底下有 See also Success Stories
04/03 23:47, 49F

04/03 23:51, 6年前 , 50F
光是google出的框架就不想用了,看看android ng1
04/03 23:51, 50F

04/04 08:56, 6年前 , 51F
推 rust
04/04 08:56, 51F

04/05 00:03, 6年前 , 52F
因為是google大神
04/05 00:03, 52F

04/08 19:13, 6年前 , 53F
go 適合分散式後端
04/08 19:13, 53F
文章代碼(AID): #1QmpnZjP (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1QmpnZjP (Soft_Job)