最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Go 的核心競爭力究竟在哪里?

2023-08-11 15:04 作者:golang教程  | 我要投稿

一起來聊聊go的核心競爭力。

現(xiàn)在,越來越多的人了解 Go 語言,學(xué)習(xí) Go 語言,越來越多的公司開始嘗試采用 Go 語言。

比如字節(jié)也是一直在用 Go 作為服務(wù)端開發(fā)的主力語言,了解過 Java 和 Spring 那一整套服務(wù)端開發(fā)體系,時常在想,Java 的這一套體系,在長時間的迭代下,技術(shù)沉淀和業(yè)務(wù)覆蓋已經(jīng)非常完善,為什么 Go 還能脫穎而出?

一方面,大公司的帶頭使用帶來的引領(lǐng)作用,這為 Go 的聲名帶來了正向反饋,使 Go 越來越被人們所了解。

另一方面,Go 本身也是有一些獨(dú)門絕技,否則,它活不過開頭,也就沒有后續(xù)的正向反饋?zhàn)饔昧?。而找出這些獨(dú)門絕技絕不是無用的思維內(nèi)耗,它可以讓我們這些 Gopher 找到未來發(fā)展的方向,確定未來學(xué)習(xí)的思路。

當(dāng)我們比較 Java 和 Go,我們在比較什么?

2007 年 9 月,像往常一樣,一位程序員正靠在椅子上喝著咖啡,他在等著自己提交的代碼被編譯結(jié)束。這是一個巨大的工程,整個編譯過程大約要持續(xù) 45 分鐘,而他現(xiàn)在能做的也只有等待。這時,桌面上彈出的待辦事項引起了他的注意,這是一次即將開始的宣講會,幾位 C++ 的同事將宣講有關(guān)即將發(fā)布的 C++11 的新特性,他自然不能錯過,于是他離開工位,坐到了會議室。

講臺上,負(fù)責(zé)宣講的同事神采飛揚(yáng),滔滔不絕地介紹著整整 35 項新特性。據(jù)他們透露,這還只是其中一部分。他抿了一口咖啡,仔細(xì)地聽著,右值引用,這是什么鬼?可變參數(shù)模版,聽起來倒很 C++...... 突然他感覺有些厭煩,C++真的需要這么多新特性嗎?他想,有人說語言升級的更大成就不是添加了多少東西,而是減少了什么東西,盡管這話有些片面,但不失為有一定的道理。

他的思緒回到了幾個月前,那時候他在宣講一個由他創(chuàng)造的語言 Newsqueak,這個語言使用了 CSP 并發(fā)模型,這是一個很優(yōu)雅的模型,他想把它加入到 C++ 中,可總是沒辦法協(xié)調(diào)的很完美,問題出在哪?似乎 C++ 太過復(fù)雜了,他也不敢說自己完全理解了 C++。

講臺上的聲音突然停止了,這打斷了他的思緒。另一位同事上來介紹一個新特性:原子類型。這是語言層面支持的原子性,通過硬件來保證的原子性。聽到這里,他突然握緊了自己的咖啡杯,是的,問題出在這里,將這樣一組微觀定義的細(xì)節(jié)放入一個已經(jīng)不堪重負(fù)的類型系統(tǒng)中,是短視的。因為底層的硬件在未來十年可能會發(fā)生翻天覆地的變化,將語言與當(dāng)下的硬件緊密結(jié)合是不明智的。

他應(yīng)該設(shè)計一門新語言,一門面向未來的語言,它簡約、易懂、使用 CSP 模型。這個想法使他熱血澎湃,他想著會議一結(jié)束就去和坐在他旁邊的 Robert Griesemer 交流這個想法。當(dāng)主持人宣布會議結(jié)束時,他迫不及待的走回辦公桌,看到桌上自己的電腦已經(jīng)提示編譯完成,耗時 45 分鐘。

對了,他想,這個新語言還要有個功能,那就是編譯快。

這篇小短文不是我的杜撰,而是 Go 語言的作者之一 Rob Pike 的真實(shí)經(jīng)歷,盡管經(jīng)過了藝術(shù)加工,但我們也可以看到文中主角敏銳的判斷力。是的,十年過去了,軟件的運(yùn)行環(huán)境發(fā)生了翻天覆地的變化,原先你可以確切地說,我的程序運(yùn)行在什么架構(gòu) CPU、幾 G 內(nèi)存的機(jī)器上?,F(xiàn)在,容器和 Kubernetes 的變革已經(jīng)讓你回答不了這個問題。它可能這一秒運(yùn)行在這臺機(jī)器,下一秒被調(diào)度到其它機(jī)器;甚至機(jī)器本身,也可能是虛擬機(jī)、或者虛擬機(jī)虛擬出來的虛擬機(jī)。硬件已經(jīng)被抽象,變成了一個被稱作“云”的龐然大物。

讓我們從 Go 誕生的故事回到當(dāng)下,Java 語言依舊是服務(wù)端當(dāng)之無愧的王者,而 Go 語言會是那顆閃著銀白色寒芒的天狼星嗎?很多人在發(fā)問,也有很多人從語法、框架、面向?qū)ο蠛兔嫦蚪涌?.....層面去對比,去分析。

答案是,會,但有前提條件。

如果我們一直從語法、框架、面向?qū)ο蟮膶用嫒Ρ?,那么永遠(yuǎn)也不會有結(jié)果,“術(shù)”的層面總是各有優(yōu)劣的,我們要一起往更深一層次去分析。

于 Java 而言,核心是 Spring,以及那句名言:“一切皆對象”。很多 Java 程序員最愛干的,應(yīng)該就是“抽象”這個事兒,所以如何合理的設(shè)計和抽象,讓代碼可讀,成為了衡量 Java 程序員最重要的指標(biāo)之一。從公司的角度看,日積月累的抽象,也讓內(nèi)部的框架越來越復(fù)雜,功能越來越多,甚至最后,這個框架本身都可以拿去 2B 的市場去賣個好價錢??蚣?,也成為了Java最大的護(hù)城河,很多剛從 Java 轉(zhuǎn) Go 的程序員都會問一個可愛的問題:“Go 有類似于 Java 這種 Spring 的框架嗎?”

請大家等等,請大家停下來想想,如果 Go 有這種框架,那么轉(zhuǎn) Go 的意義是什么呢?Go 的 CSP 模型這么吸引人,Java 難道就沒有嗎? Java 以前不夠快,現(xiàn)在還不夠快嗎?容器鏡像大?能大多少,這點(diǎn)差距對你的業(yè)務(wù)真的很重要嗎?

如果這些問題無法回答,那么轉(zhuǎn) Go 只不過是一次內(nèi)耗,或者是某人的一次 KPI 行動。

事實(shí)上,如果不是一樣?xùn)|西的橫空出世,Go 是不可能取代 Java 的,你不可能在競爭對手的優(yōu)勢領(lǐng)域打敗它。

這樣?xùn)|西叫微服務(wù)(Microservices),談到它,大家應(yīng)該很不陌生。微服務(wù)嘛,那就得拆,把服務(wù)拆散,怎么拆呢?網(wǎng)上搜,有人說:“這么辦,單體服務(wù),我們豎著給它一刀,把它按業(yè)務(wù)拆分,這叫 SOA 架構(gòu);再橫著給它一刀,把它按代碼層次拆分,這叫水平分層架構(gòu)。好了!這就是微服務(wù)了?!碑?dāng)年我看到這句話,豁然開朗,原來,SOA+水平分層就是微服務(wù),簡單,這就把單體服務(wù)按在手術(shù)臺上大卸八塊。

等等,各位,我們還是要停下來想想,就這么一個服務(wù)拆分方案,有必要搞得這么火嗎?

有人又說,那是因為你切的不對,你得按照 DDD(領(lǐng)域驅(qū)動設(shè)計) 的法則來切。

讓我們先放下手中的手術(shù)刀,回顧一下微服務(wù)的定義:“微服務(wù)是一種通過多個小型服務(wù)組合來構(gòu)建單個應(yīng)用的架構(gòu)風(fēng)格,這些服務(wù)圍繞業(yè)務(wù)能力而非特定的技術(shù)標(biāo)準(zhǔn)來構(gòu)建。各個服務(wù)可以采用不同的編程語言,不同的數(shù)據(jù)存儲技術(shù),運(yùn)行在不同的進(jìn)程之中。服務(wù)采取輕量級的通信機(jī)制和自動化的部署機(jī)制實(shí)現(xiàn)通信與運(yùn)維。”這個定義到底在說什么?

不同語言?不同進(jìn)程?輕量通信?那我 Java 的 Spring 怎么辦,別的語言不一定有。我框架封裝的通信不可能輕量啊,要實(shí)現(xiàn)那么多功能:負(fù)載均衡、限流、健康檢查、監(jiān)控等等等等,難道每個語言都實(shí)現(xiàn)一遍嗎?

我們的比較,本質(zhì)并不是 Java 和 Go 之爭,而是以 SDK、Libary為代表的框架思想,和微服務(wù)代表的服務(wù)思想之爭。這是一場思想上的革命,在微服務(wù)看來,整個系統(tǒng)是由一個一個的服務(wù)組成的,服務(wù)和服務(wù)之間相互解耦,各自完成自己的職責(zé),共同對外提供服務(wù)。在這個世界里,不存在一種上帝般的框架,所有服務(wù)都要接入,都要信仰。

失去了框架的束縛,各服務(wù)可以自由迭代,自由選擇語言,自由替換,自由伸縮。容器和 Kubernetes 會保證這些服務(wù)的有序調(diào)度,ServicesMesh 會保證負(fù)載均衡、限流、健康檢查、監(jiān)控等一系列事項的正確運(yùn)行。

因此,正是因為現(xiàn)在流行的這些技術(shù),催生了微服務(wù)的土壤。這是一種思想觀念的轉(zhuǎn)變,從重框架,重設(shè)計的思想,轉(zhuǎn)變?yōu)橹胤?wù),重Sidecar的思想,而我們正處在這一時代的變革之中,Java社區(qū)、Java的維護(hù)者,這些世界頂級的聰明人,他們何嘗不知道,Java也在改變,也想順應(yīng)這個時代的變化,變得輕量、快速。但有個人告訴過我們,看待事物要辯證的看待,當(dāng)年Java搭建的護(hù)城河,那些讓它登頂?shù)募夹g(shù),同樣也是它現(xiàn)在要改變所碰到的最大壁壘。

在這個時代的轉(zhuǎn)變中,Go語言成為了其中的基石,不是因為它設(shè)計的多么精妙(事實(shí)上,比它設(shè)計的精妙的語言多的是),而是因為它是其中一些技術(shù)的關(guān)鍵語言。

Gopher 的真正核心競爭力

到了這兒,各位Gopher是不是有點(diǎn)激動,計算機(jī)和編程已經(jīng)深入了各行各業(yè),程序員再也不是原來那個神秘、高收入、令人尊敬的工程師,也只不過是一個普通的技術(shù)人員。下一步,時代的車輪滾滾轉(zhuǎn)動,市場選擇微服務(wù),選擇一種更進(jìn)退自如、能夠自愈的架構(gòu)方式,代替原來萬能框架,又會帶來一次新的變革。

在這場變革中,Gopher如果不能轉(zhuǎn)變觀念,還是以學(xué)習(xí)java那一套來學(xué)習(xí)go世界,應(yīng)該很快會碰到一個問題,那就是go本身也沒什么好學(xué)的。

go面試就沒有Java面試那么豐富的知識點(diǎn),沒有23種設(shè)計模式,沒有JVM,語法層面也沒有什么特別多的問題,更沒有統(tǒng)一的框架可以問。也只能問問Channel、GC 這塊。

所以既要學(xué)好 Go 本身,更要學(xué)好微服務(wù),學(xué)好實(shí)現(xiàn)微服務(wù)要用到的各種工具:容器、Kubernetes、ServicesMesh。由于這些工具很多都是用 Go 編寫,這就為我們的閱讀、學(xué)習(xí)、改造提供了便利。近水樓臺先得月,這就是Gopher的核心競爭力。

最后也為對Go語言感興趣的朋友整理了一些go語言資源,希望可以幫到大家。


Go 的核心競爭力究竟在哪里?的評論 (共 條)

分享到微博請遵守國家法律
高邑县| 宁国市| 茌平县| 侯马市| 凤山市| 平凉市| 黄冈市| 五家渠市| 罗山县| 辰溪县| 林州市| 饶阳县| 丹江口市| 台安县| 鹤峰县| 玉环县| 东至县| 恩施市| 新泰市| 福鼎市| 武清区| 车致| 旬邑县| 睢宁县| 潮安县| 百色市| 黄骅市| 翁牛特旗| 民丰县| 碌曲县| 乌恰县| 兴海县| 蒲城县| 昔阳县| 新昌县| 原平市| 房山区| 镇安县| 绵竹市| 晴隆县| 乌兰浩特市|