Golang 設(shè)計(jì)哲學(xué)

原文:http://blog.csdn.net/hittata/article/details/43668569

這是一篇轉(zhuǎn)載闻葵,沒有通知原作者就轉(zhuǎn)載了赠摇。如果有需要掷倔,可與我聯(lián)系戴而,刪除這篇轉(zhuǎn)載苹熏。轉(zhuǎn)載時修改了一下格式和一些明顯的筆誤呻畸。


世界是并行的——先不說宇宙移盆,就整個地球來說,世界萬物都是并行發(fā)生的伤为;天生對并發(fā)支持良好的 go 語言更容易描述并行的世界咒循;

世界是由物質(zhì)組合構(gòu)成的——微觀世界:由小的粒子組合成大的粒子据途;宏觀世界:由小的物體組合成大的物體;繼承只能描述現(xiàn)實(shí)世界的一小部分叙甸,使用繼承是不全面的颖医;go 的設(shè)計(jì)選擇的是組合,這個和現(xiàn)實(shí)世界比較吻合的設(shè)計(jì)裆蒸,表現(xiàn)力更強(qiáng)熔萧;

世界是標(biāo)準(zhǔn)化的——隨著生產(chǎn)力的發(fā)展,社會分工越來與詳細(xì)僚祷,越來越多行業(yè)有了國際標(biāo)準(zhǔn)佛致,任何一個國家的、任何一個公司只要按照這個標(biāo)準(zhǔn)生產(chǎn)器件辙谜,就能裝配到一臺機(jī)器上俺榆;IBM/PC 就是硬件模塊化和接口化一個最成功的例證;軟件也可如此筷弦,go 的接口是 duck 模型肋演,面向接口編程,而不需要顯示的聲明烂琴,將語言能做的事情交給語言做爹殊;

正交性——幾何上的正交指的是兩個向量垂直關(guān)系,一個向量在另一個向量方向的投影是一個點(diǎn)奸绷;現(xiàn)實(shí)中的正交是指多個因素梗夸,一個發(fā)生變化,不會影響其他的因素号醉;在不減少表現(xiàn)力的情況下反症,正交是保持事物穩(wěn)定性和簡單性的最好設(shè)計(jì);go 很好的遵循了這個規(guī)律畔派,go的多個特性之間都是正交的:goroutine铅碍、接口、組合线椰、類型系統(tǒng)等胞谈;舉一個典型的正交設(shè)計(jì)例子:比如客戶嫌雨傘太小,單純的加長傘桿是不行的憨愉,這會增加雨傘的長度烦绳;最后計(jì)出折疊式的雨傘;這種設(shè)計(jì)能保證雨傘大小和雨傘長度滿足正交關(guān)系配紫,當(dāng)然這會增加雨傘生產(chǎn)的復(fù)雜性)把復(fù)雜性留給廠家径密,把便利性留給客戶;對于編程語言:盡量把復(fù)雜性留給語言實(shí)現(xiàn)者和編譯器躺孝,把簡單性留給語言使用者享扔,這才是一種好的語言底桂;

少即是多——沒有萬能的語言,換句話說一門語言不可能包含所有的特性惧眠;想囊括所有特性的語言一定是非常的復(fù)雜(C++);保持簡單性的方法就是:每種特性僅提供一種方法戚啥,減少重復(fù)、冗余锉试,試想一下,如果汽車有多個剎車板览濒,你會感覺更安全呆盖,更便利嗎?只提供一種方法做事情贷笛,把事情做到極致应又,這就是 go 的原則,解放程序員乏苦,不要給他提供很多雷同的功能和語句株扛,這不會使問題簡單,只會加重程序員的心智負(fù)擔(dān)汇荐。

二八定律——在編程語言中描述就:百分之八十的代碼僅僅使用到百分之二十的語言特性洞就,增加語言特性,并不能保證開發(fā)效率的提升掀淘,原因是它會增加復(fù)雜性旬蟋,導(dǎo)致更容易犯錯;有些復(fù)雜的編程問題其實(shí)可以通過庫的形式來輔助支持革娄;大部分異常與錯誤——所謂異常就是沒有預(yù)料到的非期望的事情發(fā)生了倾贰,所謂錯誤就是預(yù)料到的非期望的事情發(fā)生了;go 語言把兩種情況終于給分清楚了拦惋;什么是防御性編程匆浙,怎么保持程序的健壯性;每次調(diào)用都檢查 error 確實(shí)讓代碼挺不美觀的厕妖,個人認(rèn)為為了健壯性首尼,進(jìn)行防御性的編程也是可以接受的;通過一定的技巧是可以避免錯誤代碼冗余性叹放;

論述完普世定律后饰恕,我來總結(jié)一下GO語言的哲學(xué):

  1. 面向接口編程
  2. 使用組合的編程
  3. 正交性:語言設(shè)計(jì)的正交性,保證語言的穩(wěn)定性和簡單性
  4. 少即是多:有且僅有一種方法把事情做好做對
  5. 并發(fā)語言層面支持:并發(fā)更好利用多核井仰,有更強(qiáng)的表現(xiàn)力來模擬真實(shí)世界
  6. 開放性:開源埋嵌,語言的實(shí)現(xiàn)對程序員不是個黑盒子,任何想了解語言實(shí)現(xiàn)的人都可以參與進(jìn)來

go 沒有像 JAVA 一樣俱恶,宗教式的完全面向?qū)ο笤O(shè)計(jì)雹嗦;完全面向?qū)ο笤O(shè)計(jì)就是一刀切的宗教式的設(shè)計(jì)范舀,但其并不能很好的表述這個世界,這就導(dǎo)致其表現(xiàn)力不足了罪,最后通過設(shè)計(jì)模式和面向切面等設(shè)計(jì)技巧來彌補(bǔ)語言方面的缺陷锭环;go是面向工程的實(shí)用主義者,其糅合了面向?qū)ο蟮脑O(shè)計(jì)泊藕,函數(shù)式設(shè)計(jì)和過程式設(shè)計(jì)的優(yōu)點(diǎn)辅辩;原來通過各種設(shè)計(jì)模式的設(shè)計(jì)通過函數(shù)、接口娃圆、組合等簡單方式就搞定了玫锋;go 有更多膠水的東西比如:全局變量、常量讼呢,函數(shù)撩鹿,閉包等等,可以輕松的的把模塊銜接和驅(qū)動起來悦屏; JAVA 就好比:手里握著是錘子节沦,看什么都是釘子,什么都是類的對象础爬,這個和現(xiàn)實(shí)世界不符甫贯,類表示單個事物還可以,一旦表示多個事物及其交互看蚜,其表現(xiàn)力也就會遇到各種挑戰(zhàn)获搏。

是時候該轉(zhuǎn)變觀念了,不要動不動就提面向?qū)ο笤O(shè)計(jì)失乾,動不動就提設(shè)計(jì)模式(特指某些招聘偽專家)常熙;編程的世界是多樣的,編程思想和范式是豐富多彩的碱茁,不要再沿著錯誤的路線繼續(xù)前進(jìn)了裸卫,擁抱 go 吧。


原文發(fā)表于 2015 年 2 月纽竣,作者 @liwenta墓贿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蜓氨,隨后出現(xiàn)的幾起案子聋袋,更是在濱河造成了極大的恐慌,老刑警劉巖穴吹,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幽勒,死亡現(xiàn)場離奇詭異,居然都是意外死亡港令,警方通過查閱死者的電腦和手機(jī)啥容,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門锈颗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咪惠,你說我怎么就攤上這事击吱。” “怎么了遥昧?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵覆醇,是天一觀的道長。 經(jīng)常有香客問我炭臭,道長叫乌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任徽缚,我火速辦了婚禮,結(jié)果婚禮上革屠,老公的妹妹穿的比我還像新娘凿试。我一直安慰自己,他們只是感情好似芝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布那婉。 她就那樣靜靜地躺著,像睡著了一般党瓮。 火紅的嫁衣襯著肌膚如雪详炬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天寞奸,我揣著相機(jī)與錄音呛谜,去河邊找鬼。 笑死枪萄,一個胖子當(dāng)著我的面吹牛隐岛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓷翻,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼聚凹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了齐帚?” 一聲冷哼從身側(cè)響起妒牙,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎对妄,沒想到半個月后湘今,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剪菱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年象浑,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔫饰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡愉豺,死狀恐怖篓吁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚪拦,我是刑警寧澤杖剪,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站驰贷,受9級特大地震影響盛嘿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜括袒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一次兆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锹锰,春花似錦芥炭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至痢士,卻和暖如春彪薛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怠蹂。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工善延, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人城侧。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓挚冤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赞庶。 傳聞我的和親對象是個殘疾皇子训挡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容