顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2018-04-04 17:23:24
看板 Soft_Job
作者 changyuheng (Henry)
標題 [請益] 為什麼 Go 會紅?
時間 Tue Apr  3 16:33:38 2018



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

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

看板 Gossiping
作者 changyuheng (Henry)
標題 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
從 Revolution OS 看作業系統生態變化 - HackMD
[圖]
# 從 _Revolution OS_ 看作業系統生態變化 ## 說明 * 2001 年,[J. T. S. Moore]( ...

 
: [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
GitHub - steshaw/plt: Programming Language Theory
[圖]
GitHub is where people build software. More than 27 million people use GitHub to discover, fork, and contribute to over 80 million projects. ...

 
: [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
Unix philosophy - Wikipedia
[圖]
[圖]
[圖]
The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to minimalist, modular software development. It is based on the experience of leading developers of the Unix operating system. Early Unix developers were important in bringing the concepts of mod ...
 
: [6] 出處: https://www.facebook.com/sunwu2011/posts/1619624211457570
 

-----
Sent from JPTT on my iPhone

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

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 173.239.198.128
※ 文章代碼(AID): #1Qmo_r_J (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1522741237.A.FD3.html
cattgirl: 不如摸C罩杯1F 04/03 15:41
VIGUTA: 糞語滾2F 04/03 15:41
vonannes: ro支拿賤畜跟支拿賤畜都盜用source code再說是自己寫的3F 04/03 15:42
lucifiel1618: 真假這樣還會有人用?4F 04/03 15:42
dklash: 因為大部分的人沒在屌哪些的5F 04/03 15:43
jybest: 因為很多東西還是只能用C寫6F 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++1F 04/03 16:41
alihue: 開發慢又難,js只是玩具,然後go是清流谷歌推的,來試試看
hizuki: go算script language?python怎麼和它比阿3F 04/03 16:47
senjor: 何不用dotnetcore (ry4F 04/03 17:10
johnny94: .NET Core 不是語言阿5F 04/03 17:11
curtis327: python效能差轉go+1 對強類型的語言還需要花時間適應6F 04/03 17:17
Sunal: 來玩rust吧7F 04/03 17:19
senjor: dotnetcore: 我就是C#!8F 04/03 17:25
Argos: 快加入我大swift神教 號稱負評最少的語言 嘻嘻9F 04/03 17:25
LinuxKernel: if err != nil 就是潮10F 04/03 17:43
Darkautism: c也沒有throw error、面板、這些有的沒有的 也是紅啊11F 04/03 17:49
yyc1217: 因為很多人都不會 所以我會我很潮12F 04/03 17:50
Darkautism: 這些語言語法糖造成的心智包袱 反而造就糟糕的程式13F 04/03 17:52
Darkautism: go把這些都捨棄,不是很好嗎?
Darkautism: 有c底子(非c++)去學go很快
rayway30419: 那swift把各種syntax sugar都撿走得算什麼?16F 04/03 17:56
Darkautism: 那只是和go選擇不同而已,swift很好,只是go選擇跟c一17F 04/03 18:00
Darkautism: 樣,結構與記憶體操作更貼近os本來的狀況。這讓它們在
Darkautism: 撰寫更貼近底層,需要精確計算memory量的程式表現更好
ybite: Go的記憶體管理是走Garbage Collection喔……20F 04/03 18:13
ybite: 我覺得Go提供了一個很好的中間選擇,有類似腳本語言的
ybite: 語法卻擁有編譯語言的速度。
CaptainTeemo: 寫 backend  還行吧,不然你也可以用 rust 啊23F 04/03 18:15
elements: go是很有c味,所以討厭c讓我也討厭go,而且還沒辦法像c24F 04/03 18:16
elements: 那樣掌握所有memory de/allocation
littleshan: go 有一個重要特色是 non-block IO + goroutine26F 04/03 18:24
littleshan: 非常適合放在 backend 這種有大量 IO 的情況
felixgugu: 所以結論是不如回來寫Java28F 04/03 18:51
kckckckc: 因為有需求吧?29F 04/03 19:00
LinuxKernel: 其實最重要的還是把 non-blocking 的東西封裝成 bloc30F 04/03 19:18
LinuxKernel: king 易寫的型式,當然 C/C++ 有辦法找到類似的 libr
LinuxKernel: ary,但 goroutine 還是優雅簡單了點。
LinuxKernel: 不過其實鳥的地方也不少,像是各種 err,還有不支援
LinuxKernel:  generic,以及一些過於潔癖強硬的 rule。套件管理惡
LinuxKernel: 夢更不用說了。
youngce: 渣渣語言36F 04/03 19:44
johnny94: 我在網路上看到很多關於 go 套件管理的問題,37F 04/03 19:49
johnny94: 有人可以說明一下問題是在哪嗎?例如跟 npm 之類的比較
longlongint: 在 Google 倒掉或是收掉 Go 之前可以拿來用的語言39F 04/03 19:50
darthv: k&r你可以質疑?40F 04/03 20:00
dreamnook: 簡單來說裝起來非常麻煩41F 04/03 21:38
VisualStudio: 這個GoUsers清單好像有列 https://goo.gl/HfRAdb42F 04/03 22:44
GoUsers ·  golang/go Wiki ·  GitHub
[圖]
GitHub is where people build software. More than 27 million people use GitHub to discover, fork, and contribute to over 80 million projects. ...

 
VisualStudio: 清單頁面最底下有 See also Success Stories43F 04/03 23:47
GoalBased: 光是google出的框架就不想用了,看看android ng144F 04/03 23:51
obamina48: 推 rust45F 04/04 08:56

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 451 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇