大家好,我是張巧龍,今天和大家聊聊一門新興國(guó)產(chǎn)編程語(yǔ)言—Go ,
/*聲明*/
每個(gè)編程語(yǔ)言都有其優(yōu)缺點(diǎn),本文并未通過(guò)貶低其他編程語(yǔ)言來(lái)凸顯Go 的優(yōu)勢(shì),相反,Go 也有其缺點(diǎn)。
01
什么是Go?
Go(又稱Golang)是Google開發(fā)的一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語(yǔ)言。
2007年開始設(shè)計(jì)Go,2009年推出,成為開放源代碼項(xiàng)目,在Linux、Mac OS X、Windows系統(tǒng)均可實(shí)現(xiàn)。
Go語(yǔ)言是一個(gè)跟C、C 、Python、Java類似的計(jì)算機(jī)編程語(yǔ)言。規(guī)則簡(jiǎn)單,統(tǒng)一,優(yōu)雅,吸收了若干編程語(yǔ)言的優(yōu)點(diǎn),解決了C,C , Python等語(yǔ)言一些固有的難點(diǎn)問題。
Go的語(yǔ)法接近C語(yǔ)言,但對(duì)于變量的聲明有所不同。Go支持垃圾回收功能。
與C 相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能,但增加了切片(Slice) 型、并發(fā)、管道、垃圾回收、接口(Interface)等特性的語(yǔ)言級(jí)支持。
02
什么是Go ?
2020年,在Go語(yǔ)言的基礎(chǔ)上,Go 誕生了,創(chuàng)始人叫許式偉,聽這名字就知道是中國(guó)人,所以說(shuō)Go 是一門國(guó)產(chǎn)語(yǔ)言也不為過(guò)。雖然衍生于開源的Go基礎(chǔ)上。
2020年,Go 的定位是數(shù)據(jù)科學(xué)領(lǐng)域,由于兼容 Go,繼承了Go的開發(fā)理念,同樣適用于大型軟件工程的開發(fā)。
Go 的出現(xiàn)并非想要完全代替Go,而是在Go基礎(chǔ)上添加新元素,打造出一門更加強(qiáng)大的編程語(yǔ)言。
2021年, Go 的最新slogan 「for engineering, STEM education, and data science」,它是三位一體的。
Go :融合工程開發(fā)的Go、數(shù)據(jù)科學(xué)領(lǐng)域的Python、編程教學(xué)領(lǐng)域的Scratch,以Python之形結(jié)合Go之心,讓工程師處理數(shù)據(jù)不需要學(xué)習(xí)新的語(yǔ)言。讓初學(xué)者學(xué)習(xí)編程、完成開發(fā)的門檻更低。
Go 非常有成為未來(lái)流行語(yǔ)言的潛質(zhì),在STEM教育領(lǐng)域中并沒有很強(qiáng)大的對(duì)手。按照目前的編程人才培養(yǎng)方式,需要多門語(yǔ)言,第一門往往是Scratch,但Scratch是單純面向編程教學(xué)的,不足以培養(yǎng)工程人才。
03
Go 的優(yōu)點(diǎn)?
Go 有著C、C 、Java、Python等的優(yōu)點(diǎn)。
(1) 簡(jiǎn)單化,低代碼化,去復(fù)雜性,低齡化
語(yǔ)法簡(jiǎn)單,容易上手
去工程化(不需要定義),拋出掉復(fù)雜的定義,直接使用
強(qiáng)化每行代碼的能力,不同的編程語(yǔ)言完成同樣的功能,Go 所需的代碼量更少。
(2) 與Go相比。
前文有提到Go的優(yōu)點(diǎn),但Go 與Go仍有很大的不同。
Go 首先是一個(gè)靜態(tài)語(yǔ)言,且語(yǔ)法完全兼容Go,但在形式上,Go 可能更像腳本語(yǔ)言,跟Python一樣有同樣低的學(xué)習(xí)門檻。
用最簡(jiǎn)練的表述來(lái)說(shuō):它有Go之心Python之形,能夠做到低代碼、低上手門檻,使得Go 使用門檻是低的,但又具備靜態(tài)語(yǔ)言的高運(yùn)行效率。
最終希望面向編程教育、工程開發(fā)與數(shù)據(jù)科學(xué),形成數(shù)據(jù)科學(xué)家與工程師互通的培養(yǎng)體系生態(tài)。
(3) 兼容Python。
前文我們提到過(guò)Go 其中的一個(gè)定位是
data science,我們都知道,在做數(shù)據(jù)這塊,Python是使用最多的。
Go 2.0 將會(huì)盡可能引入兼容Python,完整的引入Python生態(tài)。
與 Python相比,Go 在語(yǔ)法表達(dá)方式更接近于自然語(yǔ)言,有理數(shù)表達(dá)更貼近數(shù)學(xué)的表達(dá)方式;
Python是數(shù)據(jù)科學(xué),但Go 不止于數(shù)據(jù)科學(xué),也可應(yīng)用于大型軟件工程開發(fā),工程能力更強(qiáng)。
在人人都學(xué)Python的時(shí)代,順帶手學(xué)學(xué)Go ,我覺得可以
......
相關(guān)優(yōu)點(diǎn)還有很多,比如Go支持并發(fā),C 需要支持第三方框架才能實(shí)現(xiàn)并發(fā)功能。
還有一個(gè),必不能忽視。
對(duì)初學(xué)者足夠友好,為什么這么說(shuō)?
據(jù)媒體報(bào)道,Go 創(chuàng)始人許式偉每天都在家教自己孩子學(xué)Go ,已經(jīng)開始卷起來(lái)了
連8-10歲的小孩子都可以上手,難道還不友好嗎?
04
說(shuō)在最后
本文僅在討論Go 這門國(guó)產(chǎn)語(yǔ)言的優(yōu)點(diǎn),雖然Go 是在開源的GO語(yǔ)言基礎(chǔ)上衍生的,但國(guó)產(chǎn)語(yǔ)言還是需要支持的。
每個(gè)編程語(yǔ)言都有其優(yōu)缺點(diǎn),本文并未通過(guò)貶低其他編程語(yǔ)言來(lái)凸顯Go 的優(yōu)勢(shì),相反,Go 也有缺點(diǎn)。
比如,在特定的高質(zhì)量的C 程序運(yùn)行效率肯定高于Go 。
蘿卜青菜,各有所愛,Go ,我覺得可以嘗嘗,萬(wàn)一對(duì)你的口味呢?