首頁 > 科技

許式偉:Go+ 門檻比 Go 低,小孩 6 年級開始學 Go+

2021-06-04 10:43:03

2009 年,面對 C++ 在 Google 分散式編譯平臺上的編譯過程太過漫長的問題,貝爾實驗室的 Unix 團隊成員 Rob Pike 聯合 Ken Thompson 和 Robert Griesemer 著手發起了一個叫 Golang 的項目,Go 語言誕生。

作為一個為了取代 C/C++ 而生的語言,Go 語言的發展迅速,非常適合構建命令列實用程式和網路服務,尤其是雲端計算場景下高併發應用。如今流行的容器引擎 Docker、容器編排系統 Kubernetes 都是用 Go 編寫的,Go 也因此被一些人稱為「雲端計算語言」。

新的程式語言的出現往往都是為了解決新出現的需求場景。2020 年 7 月 5 日,為資料而生的開發語言 Go+ 正式釋出,在相容 Go 的基礎上,兼顧了資料科學家的喜好,如簡化數學公式的表達。不過,Go+ 的出現並不是奔著取代 Go 而去的,其創始人許式偉大學時曾被稱為 C 語言狂人,工作後又被稱為 Go 語言狂人。即便是現在,許式偉也非常喜歡討論 Go,在他看來,Go+ 勢必可以吞掉 Go 的一些市場,但依舊會有很多人仍喜歡 Go。

7 月 9 日至 10 日,許式偉將出席由開源中國社群聯合 Linux 基金會發起的GOTC 全球開源技術峰會 ,並作為「程式語言藝術」分論壇講師,為我們帶來有關 Go 與 Go+ 的主題演講,敬請期待!在演講正式開始前,我們也採訪了許式偉老師,請他初步談談 Go + 的哲學。

Q:您很喜歡討論程式語言的哲學,為什麼?

許式偉:

我為什麼只講 Go 的哲學,主要是我對自己演講做的定位。演講其實有兩種可能性,一種是傳道,一種是教人學會某種技能。我更喜歡傳道而不是培訓的概念。也就是說,花一小時做演講並不是想教會別人什麼,而是儘可能去讓人知道,或者是開啟一扇門。這也是為什麼我只講 Go 的哲學,不去教別人怎麼用 Go,這是不同的概念。

Q:Go+ 哲學中最終要的是什麼?和 Go 的哲學有什麼不同?

許式偉:

我還是非常喜歡 Go 的「少就是指數級的多」,這是它一個非常內在的哲學——語言的語法是最少的,或者說力求最少,這實際上也是 Go+ 希望的。

我們希望它是力求最小語法的一個語言,但是兩個會有些不同、Go 更多還是關注高併發,最好的工程效率等等;更多地站在程式設計師如何寫大型項目,尤其是網路、雲的大型項目;目前以後端為主,前端是一些經驗性的探索,涉足其實不多。

Go+ 不太一樣,它面向的人群實際上有兩類,除了程式設計師之外,還要兼顧分析師,或者說是資料科學家,所以它的目標比 Go 複雜一些,既希望軟體工程師喜歡,也希望資料科學家喜歡,要同時兼顧兩個群體的喜好。所以 Go+ 會在 Go 支援上增加很多資料科學家喜歡的東西,或者對他們來說更自然的一些表達方式,我都希望在 Go+ 上能有所體現。這實際上就是 Go+ 對內的一些出發點。

Go+ 和 Go 的區別,最簡單的例子,就是數學公式,在 Go 裡面表達一個數學公式肯定比較複雜,沒有操作符過載。我們認為 Go+ 數學公式的表達更優雅,因為資料科學家成天在處理資料,如果數學公式表達起來都很累,看起來很繁瑣,肯定影響工作效率。我們會在 Go+ 引入很多數學相關的能力,使得它能夠更方便去表達一些資料科學需要用到的能力。

Q:Go 和 Go+ 接下來會是什麼關係,Go+ 會吞掉 Go 的市場嗎?

許式偉:

Go+ 應該會堅持完全相容 Go 的方式,Go 有新的語法特性,Go+ 也會吸收過來,儘可能保持完全相容。所以 Go+ 會包含 Go,為什麼是 Go+ 不是 Go++ 呢?因為希望少加一點,而不是加太多,這也是名字的含義。

吞掉一些市場是必然的。因為 Go+ 追尋的目標使它複雜一些,肯定要比 Go 略微複雜,所有有些程式設計師可能就喜歡做 Go,不喜歡和資料科學相關的東西。所以我覺得肯定有人從 Go 遷移到 Go+,但還是會有人繼續喜歡 Go 的。

Q:據瞭解,您平常在家會教孩子程式設計,現在還在教嗎?有沒有把 Go 或者 Go+ 教給他?

許式偉:

一直在教,孩子今年初一 ,教 Go+ 已經快一年了,從六年級開始學,沒有教 Go。

我認為 Go+ 的入門門檻必須比 Go 低,雖然 Go+ 完全相容 Go,但是它的門檻比 Go 要低。有的人可能聽起來覺得奇怪,明明比 Go 的語法要多,為什麼入門門檻低呢?

因為 Go 有一些工程性的語法特徵,初學者是不容易掌握的。Go+ 會把一些複雜性的東西在入門的時候隱藏起來,避免接觸到工程相關的特別複雜的東西。像我現在教小孩子程式設計也不會太過涉及到如何編寫大型程式相關的東西,基本上以基礎語法、程式思維的鍛鍊這些東西為主,不會涉及到太多工程的東西。但 Go 基本上是強加了工程相關的東西給初學者,這對它來說蠻正常的,因為它本身就是面向工程化的語言。

我認為 Go+ 是不一樣,比如資料科學家可能寫個 SQL 語句就處理了一段資料,在表達的簡潔性上是更需要的,這會導致我們需要讓 Go+ 對初學者來說門檻更低一些。

Q:教小朋友程式設計的順序經驗可以分享下嗎?

許式偉:

在 Go+之前,他們學習經歷主要是 scratch 程式設計然後他們另外學了 CoffeeScript,一個類 JavaScript 的語言,但是 CoffeeScript 相較簡潔第三個語言就是 Go+ 了。所以整個經歷就是程式設計,然後指令碼程式設計,指令碼程式設計選了一個我認為語法相對簡單的CoffeeScript 我認為它的語法比 Python 可能還要簡單一些,所以就學了。學 Go+ 是因為我認為要開始學習靜態語言了,靜態語言又不希望太過複雜,所以選了入門門檻低的。大概就是這樣一個過程。

GOTC,the Global Opensource Technology Conference,全球開源技術峰會。該會議由開源中國社群聯合 Linux 基金會發起,邀請 10+ 重量級開源基金會與開源社群深度參與,覆蓋 100+ 公司的相關開源經驗,涉及優秀開源項目 300+。

組成這場開源盛會的專家主要是開源領域內的知名人物,相關的分享議題也聚焦開源,包括開源的技術、開源的運營與治理、開源的發展趨勢、開源技術的實踐、開源的商業化等。

此次會議還史無前例地邀請了當今世界幾大頂級開源基金會負責人同時參與圓桌,共同討論開源新生態。

更有 Linux 創始人 Linus Trovalds 將分享 Linux 誕生 30 年以來他的心路歷程與開源洞見。


IT145.com E-mail:sddin#qq.com