Go+: 編程語言跨界之旅
一則在程序員圈廣為人知的笑話:如何讓一群程序員在最短的時(shí)間爭(zhēng)吵起來?只要告訴他們,“PHP 是最好的語言。”
這只是編程語言的無數(shù)爭(zhēng)論的一個(gè)縮影,在最新的TIOBE 語言排行榜中,Python 首次超越C,成為最受歡迎的編程語言。在過去 20 年中,這份榜單記錄了無數(shù)編程語言的流行和趨勢(shì)。
人們難免會(huì)產(chǎn)生疑惑,我們是否真的需要那么多種編程語言,我們有沒有可能用同一種編程語言來解決大多數(shù)問題?
“Go+ 的目標(biāo),是跨界融合,”七牛云創(chuàng)始人,Go+ 語言的創(chuàng)造者許式偉接受記者采訪時(shí)表示,“我們的第一個(gè)目標(biāo)是工程和STEM 教育的一體化,下一個(gè)目標(biāo)是工程和數(shù)據(jù)科學(xué)的一體化。”這兩個(gè)一體化,就是被許式偉稱為“三位一體”的編程語言 Go+ 的設(shè)計(jì)目標(biāo)。
Go+ 語言是許式偉在一年前推出的,基于 Go 的一種靜態(tài)語言。近日,Go+ 推出了1.0版本,以工程、STEM 教育和數(shù)據(jù)科學(xué)為目標(biāo),正式成為生產(chǎn)級(jí)的編程語言。
編程語言的三個(gè)維度
在許式偉的眼中,一個(gè)編程語言的流行有三個(gè)維度,分別是語言的價(jià)值尺度,開源社區(qū)生態(tài)以及殺手級(jí)應(yīng)用。在 Go 語言還在“嬰兒期”時(shí),許式偉看出了其在這三個(gè)維度的優(yōu)勢(shì),便堅(jiān)定的認(rèn)為 Go 語言必定會(huì)流行。在多年推廣和使用 Go 之后,他對(duì)這三個(gè)維度的理解更加深刻。 Go+ ,就是其思考的結(jié)果。
首先是價(jià)值尺度,Go 語言核心的價(jià)值尺度就是語言的最小化特性,即“少就是指數(shù)級(jí)的多”。Go 語言的語言特性少,但是能用最精簡(jiǎn)的特性去完成功能。Go+ 在基于 Go 的基礎(chǔ)上,進(jìn)一步優(yōu)化。受益于精簡(jiǎn)的語法特性,Go+ 的入門門檻進(jìn)一步降低。同時(shí),語言本身要保持穩(wěn)定,C 語言出現(xiàn)了五六十年,但是今天看到的樣子還是和當(dāng)初一樣,這也是它可以長(zhǎng)時(shí)間排名第一的原因。Go+ 在其最新發(fā)布的1.0版本中,已經(jīng)將絕大部分語法和特性都已經(jīng)固定下來。還有性能,在不增加使用者的額外負(fù)擔(dān)的情況下,語言需要天然的具備性能優(yōu)勢(shì),而不用開發(fā)者做額外的優(yōu)化。
開源和生態(tài),是語言流行的第二維度。編程語言是非常底層且靠近內(nèi)核的東西。讓一個(gè)程序員切換語言,是一件非常困難的事情。需要一個(gè)非常有力的邏輯才可以做到。Go+ 選擇的邏輯是開放和兼容,繼承社區(qū)生態(tài)。在工程領(lǐng)域,Go+ 兼容 Go ,是 Go 的超集。這樣就將Go 開發(fā)的所有生態(tài)都繼承過來。而教育領(lǐng)域已經(jīng)有一個(gè)非常厲害的語言Scratch,Go+ 在引擎上完全兼容。而數(shù)據(jù)科學(xué)的生態(tài)中,Python 是目前絕對(duì)的王者。Go+ 也計(jì)劃可以直接導(dǎo)入Python包,到2023年實(shí)現(xiàn)對(duì)Python的兼容。
最后促進(jìn)一個(gè)語言流行的是殺手級(jí)的應(yīng)用,Go 的殺手級(jí)應(yīng)用是后端領(lǐng)域。目前幾乎所有云計(jì)算的基礎(chǔ)設(shè)施,都是 Go 寫的。而 Go+ 的殺手級(jí)應(yīng)用,根據(jù)許式偉的設(shè)計(jì),是從工程和STEM 教育一體化的融合開始,從工程師的培養(yǎng)體系構(gòu)建開始。
12歲的Go+ 貢獻(xiàn)者
“我們從工程師的培養(yǎng)體系開始,我希望通過這個(gè)變革讓中國(guó)的工程師遠(yuǎn)遠(yuǎn)超過其他國(guó)家。”許式偉的這個(gè)愿望,來源于 Go+ 低代碼化、去復(fù)雜性、低齡化的核心邏輯。
實(shí)際上,在 Go+的貢獻(xiàn)者中,年齡最小的只有12歲。有一半的游戲案例的代碼都是這位小朋友寫的的。這里面其實(shí)蘊(yùn)藏著一個(gè)問題,為什么Go+ 可以做到?
七牛云CEO 許式偉
學(xué)習(xí) Go+ 語言,并不需要特別多的前置條件,有一些英語能力,有一些基礎(chǔ)的邏輯能力。“二年級(jí)8歲,差不多就可以逐步開始了”,許式偉認(rèn)為,“當(dāng)然,如果認(rèn)為太激進(jìn),10歲開始也沒有問題”。Go+ 的門檻,實(shí)際上比 Python 還要低,因?yàn)镻ython語言本身還是有一些復(fù)雜性。Go+ 的目標(biāo),是在觸達(dá)初學(xué)者時(shí),進(jìn)一步降低入門的難度。許式偉認(rèn)為,語言設(shè)計(jì)好不好的標(biāo)準(zhǔn)之一就是中小學(xué)生學(xué)不學(xué)得會(huì)。
Go+ 隱蔽了工程上的復(fù)雜性,初學(xué)者不用去理解什么是函數(shù),什么是包等工程上的概念。這些概念對(duì)于小朋友太復(fù)雜。
在語法層面,Go+ 更加貼近自然語言的表達(dá),許式偉解釋:“我們一直試圖消除大家對(duì)編程的恐懼,編程和寫文章一樣。因?yàn)榫幊陶Z言的語法比自然語言少太多了。”
Go+ 在 STEM 教育領(lǐng)域?qū)?biāo) Scratch ,邁出的第一步是生態(tài)資源兼容。所有基于Scratch的教育資源都可以直接在 Go+ 的體系下使用。而 Go+的殺手锏,是產(chǎn)學(xué)研融合。Scratch 是做不到這一點(diǎn)的,因?yàn)闆]人會(huì)真正把用 Scratch 用在工程領(lǐng)域。Go+ 的優(yōu)勢(shì),是從入門到實(shí)際工程,用的都是同一種語言,直接把生產(chǎn)力工具推到教育場(chǎng)景下,學(xué)到的知識(shí)能夠直接去創(chuàng)造真實(shí)的工程。Go+ 以此嘗試解決編程教育反饋環(huán)太長(zhǎng)的問題。
Go+的工程開發(fā)能力是工程和教育一體化的基礎(chǔ),否則 Go+ 也會(huì)和Scratch一樣,成為一種玩具語言。Go+在工程師培養(yǎng)體系上的期望,不僅僅是 STEM,還包括職業(yè)教育,為很多公司去培養(yǎng)急需的編程人才,這也是工程師培養(yǎng)體系的一部分。
編程語言的融合之路
Go+ 從設(shè)計(jì)之初,便選擇了融合。最新的口號(hào)也體現(xiàn)了這一點(diǎn):“for engineering,STEM education,and data science”。許式偉介紹道:“語言的底層邏輯是一致的,大家需要的,其實(shí)是低代碼,低齡化的工程能力”。看起什么都想做的 Go+, 其實(shí)只想把這一件事做到最好。
未來十年,軟件自動(dòng)化還有會(huì)巨大的發(fā)展,還會(huì)有更多的行業(yè)被互聯(lián)網(wǎng)席卷。對(duì)工程師來說,Go+ 帶來的變革是提供了一個(gè)簡(jiǎn)潔的,連小朋友都能掌握的一種語言用于工作。對(duì)小朋友來說,從入門開始,學(xué)習(xí)的就是將來可以用來工作的語言。
未來五十年,軟件自動(dòng)化將從代碼驅(qū)動(dòng)轉(zhuǎn)向數(shù)據(jù)驅(qū)動(dòng),這代表著數(shù)據(jù)科學(xué)家人才需求的爆發(fā)性增長(zhǎng)。數(shù)據(jù)科學(xué)家的綜合能力要求非常高,包括工程能力,數(shù)學(xué)功底和商業(yè)嗅覺。而現(xiàn)在的數(shù)據(jù)科學(xué)家的培養(yǎng)體系還不成熟,好的培養(yǎng)途徑還是要從工程師里來。
Go+ 工程與數(shù)據(jù)科學(xué)的融合,為解決數(shù)據(jù)科學(xué)家的培養(yǎng)提供了一種可能。數(shù)據(jù)科學(xué)領(lǐng)域有自己的專屬語言,如 R語言、Julia。但使用最廣泛的語言還是 Python。這背后的道理很簡(jiǎn)單,Python工程師足夠多,而數(shù)據(jù)科學(xué)家太少。Python 的流行本身就代表了一個(gè)重大的趨勢(shì),即工程和數(shù)據(jù)科學(xué)家的一體化。Go+的低門檻,讓數(shù)據(jù)科學(xué)家也能很快上手,并可以和工程師用同一種語言進(jìn)行對(duì)話。
國(guó)產(chǎn)開源的商業(yè)化之路
隨著國(guó)內(nèi)互聯(lián)網(wǎng)行業(yè)發(fā)展,涌現(xiàn)了很多優(yōu)秀的應(yīng)用和框架。但在編程語言的層面上,一直都缺乏國(guó)人的身影,這也跟IT行業(yè)首先在國(guó)外興起有關(guān)。但許式偉認(rèn)為,“我們已經(jīng)想好了Go+的成長(zhǎng)路徑”。他對(duì)做好 Go+ 充滿信心。
作為一個(gè) PaaS 企業(yè),提供的核心產(chǎn)品便是生產(chǎn)力工具,而編程語言就是最基礎(chǔ)的生產(chǎn)工具。因此七牛云有動(dòng)力,去做一款編程語言并將其開源。Go+ 在七牛云的使命就是去觸達(dá)并占領(lǐng)開發(fā)者群體的入口。在七牛云的規(guī)劃中,未來其PaaS能力都會(huì)通過 Go+ 提供。
Go+ 要做的事情很專一,就是確保它生產(chǎn)級(jí)的水準(zhǔn)。語言是有虹吸效應(yīng)的,Go 之所以在國(guó)內(nèi)這么流行,一方面是做的確實(shí)非常好,另一個(gè)則是 Go 的應(yīng)用領(lǐng)域是后端開發(fā),在國(guó)內(nèi)也有著巨大的需求。實(shí)際上Go+ 憑借其低代碼,低齡化的特性,足以超越 Go 的局限,應(yīng)用會(huì)更加廣泛。許式偉表示:“在 Go+之前,所有的編程語言都認(rèn)為它是給工程師用的,而Go+是認(rèn)認(rèn)真真告訴大家,編程語言是所有人都要用的。”
面對(duì)所有人都可能面對(duì)的編程問題,蘋果也推出過一個(gè)基于 Swift 語言的“人人能學(xué)編程”的項(xiàng)目,但Swift本身門檻較高。目前除了傳統(tǒng)大型工程開發(fā)需要非常高門檻的能力之外,新增的很多代碼需求都是低代碼需求,且需求十分龐大。因此,低門檻的語言工具,實(shí)際上是整個(gè)社會(huì)的訴求。
對(duì)于 Go+開源和商業(yè)化,許式偉也有自己的理解,“開源是 PaaS最好的商業(yè)模式”,他解釋道,“基礎(chǔ)語言一定是開源的,因?yàn)榇蠖鄶?shù)人都需要的東西,大概率是免費(fèi)的”。開源的目的是為了吸引更多的使用群體,共建語言生態(tài)。而商業(yè)化的目標(biāo),則是通過龐大的語言使用者基數(shù),去轉(zhuǎn)化其中專業(yè)性的需求。
開源增加了巨頭們的“抄襲成本”。因此,選擇開源,實(shí)際上是構(gòu)建競(jìng)爭(zhēng)壁壘的最佳手段,也是對(duì)知識(shí)產(chǎn)權(quán)的最大保護(hù)。
未來世界,我們需要什么樣的編程語言
編程語言出現(xiàn)的時(shí)間比自然語言晚了很多,但它的出現(xiàn)改變了人類記錄工程技術(shù)的方式。隨著社會(huì)的發(fā)展,科技的進(jìn)步,編程會(huì)成為人類文明的基礎(chǔ)設(shè)施。人類工程技術(shù)的規(guī)則,行為和范式,都會(huì)被編程語言記錄下來。未來人類對(duì)代碼的依賴度會(huì)前所未有的高。如果沒有掌握編程能力,就無法理解工程技術(shù),獲取的知識(shí)可能不足所有知識(shí)的千分之一。
人類文明另一個(gè)重要部分:數(shù)學(xué),它的語言是統(tǒng)一的,但編程語言目前還沒有做到。而Go+的定位——工程開發(fā)的 Go、數(shù)據(jù)科學(xué)領(lǐng)域的 Python、編程教學(xué)領(lǐng)域的 Scratch,工程和 STEM 教育一體化,工程和數(shù)據(jù)科學(xué)一體化,恰恰正是充滿希望的一個(gè)全新嘗試。