青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-90  評論-947  文章-0  trackbacks-0

(原發于 GitHub Pages,2019-01-01 23:22:43)

2019 年,我回來了。

不知不覺中,我入 PHP 的坑已經 3 年有余,入 Go 的坑也大半年了。作為不評論不舒服斯基星人,自然要對 Go 品頭論足一番的。

總的一句話,Go 的一些特性確實恰到好處,然而更多的地方卻是平庸、繁瑣、束縛,以至于我想不到它是適合哪些場景的。

靜態語言里,C、C++ 有著明顯的適用領域:你要想老老實實寫程序,不玩任何花招,就用 C 吧,至少你能掌控一切,實在想玩你還有宏這個大殺器;你要想玩點花招,那就用 C++,代價就是需要自身水平更高,能掌控到多大層次就寫多大層次,不懂的不要不懂裝懂去用,總體來說還是安全的。

腳本語言里,如果要隨便寫點什么工具,python 啥的挺方便的;寫點網絡的,就用世界上最好的語言 PHP 吧。什么?你說 Java?實在沒辦法,體量太大,公司要你用你就用吧。不過就其本質而言,其實 Java 和今天的主角——Go 是同一類的。不是說他們語法像,是指應用場景(不過這個領域拿 PHP 寫顯然會更爽)。

嗯——為了表達出真實的意思,我想用詞稍微犀利點,請先做一下心理建設。

我不怎么懂 Java,就我淺薄的了解而言,如果你的公司、團隊有很多傻逼,甚至你自己也是,業務上又正好可以用 Java 界的一些現成的框架、組件,那么用 Java 肯定是沒錯的啦。它確實有一種魔力,讓你無論多傻逼,也絕對寫不出錯得多么隱蔽、精妙無比的代碼;同時讓你無論多牛逼,也寫不出多么精彩絕倫、言簡意賅的代碼。Go 也有這種特質,甚至有些地方比起 Java 更有過之而不及。不信請看:

別人家的寫法:

r = f(p1, p2 != null ? p2 : p3)
$r = f($p1, $p2 ?? $p3) 

Go 家的寫法:

var r someType
if p2 != nil {
	r = f(p1, p2)
} else {
	r = f(p1, p3)
}

為什么要設計成這樣?Go 爸爸說:你們有些人啊,會嵌套很多層 ?:,導致代碼可讀性太差啦,于是禁止你們使用 ?:,這是家法。在這里,作為熊孩子的代表,我來告訴大家怎樣寫出讓 Go 爸爸無語的代碼:

	foo := 1
	bar := 2
	var foobar int
	if foo > bar { if bar > 1 { foobar = 1 } else if bar < 0 { foobar = 2 } else { foobar = 3 } } else { if foo >= 3 { foobar = 4 } else { foobar = 5 } }

怎么樣?可讀性差不差?

看到了吧,這種傻逼是防不住的,他愿意把 ?: 嵌套好多層,它同樣可能會把 if else 嵌套好多層。有素質的人會怎么做?遇到 ?: 嵌套太多立馬拆成 if else。所以結論是,即使去掉 ?:,傻逼還是傻逼,但是正常的人寫代碼就會很啰嗦;支持 ?:,傻逼還是傻逼,正常人用起來爽。要知道一層 ?: 的場景占所有 ?: 場景的比例還是很高的吧。我覺得可以這樣,Go 爸爸可以統計一些工業級代碼庫的 ?: 嵌套層數,作為數據支撐(比如自家 Chrome 里一層 ?: 占 95%,兩層占 4.9),然后再在語言層面只支持一層 ?:,編譯參數可選打開兩層,不支持兩層以上。這就功在千秋了。

除了 不支持 ?:,Go 爸爸還有很多這樣的設計,隨便舉幾個例子:

  1. 不支持默認參數
  2. 不支持運算符重載
  3. 不提供 goroutine id(以及 gls、可重入鎖)

特別是第三點,也是這種思路,因為你們可能會濫用,所以我不提供。類似這種“爸爸思路”,是我今天要噴的最大噴點。前兩點也許是抄 Java 的,不怪 Go 爸爸。

綜上,Go 爸爸通過扼殺一些基本語法或者一些基礎信息,來防止傻逼干壞事,同時讓正常人用起來很啰嗦,同時還可能防止不了傻逼干壞事。這跟 Java 通過不提供高級語法來防止傻逼干壞事是師出同門啊,而且他們正好都能寫網絡服務程序,你說它們像不像?

然而,Go 爸爸也有精分的時候,它居然發明語法糖了耶!比如 if 可以執行一個句句。單就這個語法而言,我的態度是中立偏贊。贊是贊 Go 爸爸確實用過心了,某些時候挺方便,還能縮小變量作用域;不過這個總歸是可有可無的,畢竟換一行寫也不會死,要變量作用域加個大括號就行。

小語法方面倒是有個亮點,那就是 switch 的隱式 break、顯式 fallthrough 處理。不多展開了。

除了防傻逼,Go 爸爸還有一個思路,就是只許州官放火,不許百姓點燈。有兩個語法點——

  1. 泛型
  2. 逗號ok斷言

先說泛型吧。不支持泛型其實我挺能理解的,因為他確實比 ?: 復雜多了,傻逼用不起,?: 都沒有,怎么可能會有泛型呢。然而 Go 爸爸有特權呀,它的 map、chan 可都是泛型的哦。但是你要寫一個泛型的語法結構的話,對不起沒有。

再說逗號ok斷言,同樣 Go 爸爸要得起,我們要不起。其實我更想要一個這樣的語法:當返回值是 xxx, ok 或者 xxx, err 的時候,我如果用一個返回值接,那么就返回第一個,以便鏈式調用,同時 !ok 或者 err != nil 的時候 panic。

以上兩小點雖然是在噴,不過還好啦。無所謂的。下面講幾個大的方面。

代碼組織

我特別贊賞 Go 對于 package 級嚴格的循環依賴檢查。然而如果加上其他規則:

  • 一個目錄一個 package
  • 不同路徑下的同名目錄也是不同 package
  • go 代碼無法拆成 .h、.cpp

實際可操作性就會非常差。要拆 package,就要把依賴關系梳理得特別嚴格,半點不得馬虎。這對工一般的程代碼來說是個極大的挑戰。

我更傾向于做成函數級循環依賴檢查,或者不限制(畢竟遞歸函數也是要支持的嘛)。

這部分,中立偏噴,偏噴是因為 Go 爸爸用了我的小名 internal。

OOP

我特別贊賞 Go 對于 OOP 泛濫成災的思考與探索,以及對于終結這陣 Java 帶來的不正之風的決心。怎么可能萬物都是 class 呢。但同時,Go 還是有點矯枉過正的,如果我需要利用傳統的 OOP 來搞事情,就非常麻煩,你甚至都無法寫出一個框架來。你只能寫庫讓別人用。雖然我也不喜歡框架,但有的時候是需要框架的。

defer 非常切中痛點,特別解決一堆錯誤 return 外加資源釋放的問題。相比之下C 里只能用 goto,C++ 本身不支持但可以玩出 LOKI_ON_BLOCK_EXIT 或者 BOOST_SCOPE_EXIT。defer 一舉解決問題。(要是能再增加命名 defer 以及撤銷 defer 的功能就更好了。沒錯,你也許看出來了,我覺得 LOKI_ON_BLOCK_EXIT 是最完美的方案。)

雖然 defer 很好,但不意味著析構就沒用武之地了。理想的情況是,析構、多態、defer 都要有……

這部分我的態度是中立。

錯誤處理

終于要點贊了。錯誤處理是在我看來 go 完勝的地方,恰到好處地處理問題,又防止濫用。也矯正 Java 帶來的歪風邪氣。

Java 的設計,讓人不得不用異常來處理業務。甚至 Java 自己還幫我們分好類了:一種是不是異常的異常,用來處理業務;另一種是真的異常。一些用慣 Java 的傻逼跑到 C++、PHP、Python 里亂拉屎,到處是 try catch。

Go 爸爸一聲令下,萬籟俱寂。

goroutine

最后不得不說說 gorouthine,畢竟是賣點嘛。我的態度中立偏贊。贊是因為這是一種太有創意的方案,居然想在在語言層面解決多線程、并發問題;不過我還是覺得這更多的是應用層面的問題,做到官方庫里會更好,而不是做成語法。

總結

剛開始用 Go 的時候,特別亮眼,簡直處處是亮點,然后越接觸越討厭,一點也不耐看……看得出來,設計者糅合了 C、python、Java 的一些特性,并融入了自己的獨特的理解。Go的設計者真的特別特立獨行且堅持己見,一些我喜歡的特性因為他們的堅持而存在下來,一些我討厭的特性也因為他們的堅(Gu)持(Zhi)而不能有所改觀。就這樣的 Go,想代替 C 作為系統語言,是沒戲的;想在網絡服務有一番作為,搶 Java 的份額,或許是有機會的,不過最多只能搶 Java 的,連 C# 的都搶不了,C++、PHP 更搶不了。

嗯,除了特定的不得不用的場合,反正我是不會特意用 Go 的。

2019,新年快樂!

posted on 2020-09-20 14:16 溪流 閱讀(4486) 評論(0)  編輯 收藏 引用 所屬分類: Golang
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久成年人视频| 久久漫画官网| 欧美三级电影大全| 亚洲欧美激情视频在线观看一区二区三区| 久久av免费一区| 亚洲欧美日本视频在线观看| 亚洲国产精品久久久久| 性欧美超级视频| 欧美性开放视频| 牛夜精品久久久久久久99黑人| 欧美在线一二三区| 原创国产精品91| 亚洲国产人成综合网站| 农村妇女精品| 午夜精品福利在线| 久久免费国产| 在线亚洲国产精品网站| 亚洲一区视频在线| 激情久久久久| 久久蜜桃av一区精品变态类天堂| 欧美粗暴jizz性欧美20| 欧美午夜激情小视频| 午夜亚洲性色视频| 久久免费高清视频| 亚洲永久网站| 老司机久久99久久精品播放免费| 99riav国产精品| 欧美一区国产一区| 一区二区久久久久| 久久精品在线播放| 亚洲影视在线| 久久尤物电影视频在线观看| 日韩一区二区福利| 久久福利一区| 亚洲免费在线看| 久久最新视频| 国产精品国产三级欧美二区| 欧美电影免费观看网站| 欧美日韩一区二区三区免费看| 亚洲永久精品大片| 91久久久在线| 国产精品自在在线| 亚洲免费播放| 亚洲卡通欧美制服中文| 久久国产加勒比精品无码| 亚洲视频1区| 久久综合一区| 久久综合激情| 国产毛片一区| 一区二区激情视频| 亚洲人成在线播放网站岛国| 久久精品欧美日韩| 久久国产精品色婷婷| 国产精品a久久久久久| 亚洲激情在线播放| 91久久久在线| 美女精品一区| 欧美成人一区二区| 亚洲激情社区| 欧美福利一区二区| 麻豆成人综合网| 亚洲精品欧洲精品| 久久综合九色综合久99| 久久久蜜桃精品| 国产精品入口| 亚洲综合视频1区| 午夜亚洲视频| 欧美日韩卡一卡二| 亚洲精品视频二区| 日韩视频一区二区三区在线播放| 欧美成人影音| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲精品社区| 亚洲一级在线| 国产精品久久久对白| 亚洲特色特黄| 欧美一区二区精美| 国产一区在线观看视频| 久久久久久久久久码影片| 亚洲网站在线播放| 欧美私人啪啪vps| 亚洲丝袜av一区| 久久精品国产成人| 黄色日韩在线| 欧美精品一区二区久久婷婷| 一本色道久久99精品综合| 性18欧美另类| 亚洲国产99精品国自产| 女人香蕉久久**毛片精品| 日韩亚洲一区在线播放| 欧美在线观看日本一区| 精品动漫3d一区二区三区| 麻豆精品91| 亚洲自拍三区| 韩国福利一区| 欧美日韩小视频| 欧美一级大片在线观看| 欧美激情一区二区三区成人| 亚洲视频在线一区| 国产一区二三区| 欧美精品一区二区三区高清aⅴ| 中文精品视频| 欧美肥婆bbw| 欧美精品七区| 欧美高清成人| 亚洲图片在线| 免费久久99精品国产| 一二三区精品| 黄色国产精品| 欧美日韩专区| 欧美成人一区二区三区片免费| 亚洲欧美日韩国产中文在线| 亚洲激情二区| 久久精品人人做人人爽| 亚洲一区二区不卡免费| 亚洲国产成人av| 国产午夜精品美女毛片视频| 欧美日韩亚洲不卡| 女人色偷偷aa久久天堂| 久久精品五月婷婷| 午夜精品成人在线视频| 日韩亚洲欧美综合| 91久久精品国产91性色| 久久亚洲影音av资源网| 欧美一区国产二区| 亚洲永久免费观看| 国产在线精品自拍| 激情视频一区二区| 日韩视频欧美视频| 亚洲国产高清在线| 免费视频亚洲| 久久综合中文字幕| 久久精品一区二区三区中文字幕| 亚洲一区二区三区免费观看| 日韩午夜在线视频| 亚洲精品乱码久久久久久日本蜜臀| 国内精品伊人久久久久av一坑| 国产精品视频午夜| 国产精品国产三级国产普通话99 | 国模一区二区三区| 国产午夜精品视频| 国产日韩精品综合网站| 国产欧美日韩亚洲一区二区三区| 欧美午夜片在线免费观看| 欧美色中文字幕| 欧美天天影院| 国产精品永久免费视频| 国产精品国色综合久久| 国产精品久久久久久久久久免费| 欧美视频中文字幕在线| 欧美视频免费在线观看| 国产精品国产三级国产普通话蜜臀| 欧美韩国一区| 日韩视频在线你懂得| 亚洲第一精品夜夜躁人人爽| 欧美午夜激情视频| 国产精品毛片| 国产欧美一区二区三区视频| 国内精品久久久久久 | 国产精品久久77777| 国产精品热久久久久夜色精品三区 | 欧美国产精品va在线观看| 亚洲成色www久久网站| 欧美成人午夜激情| 亚洲三级电影全部在线观看高清| 亚洲精品社区| 欧美一级片久久久久久久 | 99精品热视频只有精品10| 国产欧美高清| 欧美久久综合| 宅男噜噜噜66国产日韩在线观看| 国产亚洲欧美另类中文| 亚洲第一毛片| 在线一区观看| 久久久久久亚洲精品不卡4k岛国| 美国十次成人| 一区二区三区四区国产精品| 久久国产精品一区二区| 欧美精品色综合| 国产一区二区中文字幕免费看| 91久久在线观看| 销魂美女一区二区三区视频在线| 欧美xart系列在线观看| 99国产精品久久久久久久成人热| 欧美亚洲免费电影| 欧美日本一道本在线视频| 国产一区二区三区在线免费观看| 亚洲精品之草原avav久久| 性一交一乱一区二区洋洋av| 欧美va亚洲va香蕉在线| 午夜精品久久久久久久男人的天堂| 久久亚洲综合色一区二区三区| 国产精品久久久久久久久久久久久 | 最新日韩在线视频| 亚洲精品韩国| 久久一区二区三区四区五区| 欧美日韩大片一区二区三区| 狠狠综合久久| 欧美一区二区精品在线| 亚洲精品一级|