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